diff --git a/add-sw64-support-20.18.2.patch b/add-sw64-support-20.18.2.patch new file mode 100644 index 0000000000000000000000000000000000000000..3b49cf3e4b74da4853f7bc4999a0a1214b93092c --- /dev/null +++ b/add-sw64-support-20.18.2.patch @@ -0,0 +1,179177 @@ +diff --git a/common.gypi b/common.gypi +index 1ece4f5e..febdaeb9 100644 +--- a/common.gypi ++++ b/common.gypi +@@ -223,7 +223,7 @@ + # -fno-omit-frame-pointer is necessary for the --perf_basic_prof + # flag to work correctly. perf(1) gets confused about JS stack + # frames otherwise, even with --call-graph dwarf. +- 'cflags': [ '-fno-omit-frame-pointer' ], ++# 'cflags': [ '-fno-omit-frame-pointer' ], + }], + ['OS=="linux"', { + 'conditions': [ +diff --git a/configure.py b/configure.py +index 0d089c35..4d0a1dea 100755 +--- a/configure.py ++++ b/configure.py +@@ -47,10 +47,11 @@ parser = argparse.ArgumentParser() + + valid_os = ('win', 'mac', 'solaris', 'freebsd', 'openbsd', 'linux', + 'android', 'aix', 'cloudabi', 'os400', 'ios') +-valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'ppc', ++valid_arch = ('arm', 'arm64', 'ia32', 'mips', 'mipsel', 'mips64el', 'sw_64', 'ppc', + 'ppc64', 'x64', 'x86', 'x86_64', 's390x', 'riscv64', 'loong64') + valid_arm_float_abi = ('soft', 'softfp', 'hard') + valid_arm_fpu = ('vfp', 'vfpv3', 'vfpv3-d16', 'neon') ++valid_sw64_arch = ('r2', 'r3') + valid_mips_arch = ('loongson', 'r1', 'r2', 'r6', 'rx') + valid_mips_fpu = ('fp32', 'fp64', 'fpxx') + valid_mips_float_abi = ('soft', 'hard') +@@ -555,6 +556,11 @@ parser.add_argument('--tag', + dest='tag', + help='custom build tag') + ++parser.add_argument('--sw-tag', ++ action='store', ++ dest='sw_tag', ++ help='sw64 build tag') ++ + parser.add_argument('--release-urlbase', + action='store', + dest='release_urlbase', +@@ -616,6 +622,13 @@ parser.add_argument('--with-mips-arch-variant', + choices=valid_mips_arch, + help=f"MIPS arch variant ({', '.join(valid_mips_arch)}) [default: %(default)s]") + ++parser.add_argument('--with-sw64-arch-variant', ++ action='store', ++ dest='sw64_arch_variant', ++ default='r2', ++ choices=valid_sw64_arch, ++ help=f"SW64 arch variant ({', '.join(valid_sw64_arch)}) [default: %(default)s]") ++ + parser.add_argument('--with-mips-fpu-mode', + action='store', + dest='mips_fpu_mode', +@@ -1231,6 +1244,7 @@ def host_arch_cc(): + '__s390x__' : 's390x', + '__riscv' : 'riscv', + '__loongarch64': 'loong64', ++ '__sw_64__' : 'sw_64', + } + + rtn = 'ia32' # default +@@ -1294,7 +1308,8 @@ def configure_arm(o): + + o['variables']['arm_fpu'] = options.arm_fpu or arm_fpu + +- ++def configure_sw64(o): ++ o['variables']['sw64_arch_variant'] = options.sw64_arch_variant + def configure_mips(o, target_arch): + can_use_fpu_instructions = options.mips_float_abi != 'soft' + o['variables']['v8_can_use_fpu_instructions'] = b(can_use_fpu_instructions) +@@ -1405,6 +1420,8 @@ def configure_node(o): + + if target_arch == 'arm': + configure_arm(o) ++ elif target_arch == 'sw_64': ++ configure_sw64(o) + elif target_arch in ('mips', 'mipsel', 'mips64el'): + configure_mips(o, target_arch) + elif sys.platform == 'zos': +@@ -1480,10 +1497,18 @@ def configure_node(o): + raise Exception('Link Time Code Generation is only supported on Windows.') + + if options.tag: +- o['variables']['node_tag'] = '-' + options.tag ++ if target_arch == 'sw_64': ++ o['variables']['node_tag'] = ' ' + options.tag ++ else: ++ o['variables']['node_tag'] = '-' + options.tag + else: + o['variables']['node_tag'] = '' + ++ if options.sw_tag: ++ o['variables']['node_sw_tag'] = options.sw_tag ++ else: ++ o['variables']['node_sw_tag'] = '' ++ + o['variables']['node_release_urlbase'] = options.release_urlbase or '' + + if options.v8_options: +diff --git a/deps/icu-small/source/i18n/double-conversion-utils.h b/deps/icu-small/source/i18n/double-conversion-utils.h +index 303668f9..f041dfb2 100644 +--- a/deps/icu-small/source/i18n/double-conversion-utils.h ++++ b/deps/icu-small/source/i18n/double-conversion-utils.h +@@ -154,7 +154,7 @@ int main(int argc, char** argv) { + defined(__powerpc__) || defined(__ppc__) || defined(__ppc64__) || \ + defined(_POWER) || defined(_ARCH_PPC) || defined(_ARCH_PPC64) || \ + defined(__sparc__) || defined(__sparc) || defined(__s390__) || \ +- defined(__SH4__) || defined(__alpha__) || \ ++ defined(__SH4__) || defined(__alpha__) || defined(__sw_64__) ||\ + defined(_MIPS_ARCH_MIPS32R2) || defined(__ARMEB__) ||\ + defined(__AARCH64EL__) || defined(__aarch64__) || defined(__AARCH64EB__) || \ + defined(__riscv) || defined(__e2k__) || \ +diff --git a/deps/openssl/README.md b/deps/openssl/README.md +index 06f5c71c..dfb2ad03 100644 +--- a/deps/openssl/README.md ++++ b/deps/openssl/README.md +@@ -51,6 +51,7 @@ Here is a list of supported architectures for use of ASM in OpenSSL. + | linux | x64 | linux-x86_64 | o | + | linux | arm | linux-armv4 | o | + | linux | arm64 | linux-aarch64 | o | ++ | linux | sw64 | linux-sw_64 | o | + | linux | ppc64(*1) | linux-ppc64le | o | + | linux | s390 | linux32-s390x | o | + | linux | s390x | linux64-s390x | o | +diff --git a/deps/openssl/config/Makefile b/deps/openssl/config/Makefile +index 48d2af80..78c90e86 100644 +--- a/deps/openssl/config/Makefile ++++ b/deps/openssl/config/Makefile +@@ -10,7 +10,7 @@ PERL = perl + + # Supported architecture list + ASM_ARCHS = aix64-gcc-as BSD-x86 BSD-x86_64 \ +-darwin64-x86_64-cc darwin-i386-cc darwin64-arm64-cc linux-aarch64 \ ++darwin64-x86_64-cc darwin-i386-cc darwin64-arm64-cc linux-aarch64 linux-sw_64\ + linux-armv4 linux-elf linux-x86_64 \ + linux-ppc64le linux32-s390x linux64-s390x linux64-mips64\ + solaris-x86-gcc solaris64-x86_64-gcc VC-WIN64A VC-WIN32 +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/apps/progs.c b/deps/openssl/config/archs/linux-sw_64/asm/apps/progs.c +new file mode 100644 +index 00000000..f594c302 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/apps/progs.c +@@ -0,0 +1,397 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "progs.h" ++ ++FUNCTION functions[] = { ++ {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL}, ++ {FT_general, "ca", ca_main, ca_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMP ++ {FT_general, "cmp", cmp_main, cmp_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMS ++ {FT_general, "cms", cms_main, cms_options, NULL, NULL}, ++#endif ++ {FT_general, "crl", crl_main, crl_options, NULL, NULL}, ++ {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL}, ++ {FT_general, "dgst", dgst_main, dgst_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DH ++ {FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsa", dsa_main, dsa_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ec", ec_main, ec_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL}, ++#endif ++ {FT_general, "enc", enc_main, enc_options, NULL, NULL}, ++#ifndef OPENSSL_NO_ENGINE ++ {FT_general, "engine", engine_main, engine_options, NULL, NULL}, ++#endif ++ {FT_general, "errstr", errstr_main, errstr_options, NULL, NULL}, ++ {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL}, ++#endif ++ {FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL}, ++#ifndef OPENSSL_NO_RSA ++ {FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL}, ++#endif ++ {FT_general, "help", help_main, help_options, NULL, NULL}, ++ {FT_general, "info", info_main, info_options, NULL, NULL}, ++ {FT_general, "kdf", kdf_main, kdf_options, NULL, NULL}, ++ {FT_general, "list", list_main, list_options, NULL, NULL}, ++ {FT_general, "mac", mac_main, mac_options, NULL, NULL}, ++ {FT_general, "nseq", nseq_main, nseq_options, NULL, NULL}, ++#ifndef OPENSSL_NO_OCSP ++ {FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL}, ++#endif ++ {FT_general, "passwd", passwd_main, passwd_options, NULL, NULL}, ++ {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL}, ++ {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL}, ++ {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL}, ++ {FT_general, "pkey", pkey_main, pkey_options, NULL, NULL}, ++ {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL}, ++ {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL}, ++ {FT_general, "prime", prime_main, prime_options, NULL, NULL}, ++ {FT_general, "rand", rand_main, rand_options, NULL, NULL}, ++ {FT_general, "rehash", rehash_main, rehash_options, NULL, NULL}, ++ {FT_general, "req", req_main, req_options, NULL, NULL}, ++ {FT_general, "rsa", rsa_main, rsa_options, NULL, NULL}, ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA) ++ {FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_client", s_client_main, s_client_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_server", s_server_main, s_server_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, ++#endif ++ {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, ++ {FT_general, "smime", smime_main, smime_options, NULL, NULL}, ++ {FT_general, "speed", speed_main, speed_options, NULL, NULL}, ++ {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SRP ++ {FT_general, "srp", srp_main, srp_options, NULL, NULL}, ++#endif ++ {FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL}, ++#ifndef OPENSSL_NO_TS ++ {FT_general, "ts", ts_main, ts_options, NULL, NULL}, ++#endif ++ {FT_general, "verify", verify_main, verify_options, NULL, NULL}, ++ {FT_general, "version", version_main, version_options, NULL, NULL}, ++ {FT_general, "x509", x509_main, x509_options, NULL, NULL}, ++#ifndef OPENSSL_NO_MD2 ++ {FT_md, "md2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_MD4 ++ {FT_md, "md4", dgst_main, NULL, NULL}, ++#endif ++ {FT_md, "md5", dgst_main, NULL, NULL}, ++ {FT_md, "sha1", dgst_main, NULL, NULL}, ++ {FT_md, "sha224", dgst_main, NULL, NULL}, ++ {FT_md, "sha256", dgst_main, NULL, NULL}, ++ {FT_md, "sha384", dgst_main, NULL, NULL}, ++ {FT_md, "sha512", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-384", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-512", dgst_main, NULL, NULL}, ++ {FT_md, "shake128", dgst_main, NULL, NULL}, ++ {FT_md, "shake256", dgst_main, NULL, NULL}, ++#ifndef OPENSSL_NO_MDC2 ++ {FT_md, "mdc2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_RMD160 ++ {FT_md, "rmd160", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2b512", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2s256", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM3 ++ {FT_md, "sm3", dgst_main, NULL, NULL}, ++#endif ++ {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL}, ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, ++#endif ++ {FT_cipher, "base64", enc_main, enc_options, NULL}, ++#ifdef ZLIB ++ {FT_cipher, "zlib", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "desx", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4-40", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL}, ++#endif ++ {0, NULL, NULL, NULL, NULL} ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/configdata.pm b/deps/openssl/config/archs/linux-sw_64/asm/configdata.pm +new file mode 100644 +index 00000000..0d0ff1a0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/configdata.pm +@@ -0,0 +1,27690 @@ ++#! /usr/bin/env perl ++# -*- mode: perl -*- ++ ++package configdata; ++ ++use strict; ++use warnings; ++ ++use Exporter; ++our @ISA = qw(Exporter); ++our @EXPORT = qw( ++ %config %target %disabled %withargs %unified_info ++ @disablables @disablables_int ++); ++ ++our %config = ( ++ "AR" => "ar", ++ "ARFLAGS" => [ ++ "qc" ++ ], ++ "CC" => "gcc", ++ "CFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "CPPDEFINES" => [], ++ "CPPFLAGS" => [], ++ "CPPINCLUDES" => [], ++ "CXX" => "g++", ++ "CXXFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "LDFLAGS" => [], ++ "LDLIBS" => [], ++ "PERL" => "/usr/bin/perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "RCFLAGS" => [], ++ "api" => "30000", ++ "b32" => "0", ++ "b64" => "0", ++ "b64l" => "1", ++ "bn_ll" => "0", ++ "build_file" => "Makefile", ++ "build_file_templates" => [ ++ "Configurations/common0.tmpl", ++ "Configurations/unix-Makefile.tmpl" ++ ], ++ "build_infos" => [ ++ "./build.info", ++ "crypto/build.info", ++ "ssl/build.info", ++ "apps/build.info", ++ "util/build.info", ++ "tools/build.info", ++ "fuzz/build.info", ++ "providers/build.info", ++ "doc/build.info", ++ "test/build.info", ++ "engines/build.info", ++ "crypto/objects/build.info", ++ "crypto/buffer/build.info", ++ "crypto/bio/build.info", ++ "crypto/stack/build.info", ++ "crypto/lhash/build.info", ++ "crypto/rand/build.info", ++ "crypto/evp/build.info", ++ "crypto/asn1/build.info", ++ "crypto/pem/build.info", ++ "crypto/x509/build.info", ++ "crypto/conf/build.info", ++ "crypto/txt_db/build.info", ++ "crypto/pkcs7/build.info", ++ "crypto/pkcs12/build.info", ++ "crypto/ui/build.info", ++ "crypto/kdf/build.info", ++ "crypto/store/build.info", ++ "crypto/property/build.info", ++ "crypto/md4/build.info", ++ "crypto/md5/build.info", ++ "crypto/sha/build.info", ++ "crypto/mdc2/build.info", ++ "crypto/hmac/build.info", ++ "crypto/ripemd/build.info", ++ "crypto/whrlpool/build.info", ++ "crypto/poly1305/build.info", ++ "crypto/siphash/build.info", ++ "crypto/sm3/build.info", ++ "crypto/des/build.info", ++ "crypto/aes/build.info", ++ "crypto/rc2/build.info", ++ "crypto/rc4/build.info", ++ "crypto/idea/build.info", ++ "crypto/aria/build.info", ++ "crypto/bf/build.info", ++ "crypto/cast/build.info", ++ "crypto/camellia/build.info", ++ "crypto/seed/build.info", ++ "crypto/sm4/build.info", ++ "crypto/chacha/build.info", ++ "crypto/modes/build.info", ++ "crypto/bn/build.info", ++ "crypto/ec/build.info", ++ "crypto/rsa/build.info", ++ "crypto/dsa/build.info", ++ "crypto/dh/build.info", ++ "crypto/sm2/build.info", ++ "crypto/dso/build.info", ++ "crypto/engine/build.info", ++ "crypto/err/build.info", ++ "crypto/http/build.info", ++ "crypto/ocsp/build.info", ++ "crypto/cms/build.info", ++ "crypto/ts/build.info", ++ "crypto/srp/build.info", ++ "crypto/cmac/build.info", ++ "crypto/ct/build.info", ++ "crypto/async/build.info", ++ "crypto/ess/build.info", ++ "crypto/crmf/build.info", ++ "crypto/cmp/build.info", ++ "crypto/encode_decode/build.info", ++ "crypto/ffc/build.info", ++ "apps/lib/build.info", ++ "providers/common/build.info", ++ "providers/implementations/build.info", ++ "providers/fips/build.info", ++ "doc/man1/build.info", ++ "providers/common/der/build.info", ++ "providers/implementations/digests/build.info", ++ "providers/implementations/ciphers/build.info", ++ "providers/implementations/rands/build.info", ++ "providers/implementations/macs/build.info", ++ "providers/implementations/kdfs/build.info", ++ "providers/implementations/exchange/build.info", ++ "providers/implementations/keymgmt/build.info", ++ "providers/implementations/signature/build.info", ++ "providers/implementations/asymciphers/build.info", ++ "providers/implementations/encode_decode/build.info", ++ "providers/implementations/storemgmt/build.info", ++ "providers/implementations/kem/build.info", ++ "providers/implementations/rands/seeding/build.info" ++ ], ++ "build_metadata" => "+quic", ++ "build_type" => "release", ++ "builddir" => ".", ++ "cflags" => [ ++ "-Wa,--noexecstack" ++ ], ++ "conf_files" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf" ++ ], ++ "cppflags" => [], ++ "cxxflags" => [], ++ "defines" => [ ++ "NDEBUG" ++ ], ++ "dynamic_engines" => "0", ++ "ex_libs" => [], ++ "full_version" => "3.0.5+quic", ++ "includes" => [], ++ "lflags" => [], ++ "lib_defines" => [ ++ "OPENSSL_PIC" ++ ], ++ "libdir" => "", ++ "major" => "3", ++ "makedep_scheme" => "gcc", ++ "minor" => "0", ++ "openssl_api_defines" => [ ++ "OPENSSL_CONFIGURED_API=30000" ++ ], ++ "openssl_feature_defines" => [ ++ "OPENSSL_RAND_SEED_OS", ++ "OPENSSL_THREADS", ++ "OPENSSL_NO_AFALGENG", ++ "OPENSSL_NO_ASAN", ++ "OPENSSL_NO_COMP", ++ "OPENSSL_NO_CRYPTO_MDEBUG", ++ "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", ++ "OPENSSL_NO_DEVCRYPTOENG", ++ "OPENSSL_NO_EC_NISTP_64_GCC_128", ++ "OPENSSL_NO_EGD", ++ "OPENSSL_NO_EXTERNAL_TESTS", ++ "OPENSSL_NO_FUZZ_AFL", ++ "OPENSSL_NO_FUZZ_LIBFUZZER", ++ "OPENSSL_NO_KTLS", ++ "OPENSSL_NO_LOADERENG", ++ "OPENSSL_NO_MD2", ++ "OPENSSL_NO_MSAN", ++ "OPENSSL_NO_RC5", ++ "OPENSSL_NO_SCTP", ++ "OPENSSL_NO_SSL3", ++ "OPENSSL_NO_SSL3_METHOD", ++ "OPENSSL_NO_TRACE", ++ "OPENSSL_NO_UBSAN", ++ "OPENSSL_NO_UNIT_TEST", ++ "OPENSSL_NO_UPLINK", ++ "OPENSSL_NO_WEAK_SSL_CIPHERS", ++ "OPENSSL_NO_DYNAMIC_ENGINE" ++ ], ++ "openssl_other_defines" => [ ++ "OPENSSL_NO_KTLS" ++ ], ++ "openssl_sys_defines" => [], ++ "openssldir" => "", ++ "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", ++ "patch" => "5", ++ "perl_archname" => "x86_64-linux-gnu-thread-multi", ++ "perl_cmd" => "/usr/bin/perl", ++ "perl_version" => "5.30.0", ++ "perlargv" => [ ++ "no-comp", ++ "no-shared", ++ "no-afalgeng", ++ "enable-ssl-trace", ++ "enable-fips", ++ "linux-sw_64" ++ ], ++ "perlenv" => { ++ "AR" => undef, ++ "ARFLAGS" => undef, ++ "AS" => undef, ++ "ASFLAGS" => undef, ++ "BUILDFILE" => undef, ++ "CC" => "gcc", ++ "CFLAGS" => undef, ++ "CPP" => undef, ++ "CPPDEFINES" => undef, ++ "CPPFLAGS" => undef, ++ "CPPINCLUDES" => undef, ++ "CROSS_COMPILE" => undef, ++ "CXX" => undef, ++ "CXXFLAGS" => undef, ++ "HASHBANGPERL" => undef, ++ "LD" => undef, ++ "LDFLAGS" => undef, ++ "LDLIBS" => undef, ++ "MT" => undef, ++ "MTFLAGS" => undef, ++ "OPENSSL_LOCAL_CONFIG_DIR" => undef, ++ "PERL" => undef, ++ "RANLIB" => undef, ++ "RC" => undef, ++ "RCFLAGS" => undef, ++ "RM" => undef, ++ "WINDRES" => undef, ++ "__CNF_CFLAGS" => undef, ++ "__CNF_CPPDEFINES" => undef, ++ "__CNF_CPPFLAGS" => undef, ++ "__CNF_CPPINCLUDES" => undef, ++ "__CNF_CXXFLAGS" => undef, ++ "__CNF_LDFLAGS" => undef, ++ "__CNF_LDLIBS" => undef ++ }, ++ "prefix" => "", ++ "prerelease" => "", ++ "processor" => "", ++ "rc4_int" => "unsigned char", ++ "release_date" => "5 Jul 2022", ++ "shlib_version" => "81.3", ++ "sourcedir" => ".", ++ "target" => "linux-sw_64", ++ "version" => "3.0.5" ++); ++our %target = ( ++ "AR" => "ar", ++ "ARFLAGS" => "qc", ++ "CC" => "gcc", ++ "CFLAGS" => "-Wall -O3", ++ "CXX" => "g++", ++ "CXXFLAGS" => "-Wall -O3", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "_conf_fname_int" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/shared-info.pl" ++ ], ++ "asm_arch" => "sw_64", ++ "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", ++ "build_file" => "Makefile", ++ "build_scheme" => [ ++ "unified", ++ "unix" ++ ], ++ "cflags" => "-pthread", ++ "cppflags" => "", ++ "cxxflags" => "-std=c++11 -pthread", ++ "defines" => [ ++ "OPENSSL_BUILDING_OPENSSL" ++ ], ++ "disable" => [], ++ "dso_ldflags" => "-Wl,-z,defs", ++ "dso_scheme" => "dlfcn", ++ "enable" => [ ++ "afalgeng" ++ ], ++ "ex_libs" => "-ldl -pthread", ++ "includes" => [], ++ "lflags" => "", ++ "lib_cflags" => "", ++ "lib_cppflags" => "-DOPENSSL_USE_NODELETE", ++ "lib_defines" => [], ++ "module_cflags" => "-fPIC", ++ "module_cxxflags" => undef, ++ "module_ldflags" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "multilib" => "64", ++ "perl_platform" => "Unix", ++ "perlasm_scheme" => "64", ++ "shared_cflag" => "-fPIC", ++ "shared_defflag" => "-Wl,--version-script=", ++ "shared_defines" => [], ++ "shared_ldflag" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "shared_rcflag" => "", ++ "shared_sonameflag" => "-Wl,-soname=", ++ "shared_target" => "linux-shared", ++ "template" => "1", ++ "thread_defines" => [], ++ "thread_scheme" => "pthreads", ++ "unistd" => "" ++); ++our @disablables = ( ++ "acvp-tests", ++ "afalgeng", ++ "aria", ++ "asan", ++ "asm", ++ "async", ++ "autoalginit", ++ "autoerrinit", ++ "autoload-config", ++ "bf", ++ "blake2", ++ "buildtest-c++", ++ "bulk", ++ "cached-fetch", ++ "camellia", ++ "capieng", ++ "cast", ++ "chacha", ++ "cmac", ++ "cmp", ++ "cms", ++ "comp", ++ "crypto-mdebug", ++ "ct", ++ "deprecated", ++ "des", ++ "devcryptoeng", ++ "dgram", ++ "dh", ++ "dsa", ++ "dso", ++ "dtls", ++ "dynamic-engine", ++ "ec", ++ "ec2m", ++ "ec_nistp_64_gcc_128", ++ "ecdh", ++ "ecdsa", ++ "egd", ++ "engine", ++ "err", ++ "external-tests", ++ "filenames", ++ "fips", ++ "fips-securitychecks", ++ "fuzz-afl", ++ "fuzz-libfuzzer", ++ "gost", ++ "idea", ++ "ktls", ++ "legacy", ++ "loadereng", ++ "makedepend", ++ "md2", ++ "md4", ++ "mdc2", ++ "module", ++ "msan", ++ "multiblock", ++ "nextprotoneg", ++ "ocb", ++ "ocsp", ++ "padlockeng", ++ "pic", ++ "pinshared", ++ "poly1305", ++ "posix-io", ++ "psk", ++ "quic", ++ "rc2", ++ "rc4", ++ "rc5", ++ "rdrand", ++ "rfc3779", ++ "rmd160", ++ "scrypt", ++ "sctp", ++ "secure-memory", ++ "seed", ++ "shared", ++ "siphash", ++ "siv", ++ "sm2", ++ "sm3", ++ "sm4", ++ "sock", ++ "srp", ++ "srtp", ++ "sse2", ++ "ssl", ++ "ssl-trace", ++ "static-engine", ++ "stdio", ++ "tests", ++ "threads", ++ "tls", ++ "trace", ++ "ts", ++ "ubsan", ++ "ui-console", ++ "unit-test", ++ "uplink", ++ "weak-ssl-ciphers", ++ "whirlpool", ++ "zlib", ++ "zlib-dynamic", ++ "ssl3", ++ "ssl3-method", ++ "tls1", ++ "tls1-method", ++ "tls1_1", ++ "tls1_1-method", ++ "tls1_2", ++ "tls1_2-method", ++ "tls1_3", ++ "dtls1", ++ "dtls1-method", ++ "dtls1_2", ++ "dtls1_2-method" ++); ++our @disablables_int = ( ++ "crmf" ++); ++our %disabled = ( ++ "afalgeng" => "option", ++ "asan" => "default", ++ "buildtest-c++" => "default", ++ "comp" => "option", ++ "crypto-mdebug" => "default", ++ "crypto-mdebug-backtrace" => "default", ++ "devcryptoeng" => "default", ++ "dynamic-engine" => "cascade", ++ "ec_nistp_64_gcc_128" => "default", ++ "egd" => "default", ++ "external-tests" => "default", ++ "fuzz-afl" => "default", ++ "fuzz-libfuzzer" => "default", ++ "ktls" => "default", ++ "loadereng" => "cascade", ++ "md2" => "default", ++ "msan" => "default", ++ "rc5" => "default", ++ "sctp" => "default", ++ "shared" => "option", ++ "ssl3" => "default", ++ "ssl3-method" => "default", ++ "trace" => "default", ++ "ubsan" => "default", ++ "unit-test" => "default", ++ "uplink" => "no uplink_arch", ++ "weak-ssl-ciphers" => "default", ++ "zlib" => "default", ++ "zlib-dynamic" => "default" ++); ++our %withargs = (); ++our %unified_info = ( ++ "attributes" => { ++ "depends" => { ++ "doc/man1/openssl-asn1parse.pod" => { ++ "doc/man1/openssl-asn1parse.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ca.pod" => { ++ "doc/man1/openssl-ca.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ciphers.pod" => { ++ "doc/man1/openssl-ciphers.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmds.pod" => { ++ "doc/man1/openssl-cmds.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmp.pod" => { ++ "doc/man1/openssl-cmp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cms.pod" => { ++ "doc/man1/openssl-cms.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl.pod" => { ++ "doc/man1/openssl-crl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl2pkcs7.pod" => { ++ "doc/man1/openssl-crl2pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dgst.pod" => { ++ "doc/man1/openssl-dgst.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dhparam.pod" => { ++ "doc/man1/openssl-dhparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsa.pod" => { ++ "doc/man1/openssl-dsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsaparam.pod" => { ++ "doc/man1/openssl-dsaparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ec.pod" => { ++ "doc/man1/openssl-ec.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ecparam.pod" => { ++ "doc/man1/openssl-ecparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-enc.pod" => { ++ "doc/man1/openssl-enc.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-engine.pod" => { ++ "doc/man1/openssl-engine.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-errstr.pod" => { ++ "doc/man1/openssl-errstr.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-fipsinstall.pod" => { ++ "doc/man1/openssl-fipsinstall.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-gendsa.pod" => { ++ "doc/man1/openssl-gendsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genpkey.pod" => { ++ "doc/man1/openssl-genpkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genrsa.pod" => { ++ "doc/man1/openssl-genrsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-info.pod" => { ++ "doc/man1/openssl-info.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-kdf.pod" => { ++ "doc/man1/openssl-kdf.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-list.pod" => { ++ "doc/man1/openssl-list.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-mac.pod" => { ++ "doc/man1/openssl-mac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-nseq.pod" => { ++ "doc/man1/openssl-nseq.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ocsp.pod" => { ++ "doc/man1/openssl-ocsp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-passwd.pod" => { ++ "doc/man1/openssl-passwd.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs12.pod" => { ++ "doc/man1/openssl-pkcs12.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs7.pod" => { ++ "doc/man1/openssl-pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs8.pod" => { ++ "doc/man1/openssl-pkcs8.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkey.pod" => { ++ "doc/man1/openssl-pkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyparam.pod" => { ++ "doc/man1/openssl-pkeyparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyutl.pod" => { ++ "doc/man1/openssl-pkeyutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-prime.pod" => { ++ "doc/man1/openssl-prime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rand.pod" => { ++ "doc/man1/openssl-rand.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rehash.pod" => { ++ "doc/man1/openssl-rehash.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-req.pod" => { ++ "doc/man1/openssl-req.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsa.pod" => { ++ "doc/man1/openssl-rsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsautl.pod" => { ++ "doc/man1/openssl-rsautl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_client.pod" => { ++ "doc/man1/openssl-s_client.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_server.pod" => { ++ "doc/man1/openssl-s_server.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_time.pod" => { ++ "doc/man1/openssl-s_time.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-sess_id.pod" => { ++ "doc/man1/openssl-sess_id.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-smime.pod" => { ++ "doc/man1/openssl-smime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-speed.pod" => { ++ "doc/man1/openssl-speed.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-spkac.pod" => { ++ "doc/man1/openssl-spkac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-srp.pod" => { ++ "doc/man1/openssl-srp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-storeutl.pod" => { ++ "doc/man1/openssl-storeutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ts.pod" => { ++ "doc/man1/openssl-ts.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-verify.pod" => { ++ "doc/man1/openssl-verify.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-version.pod" => { ++ "doc/man1/openssl-version.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-x509.pod" => { ++ "doc/man1/openssl-x509.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man7/openssl_user_macros.pod" => { ++ "doc/man7/openssl_user_macros.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "providers/libcommon.a" => { ++ "libcrypto" => { ++ "weak" => "1" ++ } ++ } ++ }, ++ "generate" => { ++ "include/openssl/configuration.h" => { ++ "skip" => "1" ++ } ++ }, ++ "libraries" => { ++ "apps/libapps.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libcommon.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libdefault.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libfips.a" => { ++ "noinst" => "1" ++ }, ++ "providers/liblegacy.a" => { ++ "noinst" => "1" ++ }, ++ "test/libtestutil.a" => { ++ "has_main" => "1", ++ "noinst" => "1" ++ } ++ }, ++ "modules" => { ++ "providers/fips" => { ++ "fips" => "1" ++ }, ++ "test/p_test" => { ++ "noinst" => "1" ++ } ++ }, ++ "programs" => { ++ "fuzz/asn1-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/asn1parse-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bignum-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bndiv-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/client-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cmp-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cms-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/conf-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/crl-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/ct-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/server-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/x509-test" => { ++ "noinst" => "1" ++ }, ++ "test/aborttest" => { ++ "noinst" => "1" ++ }, ++ "test/acvp_test" => { ++ "noinst" => "1" ++ }, ++ "test/aesgcmtest" => { ++ "noinst" => "1" ++ }, ++ "test/afalgtest" => { ++ "noinst" => "1" ++ }, ++ "test/algorithmid_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_decode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_dsa_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_encode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_string_table_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/asynciotest" => { ++ "noinst" => "1" ++ }, ++ "test/asynctest" => { ++ "noinst" => "1" ++ }, ++ "test/bad_dtls_test" => { ++ "noinst" => "1" ++ }, ++ "test/bftest" => { ++ "noinst" => "1" ++ }, ++ "test/bio_callback_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_core_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_enc_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_memleak_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_prefix_text" => { ++ "noinst" => "1" ++ }, ++ "test/bio_readbuffer_test" => { ++ "noinst" => "1" ++ }, ++ "test/bioprinttest" => { ++ "noinst" => "1" ++ }, ++ "test/bn_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/bntest" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_aes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_async" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_blowfish" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_bn" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_buffer" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_camellia" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cast" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmp_util" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conf_api" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conftypes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_dispatch" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_object" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cryptoerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_decoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_des" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dtls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_e_os2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ebcdic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ec" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_encoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_engine" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_evp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_fips_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_hmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_http" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_idea" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_kdf" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_macros" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md5" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_mdc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_modes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_obj_mac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_objects" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ossl_typ" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_param_build" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_params" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_prov_ssl" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_provider" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_quic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rand" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ripemd" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_seed" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_self_test" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sha" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_srtp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ssl2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sslerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_stack" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_store" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_symhacks" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_tls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ts" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_txt_db" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_types" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_whrlpool" => { ++ "noinst" => "1" ++ }, ++ "test/casttest" => { ++ "noinst" => "1" ++ }, ++ "test/chacha_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipher_overhead_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherbytes_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherlist_test" => { ++ "noinst" => "1" ++ }, ++ "test/ciphername_test" => { ++ "noinst" => "1" ++ }, ++ "test/clienthellotest" => { ++ "noinst" => "1" ++ }, ++ "test/cmactest" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_asn_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_client_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_hdr_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_msg_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_protect_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_server_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_vfy_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmsapitest" => { ++ "noinst" => "1" ++ }, ++ "test/conf_include_test" => { ++ "noinst" => "1" ++ }, ++ "test/confdump" => { ++ "noinst" => "1" ++ }, ++ "test/constant_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/context_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/crltest" => { ++ "noinst" => "1" ++ }, ++ "test/ct_test" => { ++ "noinst" => "1" ++ }, ++ "test/ctype_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/curve448_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/d2i_test" => { ++ "noinst" => "1" ++ }, ++ "test/danetest" => { ++ "noinst" => "1" ++ }, ++ "test/defltfips_test" => { ++ "noinst" => "1" ++ }, ++ "test/destest" => { ++ "noinst" => "1" ++ }, ++ "test/dhtest" => { ++ "noinst" => "1" ++ }, ++ "test/drbgtest" => { ++ "noinst" => "1" ++ }, ++ "test/dsa_no_digest_size_test" => { ++ "noinst" => "1" ++ }, ++ "test/dsatest" => { ++ "noinst" => "1" ++ }, ++ "test/dtls_mtu_test" => { ++ "noinst" => "1" ++ }, ++ "test/dtlstest" => { ++ "noinst" => "1" ++ }, ++ "test/dtlsv1listentest" => { ++ "noinst" => "1" ++ }, ++ "test/ec_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ecdsatest" => { ++ "noinst" => "1" ++ }, ++ "test/ecstresstest" => { ++ "noinst" => "1" ++ }, ++ "test/ectest" => { ++ "noinst" => "1" ++ }, ++ "test/endecode_test" => { ++ "noinst" => "1" ++ }, ++ "test/endecoder_legacy_test" => { ++ "noinst" => "1" ++ }, ++ "test/enginetest" => { ++ "noinst" => "1" ++ }, ++ "test/errtest" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test2" => { ++ "noinst" => "1" ++ }, ++ "test/evp_fetch_prov_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_libctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_ctx_new_from_name" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_dparams_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_provided_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_test" => { ++ "noinst" => "1" ++ }, ++ "test/exdatatest" => { ++ "noinst" => "1" ++ }, ++ "test/exptest" => { ++ "noinst" => "1" ++ }, ++ "test/fatalerrtest" => { ++ "noinst" => "1" ++ }, ++ "test/ffc_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/gmdifftest" => { ++ "noinst" => "1" ++ }, ++ "test/hexstr_test" => { ++ "noinst" => "1" ++ }, ++ "test/hmactest" => { ++ "noinst" => "1" ++ }, ++ "test/http_test" => { ++ "noinst" => "1" ++ }, ++ "test/ideatest" => { ++ "noinst" => "1" ++ }, ++ "test/igetest" => { ++ "noinst" => "1" ++ }, ++ "test/keymgmt_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/lhash_test" => { ++ "noinst" => "1" ++ }, ++ "test/localetest" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2test" => { ++ "noinst" => "1" ++ }, ++ "test/memleaktest" => { ++ "noinst" => "1" ++ }, ++ "test/modes_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/namemap_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ocspapitest" => { ++ "noinst" => "1" ++ }, ++ "test/ossl_store_test" => { ++ "noinst" => "1" ++ }, ++ "test/packettest" => { ++ "noinst" => "1" ++ }, ++ "test/param_build_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_api_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_conversion_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_test" => { ++ "noinst" => "1" ++ }, ++ "test/pbelutest" => { ++ "noinst" => "1" ++ }, ++ "test/pbetest" => { ++ "noinst" => "1" ++ }, ++ "test/pem_read_depr_test" => { ++ "noinst" => "1" ++ }, ++ "test/pemtest" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs12_format_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs7_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_test" => { ++ "noinst" => "1" ++ }, ++ "test/poly1305_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/property_test" => { ++ "noinst" => "1" ++ }, ++ "test/prov_config_test" => { ++ "noinst" => "1" ++ }, ++ "test/provfetchtest" => { ++ "noinst" => "1" ++ }, ++ "test/provider_fallback_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_test" => { ++ "noinst" => "1" ++ }, ++ "test/rc2test" => { ++ "noinst" => "1" ++ }, ++ "test/rc4test" => { ++ "noinst" => "1" ++ }, ++ "test/rc5test" => { ++ "noinst" => "1" ++ }, ++ "test/rdrand_sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/recordlentest" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_complex" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_mp_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_sp800_56b_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_test" => { ++ "noinst" => "1" ++ }, ++ "test/sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/secmemtest" => { ++ "noinst" => "1" ++ }, ++ "test/servername_test" => { ++ "noinst" => "1" ++ }, ++ "test/sha_test" => { ++ "noinst" => "1" ++ }, ++ "test/siphash_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm3_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm4_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sparse_array_test" => { ++ "noinst" => "1" ++ }, ++ "test/srptest" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_cert_table_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_old_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/sslapitest" => { ++ "noinst" => "1" ++ }, ++ "test/sslbuffertest" => { ++ "noinst" => "1" ++ }, ++ "test/sslcorrupttest" => { ++ "noinst" => "1" ++ }, ++ "test/stack_test" => { ++ "noinst" => "1" ++ }, ++ "test/sysdefaulttest" => { ++ "noinst" => "1" ++ }, ++ "test/test_test" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest_fips" => { ++ "noinst" => "1" ++ }, ++ "test/time_offset_test" => { ++ "noinst" => "1" ++ }, ++ "test/tls13ccstest" => { ++ "noinst" => "1" ++ }, ++ "test/tls13encryptiontest" => { ++ "noinst" => "1" ++ }, ++ "test/uitest" => { ++ "noinst" => "1" ++ }, ++ "test/upcallstest" => { ++ "noinst" => "1" ++ }, ++ "test/user_property_test" => { ++ "noinst" => "1" ++ }, ++ "test/v3ext" => { ++ "noinst" => "1" ++ }, ++ "test/v3nametest" => { ++ "noinst" => "1" ++ }, ++ "test/verify_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/versions" => { ++ "noinst" => "1" ++ }, ++ "test/wpackettest" => { ++ "noinst" => "1" ++ }, ++ "test/x509_check_cert_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_dup_cert_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509aux" => { ++ "noinst" => "1" ++ } ++ }, ++ "scripts" => { ++ "apps/CA.pl" => { ++ "misc" => "1" ++ }, ++ "apps/tsget.pl" => { ++ "linkname" => "tsget", ++ "misc" => "1" ++ }, ++ "util/shlib_wrap.sh" => { ++ "noinst" => "1" ++ }, ++ "util/wrap.pl" => { ++ "noinst" => "1" ++ } ++ }, ++ "sources" => { ++ "apps/openssl" => { ++ "apps/openssl-bin-progs.o" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/openssl-bin-progs.o" => { ++ "apps/progs.c" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/progs.o" => {} ++ } ++ }, ++ "defines" => { ++ "libcrypto" => [ ++ "AES_ASM", ++ "OPENSSL_BN_ASM_MONT", ++ "POLY1305_ASM", ++ "SHA1_ASM", ++ "SHA256_ASM", ++ "SHA512_ASM" ++ ], ++ "providers/fips" => [ ++ "FIPS_MODULE" ++ ], ++ "providers/libcommon.a" => [ ++ "OPENSSL_BN_ASM_MONT" ++ ], ++ "providers/libdefault.a" => [ ++ "AES_ASM" ++ ], ++ "providers/libfips.a" => [ ++ "AES_ASM", ++ "FIPS_MODULE", ++ "OPENSSL_BN_ASM_MONT", ++ "SHA1_ASM", ++ "SHA256_ASM", ++ "SHA512_ASM" ++ ], ++ "providers/liblegacy.a" => [ ++ "OPENSSL_BN_ASM_MONT" ++ ], ++ "test/provider_internal_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ], ++ "test/provider_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ] ++ }, ++ "depends" => { ++ "" => [ ++ "include/crypto/bn_conf.h", ++ "include/crypto/dso_conf.h", ++ "include/openssl/asn1.h", ++ "include/openssl/asn1t.h", ++ "include/openssl/bio.h", ++ "include/openssl/cmp.h", ++ "include/openssl/cms.h", ++ "include/openssl/conf.h", ++ "include/openssl/crmf.h", ++ "include/openssl/crypto.h", ++ "include/openssl/ct.h", ++ "include/openssl/err.h", ++ "include/openssl/ess.h", ++ "include/openssl/fipskey.h", ++ "include/openssl/lhash.h", ++ "include/openssl/ocsp.h", ++ "include/openssl/opensslv.h", ++ "include/openssl/pkcs12.h", ++ "include/openssl/pkcs7.h", ++ "include/openssl/safestack.h", ++ "include/openssl/srp.h", ++ "include/openssl/ssl.h", ++ "include/openssl/ui.h", ++ "include/openssl/x509.h", ++ "include/openssl/x509_vfy.h", ++ "include/openssl/x509v3.h", ++ "test/provider_internal_test.cnf" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl" => [ ++ "apps/libapps.a", ++ "libssl" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/progs.c" => [ ++ "configdata.pm" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.c" ++ ], ++ "build_modules_nodep" => [ ++ "providers/fipsmodule.cnf" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aesni-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/aes/vpaes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/x86cpuid.s" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "fuzz/asn1-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bignum-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bndiv-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/client-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/cmp-test" => [ ++ "libcrypto.a" ++ ], ++ "fuzz/cms-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/conf-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/crl-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/ct-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/server-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/x509-test" => [ ++ "libcrypto" ++ ], ++ "libcrypto.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "libssl" => [ ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov/der_digests.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/fips" => [ ++ "providers/libfips.a" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "providers/fips" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/legacy" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ], ++ "providers/libcommon.a" => [ ++ "libcrypto" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/libcommon.a" ++ ], ++ "providers/liblegacy.a" => [ ++ "providers/libcommon.a" ++ ], ++ "test/aborttest" => [ ++ "libcrypto" ++ ], ++ "test/acvp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/aesgcmtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/afalgtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/algorithmid_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_decode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_encode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_string_table_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asynciotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/asynctest" => [ ++ "libcrypto" ++ ], ++ "test/bad_dtls_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/bftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_callback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_core_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_enc_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_memleak_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_prefix_text" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bioprinttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bn_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/bntest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/buildtest_c_aes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_async" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_bn" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cast" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_des" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ec" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_engine" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_evp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_http" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_idea" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_macros" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md5" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_modes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_objects" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_params" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_provider" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_quic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rand" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_seed" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sha" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_stack" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_store" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ts" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_types" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/casttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/chacha_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipher_overhead_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipherbytes_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cipherlist_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ciphername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/clienthellotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_asn_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_client_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_ctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_hdr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_msg_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_protect_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_server_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_vfy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmsapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/conf_include_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/confdump" => [ ++ "libcrypto" ++ ], ++ "test/constant_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/context_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/crltest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ct_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ctype_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/curve448_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/d2i_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/danetest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/defltfips_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/destest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dhtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/drbgtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dtls_mtu_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlsv1listentest" => [ ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ec_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecdsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecstresstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ectest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecode_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/enginetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/errtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test2" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_libctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "libcrypto" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exdatatest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/fatalerrtest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ffc_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/gmdifftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/hexstr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/hmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/http_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ideatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/igetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/lhash_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/libtestutil.a" => [ ++ "libcrypto" ++ ], ++ "test/localetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/memleaktest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/modes_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/namemap_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ocspapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ossl_store_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/packettest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/param_build_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/params_api_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_conversion_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/pbelutest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pbetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pem_read_depr_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs12_format_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs7_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/poly1305_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/property_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/prov_config_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provfetchtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_fallback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rand_status_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rand_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rc2test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc4test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc5test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/recordlentest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_mp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sanitytest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/secmemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/servername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sha_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/siphash_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm3_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm4_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sparse_array_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/srptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_old_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslapitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslbuffertest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslcorrupttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/stack_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/sysdefaulttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/test_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest_fips" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/time_offset_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/tls13ccstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/tls13encryptiontest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/uitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/upcallstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/user_property_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3ext" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3nametest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/verify_extra_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/versions" => [ ++ "libcrypto" ++ ], ++ "test/wpackettest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509aux" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "util/wrap.pl" => [ ++ "configdata.pm" ++ ] ++ }, ++ "dirinfo" => { ++ "apps" => { ++ "products" => { ++ "bin" => [ ++ "apps/openssl" ++ ], ++ "script" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl" ++ ] ++ } ++ }, ++ "apps/lib" => { ++ "deps" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "apps/lib/uitest-bin-apps_ui.o", ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o", ++ "apps/lib/libtestutil-lib-opt.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "apps/openssl", ++ "test/cmp_client_test", ++ "test/uitest" ++ ], ++ "lib" => [ ++ "apps/libapps.a", ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "crypto" => { ++ "deps" => [ ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aes" => { ++ "deps" => [ ++ "crypto/aes/libcrypto-lib-aes-sw_64.o", ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aes/libfips-lib-aes-sw_64.o", ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aria" => { ++ "deps" => [ ++ "crypto/aria/libcrypto-lib-aria.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/asn1" => { ++ "deps" => [ ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async" => { ++ "deps" => [ ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async/arch" => { ++ "deps" => [ ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bf" => { ++ "deps" => [ ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bio" => { ++ "deps" => [ ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bn" => { ++ "deps" => [ ++ "crypto/bn/libcrypto-lib-bn-sw_64.o", ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/bn/libcrypto-lib-sw_64-mont.o", ++ "crypto/bn/libfips-lib-bn-sw_64.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/bn/libfips-lib-sw_64-mont.o", ++ "crypto/bn/liblegacy-lib-bn-sw_64.o", ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/buffer" => { ++ "deps" => [ ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/buffer/libfips-lib-buffer.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/camellia" => { ++ "deps" => [ ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cast" => { ++ "deps" => [ ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/chacha" => { ++ "deps" => [ ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cmac" => { ++ "deps" => [ ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmac/libfips-lib-cmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/cmp" => { ++ "deps" => [ ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cms" => { ++ "deps" => [ ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/conf" => { ++ "deps" => [ ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/crmf" => { ++ "deps" => [ ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ct" => { ++ "deps" => [ ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/des" => { ++ "deps" => [ ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/dh" => { ++ "deps" => [ ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dsa" => { ++ "deps" => [ ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dso" => { ++ "deps" => [ ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ec" => { ++ "deps" => [ ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448" => { ++ "deps" => [ ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_32" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_64" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/encode_decode" => { ++ "deps" => [ ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/engine" => { ++ "deps" => [ ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/err" => { ++ "deps" => [ ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ess" => { ++ "deps" => [ ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/evp" => { ++ "deps" => [ ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ffc" => { ++ "deps" => [ ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/hmac" => { ++ "deps" => [ ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/hmac/libfips-lib-hmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/http" => { ++ "deps" => [ ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/idea" => { ++ "deps" => [ ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/kdf" => { ++ "deps" => [ ++ "crypto/kdf/libcrypto-lib-kdf_err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/lhash" => { ++ "deps" => [ ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/lhash/libfips-lib-lhash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/md4" => { ++ "deps" => [ ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/md5" => { ++ "deps" => [ ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/mdc2" => { ++ "deps" => [ ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/modes" => { ++ "deps" => [ ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/objects" => { ++ "deps" => [ ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ocsp" => { ++ "deps" => [ ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pem" => { ++ "deps" => [ ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs12" => { ++ "deps" => [ ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs7" => { ++ "deps" => [ ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/poly1305" => { ++ "deps" => [ ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o", ++ "crypto/poly1305/libcrypto-lib-poly1305.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/property" => { ++ "deps" => [ ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rand" => { ++ "deps" => [ ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rand/libfips-lib-rand_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rc2" => { ++ "deps" => [ ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rc4" => { ++ "deps" => [ ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ripemd" => { ++ "deps" => [ ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rsa" => { ++ "deps" => [ ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/seed" => { ++ "deps" => [ ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sha" => { ++ "deps" => [ ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1-sw_64.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256-sw_64.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512-sw_64.o", ++ "crypto/sha/libfips-lib-sha512.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/siphash" => { ++ "deps" => [ ++ "crypto/siphash/libcrypto-lib-siphash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm2" => { ++ "deps" => [ ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm3" => { ++ "deps" => [ ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm4" => { ++ "deps" => [ ++ "crypto/sm4/libcrypto-lib-sm4.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/srp" => { ++ "deps" => [ ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/stack" => { ++ "deps" => [ ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/stack/libfips-lib-stack.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/store" => { ++ "deps" => [ ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ts" => { ++ "deps" => [ ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/txt_db" => { ++ "deps" => [ ++ "crypto/txt_db/libcrypto-lib-txt_db.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ui" => { ++ "deps" => [ ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/whrlpool" => { ++ "deps" => [ ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/x509" => { ++ "deps" => [ ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "engines" => { ++ "deps" => [ ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "fuzz" => { ++ "products" => { ++ "bin" => [ ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test" ++ ] ++ } ++ }, ++ "providers" => { ++ "deps" => [ ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips", ++ "providers/legacy" ++ ], ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/common" => { ++ "deps" => [ ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/common/der" => { ++ "deps" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/fips" => { ++ "deps" => [ ++ "providers/fips/fips-dso-fips_entry.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips" ++ ], ++ "lib" => [ ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/asymciphers" => { ++ "deps" => [ ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/ciphers" => { ++ "deps" => [ ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/digests" => { ++ "deps" => [ ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/encode_decode" => { ++ "deps" => [ ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/exchange" => { ++ "deps" => [ ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/kdfs" => { ++ "deps" => [ ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/kem" => { ++ "deps" => [ ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/keymgmt" => { ++ "deps" => [ ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/macs" => { ++ "deps" => [ ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands" => { ++ "deps" => [ ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands/seeding" => { ++ "deps" => [ ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/signature" => { ++ "deps" => [ ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/storemgmt" => { ++ "deps" => [ ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "ssl" => { ++ "deps" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/libdefault-lib-s3_cbc.o", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "ssl/record" => { ++ "deps" => [ ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libcommon.a" ++ ] ++ } ++ }, ++ "ssl/statem" => { ++ "deps" => [ ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl" ++ ] ++ } ++ }, ++ "test/helpers" => { ++ "deps" => [ ++ "test/helpers/asynciotest-bin-ssltestlib.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o", ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "test/asynciotest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/endecode_test", ++ "test/fatalerrtest", ++ "test/pkcs12_format_test", ++ "test/recordlentest", ++ "test/servername_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/tls13ccstest" ++ ] ++ } ++ }, ++ "test/testutil" => { ++ "deps" => [ ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "tools" => { ++ "products" => { ++ "script" => [ ++ "tools/c_rehash" ++ ] ++ } ++ }, ++ "util" => { ++ "products" => { ++ "script" => [ ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ] ++ } ++ } ++ }, ++ "generate" => { ++ "apps/progs.c" => [ ++ "apps/progs.pl", ++ "\"-C\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.pl", ++ "\"-H\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/aes/asm/aes-586.pl" ++ ], ++ "crypto/aes/aes-armv4.S" => [ ++ "crypto/aes/asm/aes-armv4.pl" ++ ], ++ "crypto/aes/aes-c64xplus.S" => [ ++ "crypto/aes/asm/aes-c64xplus.pl" ++ ], ++ "crypto/aes/aes-ia64.s" => [ ++ "crypto/aes/asm/aes-ia64.S" ++ ], ++ "crypto/aes/aes-sw_64.S" => [ ++ "crypto/aes/asm/aes-sw_64.pl" ++ ], ++ "crypto/aes/aes-parisc.s" => [ ++ "crypto/aes/asm/aes-parisc.pl" ++ ], ++ "crypto/aes/aes-ppc.s" => [ ++ "crypto/aes/asm/aes-ppc.pl" ++ ], ++ "crypto/aes/aes-s390x.S" => [ ++ "crypto/aes/asm/aes-s390x.pl" ++ ], ++ "crypto/aes/aes-sparcv9.S" => [ ++ "crypto/aes/asm/aes-sparcv9.pl" ++ ], ++ "crypto/aes/aes-x86_64.s" => [ ++ "crypto/aes/asm/aes-x86_64.pl" ++ ], ++ "crypto/aes/aesfx-sparcv9.S" => [ ++ "crypto/aes/asm/aesfx-sparcv9.pl" ++ ], ++ "crypto/aes/aesni-mb-x86_64.s" => [ ++ "crypto/aes/asm/aesni-mb-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha1-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha1-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha256-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha256-x86_64.pl" ++ ], ++ "crypto/aes/aesni-x86.S" => [ ++ "crypto/aes/asm/aesni-x86.pl" ++ ], ++ "crypto/aes/aesni-x86_64.s" => [ ++ "crypto/aes/asm/aesni-x86_64.pl" ++ ], ++ "crypto/aes/aesp8-ppc.s" => [ ++ "crypto/aes/asm/aesp8-ppc.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/aes/asm/aest4-sparcv9.pl" ++ ], ++ "crypto/aes/aesv8-armx.S" => [ ++ "crypto/aes/asm/aesv8-armx.pl" ++ ], ++ "crypto/aes/bsaes-armv7.S" => [ ++ "crypto/aes/asm/bsaes-armv7.pl" ++ ], ++ "crypto/aes/bsaes-x86_64.s" => [ ++ "crypto/aes/asm/bsaes-x86_64.pl" ++ ], ++ "crypto/aes/vpaes-armv8.S" => [ ++ "crypto/aes/asm/vpaes-armv8.pl" ++ ], ++ "crypto/aes/vpaes-ppc.s" => [ ++ "crypto/aes/asm/vpaes-ppc.pl" ++ ], ++ "crypto/aes/vpaes-x86.S" => [ ++ "crypto/aes/asm/vpaes-x86.pl" ++ ], ++ "crypto/aes/vpaes-x86_64.s" => [ ++ "crypto/aes/asm/vpaes-x86_64.pl" ++ ], ++ "crypto/alphacpuid.s" => [ ++ "crypto/alphacpuid.pl" ++ ], ++ "crypto/arm64cpuid.S" => [ ++ "crypto/arm64cpuid.pl" ++ ], ++ "crypto/armv4cpuid.S" => [ ++ "crypto/armv4cpuid.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/bf/asm/bf-586.pl" ++ ], ++ "crypto/bn/alpha-mont.S" => [ ++ "crypto/bn/asm/alpha-mont.pl" ++ ], ++ "crypto/bn/armv4-gf2m.S" => [ ++ "crypto/bn/asm/armv4-gf2m.pl" ++ ], ++ "crypto/bn/armv4-mont.S" => [ ++ "crypto/bn/asm/armv4-mont.pl" ++ ], ++ "crypto/bn/armv8-mont.S" => [ ++ "crypto/bn/asm/armv8-mont.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/bn/asm/bn-586.pl" ++ ], ++ "crypto/bn/bn-ia64.s" => [ ++ "crypto/bn/asm/ia64.S" ++ ], ++ "crypto/bn/bn-sw_64.S" => [ ++ "crypto/bn/asm/sw_64.pl" ++ ], ++ "crypto/bn/bn-ppc.s" => [ ++ "crypto/bn/asm/ppc.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/bn/asm/co-586.pl" ++ ], ++ "crypto/bn/ia64-mont.s" => [ ++ "crypto/bn/asm/ia64-mont.pl" ++ ], ++ "crypto/bn/sw_64-mont.S" => [ ++ "crypto/bn/asm/sw_64-mont.pl" ++ ], ++ "crypto/bn/parisc-mont.s" => [ ++ "crypto/bn/asm/parisc-mont.pl" ++ ], ++ "crypto/bn/ppc-mont.s" => [ ++ "crypto/bn/asm/ppc-mont.pl" ++ ], ++ "crypto/bn/ppc64-mont.s" => [ ++ "crypto/bn/asm/ppc64-mont.pl" ++ ], ++ "crypto/bn/rsaz-avx2.s" => [ ++ "crypto/bn/asm/rsaz-avx2.pl" ++ ], ++ "crypto/bn/rsaz-avx512.s" => [ ++ "crypto/bn/asm/rsaz-avx512.pl" ++ ], ++ "crypto/bn/rsaz-x86_64.s" => [ ++ "crypto/bn/asm/rsaz-x86_64.pl" ++ ], ++ "crypto/bn/s390x-gf2m.s" => [ ++ "crypto/bn/asm/s390x-gf2m.pl" ++ ], ++ "crypto/bn/s390x-mont.S" => [ ++ "crypto/bn/asm/s390x-mont.pl" ++ ], ++ "crypto/bn/sparct4-mont.S" => [ ++ "crypto/bn/asm/sparct4-mont.pl" ++ ], ++ "crypto/bn/sparcv9-gf2m.S" => [ ++ "crypto/bn/asm/sparcv9-gf2m.pl" ++ ], ++ "crypto/bn/sparcv9-mont.S" => [ ++ "crypto/bn/asm/sparcv9-mont.pl" ++ ], ++ "crypto/bn/sparcv9a-mont.S" => [ ++ "crypto/bn/asm/sparcv9a-mont.pl" ++ ], ++ "crypto/bn/vis3-mont.S" => [ ++ "crypto/bn/asm/vis3-mont.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/bn/asm/x86-gf2m.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/bn/asm/x86-mont.pl" ++ ], ++ "crypto/bn/x86_64-gf2m.s" => [ ++ "crypto/bn/asm/x86_64-gf2m.pl" ++ ], ++ "crypto/bn/x86_64-mont.s" => [ ++ "crypto/bn/asm/x86_64-mont.pl" ++ ], ++ "crypto/bn/x86_64-mont5.s" => [ ++ "crypto/bn/asm/x86_64-mont5.pl" ++ ], ++ "crypto/buildinf.h" => [ ++ "util/mkbuildinf.pl", ++ "\"\$(CC)", ++ "\$(LIB_CFLAGS)", ++ "\$(CPPFLAGS_Q)\"", ++ "\"\$(PLATFORM)\"" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/camellia/asm/cmll-x86.pl" ++ ], ++ "crypto/camellia/cmll-x86_64.s" => [ ++ "crypto/camellia/asm/cmll-x86_64.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/camellia/asm/cmllt4-sparcv9.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/cast/asm/cast-586.pl" ++ ], ++ "crypto/chacha/chacha-armv4.S" => [ ++ "crypto/chacha/asm/chacha-armv4.pl" ++ ], ++ "crypto/chacha/chacha-armv8.S" => [ ++ "crypto/chacha/asm/chacha-armv8.pl" ++ ], ++ "crypto/chacha/chacha-c64xplus.S" => [ ++ "crypto/chacha/asm/chacha-c64xplus.pl" ++ ], ++ "crypto/chacha/chacha-ia64.S" => [ ++ "crypto/chacha/asm/chacha-ia64.pl" ++ ], ++ "crypto/chacha/chacha-ia64.s" => [ ++ "crypto/chacha/chacha-ia64.S" ++ ], ++ "crypto/chacha/chacha-ppc.s" => [ ++ "crypto/chacha/asm/chacha-ppc.pl" ++ ], ++ "crypto/chacha/chacha-s390x.S" => [ ++ "crypto/chacha/asm/chacha-s390x.pl" ++ ], ++ "crypto/chacha/chacha-x86.S" => [ ++ "crypto/chacha/asm/chacha-x86.pl" ++ ], ++ "crypto/chacha/chacha-x86_64.s" => [ ++ "crypto/chacha/asm/chacha-x86_64.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/des/asm/crypt586.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/des/asm/des-586.pl" ++ ], ++ "crypto/des/des_enc-sparc.S" => [ ++ "crypto/des/asm/des_enc.m4" ++ ], ++ "crypto/des/dest4-sparcv9.S" => [ ++ "crypto/des/asm/dest4-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistp521-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv4.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv8.pl" ++ ], ++ "crypto/ec/ecp_nistz256-avx2.s" => [ ++ "crypto/ec/asm/ecp_nistz256-avx2.pl" ++ ], ++ "crypto/ec/ecp_nistz256-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.S" => [ ++ "crypto/ec/asm/ecp_nistz256-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86.S" => [ ++ "crypto/ec/asm/ecp_nistz256-x86.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86_64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ++ ], ++ "crypto/ec/x25519-ppc64.s" => [ ++ "crypto/ec/asm/x25519-ppc64.pl" ++ ], ++ "crypto/ec/x25519-x86_64.s" => [ ++ "crypto/ec/asm/x25519-x86_64.pl" ++ ], ++ "crypto/ia64cpuid.s" => [ ++ "crypto/ia64cpuid.S" ++ ], ++ "crypto/md5/md5-586.S" => [ ++ "crypto/md5/asm/md5-586.pl" ++ ], ++ "crypto/md5/md5-sparcv9.S" => [ ++ "crypto/md5/asm/md5-sparcv9.pl" ++ ], ++ "crypto/md5/md5-x86_64.s" => [ ++ "crypto/md5/asm/md5-x86_64.pl" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.S" => [ ++ "crypto/modes/asm/aes-gcm-armv8_64.pl" ++ ], ++ "crypto/modes/aesni-gcm-x86_64.s" => [ ++ "crypto/modes/asm/aesni-gcm-x86_64.pl" ++ ], ++ "crypto/modes/ghash-alpha.S" => [ ++ "crypto/modes/asm/ghash-alpha.pl" ++ ], ++ "crypto/modes/ghash-armv4.S" => [ ++ "crypto/modes/asm/ghash-armv4.pl" ++ ], ++ "crypto/modes/ghash-c64xplus.S" => [ ++ "crypto/modes/asm/ghash-c64xplus.pl" ++ ], ++ "crypto/modes/ghash-ia64.s" => [ ++ "crypto/modes/asm/ghash-ia64.pl" ++ ], ++ "crypto/modes/ghash-parisc.s" => [ ++ "crypto/modes/asm/ghash-parisc.pl" ++ ], ++ "crypto/modes/ghash-s390x.S" => [ ++ "crypto/modes/asm/ghash-s390x.pl" ++ ], ++ "crypto/modes/ghash-sparcv9.S" => [ ++ "crypto/modes/asm/ghash-sparcv9.pl" ++ ], ++ "crypto/modes/ghash-x86.S" => [ ++ "crypto/modes/asm/ghash-x86.pl" ++ ], ++ "crypto/modes/ghash-x86_64.s" => [ ++ "crypto/modes/asm/ghash-x86_64.pl" ++ ], ++ "crypto/modes/ghashp8-ppc.s" => [ ++ "crypto/modes/asm/ghashp8-ppc.pl" ++ ], ++ "crypto/modes/ghashv8-armx.S" => [ ++ "crypto/modes/asm/ghashv8-armx.pl" ++ ], ++ "crypto/pariscid.s" => [ ++ "crypto/pariscid.pl" ++ ], ++ "crypto/poly1305/poly1305-armv4.S" => [ ++ "crypto/poly1305/asm/poly1305-armv4.pl" ++ ], ++ "crypto/poly1305/poly1305-armv8.S" => [ ++ "crypto/poly1305/asm/poly1305-armv8.pl" ++ ], ++ "crypto/poly1305/poly1305-c64xplus.S" => [ ++ "crypto/poly1305/asm/poly1305-c64xplus.pl" ++ ], ++ "crypto/poly1305/poly1305-ia64.s" => [ ++ "crypto/poly1305/asm/poly1305-ia64.S" ++ ], ++ "crypto/poly1305/poly1305-sw_64.S" => [ ++ "crypto/poly1305/asm/poly1305-sw_64.pl" ++ ], ++ "crypto/poly1305/poly1305-ppc.s" => [ ++ "crypto/poly1305/asm/poly1305-ppc.pl" ++ ], ++ "crypto/poly1305/poly1305-ppcfp.s" => [ ++ "crypto/poly1305/asm/poly1305-ppcfp.pl" ++ ], ++ "crypto/poly1305/poly1305-s390x.S" => [ ++ "crypto/poly1305/asm/poly1305-s390x.pl" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.S" => [ ++ "crypto/poly1305/asm/poly1305-sparcv9.pl" ++ ], ++ "crypto/poly1305/poly1305-x86.S" => [ ++ "crypto/poly1305/asm/poly1305-x86.pl" ++ ], ++ "crypto/poly1305/poly1305-x86_64.s" => [ ++ "crypto/poly1305/asm/poly1305-x86_64.pl" ++ ], ++ "crypto/ppccpuid.s" => [ ++ "crypto/ppccpuid.pl" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/rc4/asm/rc4-586.pl" ++ ], ++ "crypto/rc4/rc4-c64xplus.s" => [ ++ "crypto/rc4/asm/rc4-c64xplus.pl" ++ ], ++ "crypto/rc4/rc4-md5-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-md5-x86_64.pl" ++ ], ++ "crypto/rc4/rc4-parisc.s" => [ ++ "crypto/rc4/asm/rc4-parisc.pl" ++ ], ++ "crypto/rc4/rc4-s390x.s" => [ ++ "crypto/rc4/asm/rc4-s390x.pl" ++ ], ++ "crypto/rc4/rc4-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-x86_64.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/ripemd/asm/rmd-586.pl" ++ ], ++ "crypto/s390xcpuid.S" => [ ++ "crypto/s390xcpuid.pl" ++ ], ++ "crypto/sha/keccak1600-armv4.S" => [ ++ "crypto/sha/asm/keccak1600-armv4.pl" ++ ], ++ "crypto/sha/keccak1600-armv8.S" => [ ++ "crypto/sha/asm/keccak1600-armv8.pl" ++ ], ++ "crypto/sha/keccak1600-avx2.S" => [ ++ "crypto/sha/asm/keccak1600-avx2.pl" ++ ], ++ "crypto/sha/keccak1600-avx512.S" => [ ++ "crypto/sha/asm/keccak1600-avx512.pl" ++ ], ++ "crypto/sha/keccak1600-avx512vl.S" => [ ++ "crypto/sha/asm/keccak1600-avx512vl.pl" ++ ], ++ "crypto/sha/keccak1600-c64x.S" => [ ++ "crypto/sha/asm/keccak1600-c64x.pl" ++ ], ++ "crypto/sha/keccak1600-mmx.S" => [ ++ "crypto/sha/asm/keccak1600-mmx.pl" ++ ], ++ "crypto/sha/keccak1600-ppc64.s" => [ ++ "crypto/sha/asm/keccak1600-ppc64.pl" ++ ], ++ "crypto/sha/keccak1600-s390x.S" => [ ++ "crypto/sha/asm/keccak1600-s390x.pl" ++ ], ++ "crypto/sha/keccak1600-x86_64.s" => [ ++ "crypto/sha/asm/keccak1600-x86_64.pl" ++ ], ++ "crypto/sha/keccak1600p8-ppc.S" => [ ++ "crypto/sha/asm/keccak1600p8-ppc.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/sha/asm/sha1-586.pl" ++ ], ++ "crypto/sha/sha1-alpha.S" => [ ++ "crypto/sha/asm/sha1-alpha.pl" ++ ], ++ "crypto/sha/sha1-armv4-large.S" => [ ++ "crypto/sha/asm/sha1-armv4-large.pl" ++ ], ++ "crypto/sha/sha1-armv8.S" => [ ++ "crypto/sha/asm/sha1-armv8.pl" ++ ], ++ "crypto/sha/sha1-c64xplus.S" => [ ++ "crypto/sha/asm/sha1-c64xplus.pl" ++ ], ++ "crypto/sha/sha1-ia64.s" => [ ++ "crypto/sha/asm/sha1-ia64.pl" ++ ], ++ "crypto/sha/sha1-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha1-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha1-sw_64.S" => [ ++ "crypto/sha/asm/sha1-sw_64.pl" ++ ], ++ "crypto/sha/sha1-parisc.s" => [ ++ "crypto/sha/asm/sha1-parisc.pl" ++ ], ++ "crypto/sha/sha1-ppc.s" => [ ++ "crypto/sha/asm/sha1-ppc.pl" ++ ], ++ "crypto/sha/sha1-s390x.S" => [ ++ "crypto/sha/asm/sha1-s390x.pl" ++ ], ++ "crypto/sha/sha1-sparcv9.S" => [ ++ "crypto/sha/asm/sha1-sparcv9.pl" ++ ], ++ "crypto/sha/sha1-sparcv9a.S" => [ ++ "crypto/sha/asm/sha1-sparcv9a.pl" ++ ], ++ "crypto/sha/sha1-thumb.S" => [ ++ "crypto/sha/asm/sha1-thumb.pl" ++ ], ++ "crypto/sha/sha1-x86_64.s" => [ ++ "crypto/sha/asm/sha1-x86_64.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/sha/asm/sha256-586.pl" ++ ], ++ "crypto/sha/sha256-armv4.S" => [ ++ "crypto/sha/asm/sha256-armv4.pl" ++ ], ++ "crypto/sha/sha256-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha256-c64xplus.S" => [ ++ "crypto/sha/asm/sha256-c64xplus.pl" ++ ], ++ "crypto/sha/sha256-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha256-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha256-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha256-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha256-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha256-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha256-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha256-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha256-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha256p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/sha/asm/sha512-586.pl" ++ ], ++ "crypto/sha/sha512-armv4.S" => [ ++ "crypto/sha/asm/sha512-armv4.pl" ++ ], ++ "crypto/sha/sha512-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha512-c64xplus.S" => [ ++ "crypto/sha/asm/sha512-c64xplus.pl" ++ ], ++ "crypto/sha/sha512-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha512-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha512-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha512-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha512-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha512-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha512-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha512p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/uplink-ia64.s" => [ ++ "ms/uplink-ia64.pl" ++ ], ++ "crypto/uplink-x86.S" => [ ++ "ms/uplink-x86.pl" ++ ], ++ "crypto/uplink-x86_64.s" => [ ++ "ms/uplink-x86_64.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/whrlpool/asm/wp-mmx.pl" ++ ], ++ "crypto/whrlpool/wp-x86_64.s" => [ ++ "crypto/whrlpool/asm/wp-x86_64.pl" ++ ], ++ "crypto/x86_64cpuid.s" => [ ++ "crypto/x86_64cpuid.pl" ++ ], ++ "crypto/x86cpuid.S" => [ ++ "crypto/x86cpuid.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "engines/e_padlock-x86.S" => [ ++ "engines/asm/e_padlock-x86.pl" ++ ], ++ "engines/e_padlock-x86_64.s" => [ ++ "engines/asm/e_padlock-x86_64.pl" ++ ], ++ "include/crypto/bn_conf.h" => [ ++ "include/crypto/bn_conf.h.in" ++ ], ++ "include/crypto/dso_conf.h" => [ ++ "include/crypto/dso_conf.h.in" ++ ], ++ "include/openssl/asn1.h" => [ ++ "include/openssl/asn1.h.in" ++ ], ++ "include/openssl/asn1t.h" => [ ++ "include/openssl/asn1t.h.in" ++ ], ++ "include/openssl/bio.h" => [ ++ "include/openssl/bio.h.in" ++ ], ++ "include/openssl/cmp.h" => [ ++ "include/openssl/cmp.h.in" ++ ], ++ "include/openssl/cms.h" => [ ++ "include/openssl/cms.h.in" ++ ], ++ "include/openssl/conf.h" => [ ++ "include/openssl/conf.h.in" ++ ], ++ "include/openssl/configuration.h" => [ ++ "include/openssl/configuration.h.in" ++ ], ++ "include/openssl/crmf.h" => [ ++ "include/openssl/crmf.h.in" ++ ], ++ "include/openssl/crypto.h" => [ ++ "include/openssl/crypto.h.in" ++ ], ++ "include/openssl/ct.h" => [ ++ "include/openssl/ct.h.in" ++ ], ++ "include/openssl/err.h" => [ ++ "include/openssl/err.h.in" ++ ], ++ "include/openssl/ess.h" => [ ++ "include/openssl/ess.h.in" ++ ], ++ "include/openssl/fipskey.h" => [ ++ "include/openssl/fipskey.h.in" ++ ], ++ "include/openssl/lhash.h" => [ ++ "include/openssl/lhash.h.in" ++ ], ++ "include/openssl/ocsp.h" => [ ++ "include/openssl/ocsp.h.in" ++ ], ++ "include/openssl/opensslv.h" => [ ++ "include/openssl/opensslv.h.in" ++ ], ++ "include/openssl/pkcs12.h" => [ ++ "include/openssl/pkcs12.h.in" ++ ], ++ "include/openssl/pkcs7.h" => [ ++ "include/openssl/pkcs7.h.in" ++ ], ++ "include/openssl/safestack.h" => [ ++ "include/openssl/safestack.h.in" ++ ], ++ "include/openssl/srp.h" => [ ++ "include/openssl/srp.h.in" ++ ], ++ "include/openssl/ssl.h" => [ ++ "include/openssl/ssl.h.in" ++ ], ++ "include/openssl/ui.h" => [ ++ "include/openssl/ui.h.in" ++ ], ++ "include/openssl/x509.h" => [ ++ "include/openssl/x509.h.in" ++ ], ++ "include/openssl/x509_vfy.h" => [ ++ "include/openssl/x509_vfy.h.in" ++ ], ++ "include/openssl/x509v3.h" => [ ++ "include/openssl/x509v3.h.in" ++ ], ++ "libcrypto.ld" => [ ++ "util/libcrypto.num", ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "util/libssl.num", ++ "libssl" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/der_digests_gen.c.in" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/der_dsa_gen.c.in" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/der_ec_gen.c.in" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/der_ecx_gen.c.in" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/der_rsa_gen.c.in" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/der_sm2_gen.c.in" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/der_wrap_gen.c.in" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/include/prov/der_digests.h.in" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/include/prov/der_dsa.h.in" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/include/prov/der_ec.h.in" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/include/prov/der_ecx.h.in" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/include/prov/der_rsa.h.in" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/include/prov/der_sm2.h.in" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/include/prov/der_wrap.h.in" ++ ], ++ "providers/fips.ld" => [ ++ "util/providers.num" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "util/mk-fipsmodule-cnf.pl", ++ "-module", ++ "\$(FIPSMODULE)", ++ "-section_name", ++ "fips_sect", ++ "-key", ++ "\$(FIPSKEY)" ++ ], ++ "providers/legacy.ld" => [ ++ "util/providers.num" ++ ], ++ "test/buildtest_aes.c" => [ ++ "test/generate_buildtest.pl", ++ "aes" ++ ], ++ "test/buildtest_async.c" => [ ++ "test/generate_buildtest.pl", ++ "async" ++ ], ++ "test/buildtest_blowfish.c" => [ ++ "test/generate_buildtest.pl", ++ "blowfish" ++ ], ++ "test/buildtest_bn.c" => [ ++ "test/generate_buildtest.pl", ++ "bn" ++ ], ++ "test/buildtest_buffer.c" => [ ++ "test/generate_buildtest.pl", ++ "buffer" ++ ], ++ "test/buildtest_camellia.c" => [ ++ "test/generate_buildtest.pl", ++ "camellia" ++ ], ++ "test/buildtest_cast.c" => [ ++ "test/generate_buildtest.pl", ++ "cast" ++ ], ++ "test/buildtest_cmac.c" => [ ++ "test/generate_buildtest.pl", ++ "cmac" ++ ], ++ "test/buildtest_cmp_util.c" => [ ++ "test/generate_buildtest.pl", ++ "cmp_util" ++ ], ++ "test/buildtest_conf_api.c" => [ ++ "test/generate_buildtest.pl", ++ "conf_api" ++ ], ++ "test/buildtest_conftypes.c" => [ ++ "test/generate_buildtest.pl", ++ "conftypes" ++ ], ++ "test/buildtest_core.c" => [ ++ "test/generate_buildtest.pl", ++ "core" ++ ], ++ "test/buildtest_core_dispatch.c" => [ ++ "test/generate_buildtest.pl", ++ "core_dispatch" ++ ], ++ "test/buildtest_core_names.c" => [ ++ "test/generate_buildtest.pl", ++ "core_names" ++ ], ++ "test/buildtest_core_object.c" => [ ++ "test/generate_buildtest.pl", ++ "core_object" ++ ], ++ "test/buildtest_cryptoerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "cryptoerr_legacy" ++ ], ++ "test/buildtest_decoder.c" => [ ++ "test/generate_buildtest.pl", ++ "decoder" ++ ], ++ "test/buildtest_des.c" => [ ++ "test/generate_buildtest.pl", ++ "des" ++ ], ++ "test/buildtest_dh.c" => [ ++ "test/generate_buildtest.pl", ++ "dh" ++ ], ++ "test/buildtest_dsa.c" => [ ++ "test/generate_buildtest.pl", ++ "dsa" ++ ], ++ "test/buildtest_dtls1.c" => [ ++ "test/generate_buildtest.pl", ++ "dtls1" ++ ], ++ "test/buildtest_e_os2.c" => [ ++ "test/generate_buildtest.pl", ++ "e_os2" ++ ], ++ "test/buildtest_ebcdic.c" => [ ++ "test/generate_buildtest.pl", ++ "ebcdic" ++ ], ++ "test/buildtest_ec.c" => [ ++ "test/generate_buildtest.pl", ++ "ec" ++ ], ++ "test/buildtest_ecdh.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdh" ++ ], ++ "test/buildtest_ecdsa.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdsa" ++ ], ++ "test/buildtest_encoder.c" => [ ++ "test/generate_buildtest.pl", ++ "encoder" ++ ], ++ "test/buildtest_engine.c" => [ ++ "test/generate_buildtest.pl", ++ "engine" ++ ], ++ "test/buildtest_evp.c" => [ ++ "test/generate_buildtest.pl", ++ "evp" ++ ], ++ "test/buildtest_fips_names.c" => [ ++ "test/generate_buildtest.pl", ++ "fips_names" ++ ], ++ "test/buildtest_hmac.c" => [ ++ "test/generate_buildtest.pl", ++ "hmac" ++ ], ++ "test/buildtest_http.c" => [ ++ "test/generate_buildtest.pl", ++ "http" ++ ], ++ "test/buildtest_idea.c" => [ ++ "test/generate_buildtest.pl", ++ "idea" ++ ], ++ "test/buildtest_kdf.c" => [ ++ "test/generate_buildtest.pl", ++ "kdf" ++ ], ++ "test/buildtest_macros.c" => [ ++ "test/generate_buildtest.pl", ++ "macros" ++ ], ++ "test/buildtest_md4.c" => [ ++ "test/generate_buildtest.pl", ++ "md4" ++ ], ++ "test/buildtest_md5.c" => [ ++ "test/generate_buildtest.pl", ++ "md5" ++ ], ++ "test/buildtest_mdc2.c" => [ ++ "test/generate_buildtest.pl", ++ "mdc2" ++ ], ++ "test/buildtest_modes.c" => [ ++ "test/generate_buildtest.pl", ++ "modes" ++ ], ++ "test/buildtest_obj_mac.c" => [ ++ "test/generate_buildtest.pl", ++ "obj_mac" ++ ], ++ "test/buildtest_objects.c" => [ ++ "test/generate_buildtest.pl", ++ "objects" ++ ], ++ "test/buildtest_ossl_typ.c" => [ ++ "test/generate_buildtest.pl", ++ "ossl_typ" ++ ], ++ "test/buildtest_param_build.c" => [ ++ "test/generate_buildtest.pl", ++ "param_build" ++ ], ++ "test/buildtest_params.c" => [ ++ "test/generate_buildtest.pl", ++ "params" ++ ], ++ "test/buildtest_pem.c" => [ ++ "test/generate_buildtest.pl", ++ "pem" ++ ], ++ "test/buildtest_pem2.c" => [ ++ "test/generate_buildtest.pl", ++ "pem2" ++ ], ++ "test/buildtest_prov_ssl.c" => [ ++ "test/generate_buildtest.pl", ++ "prov_ssl" ++ ], ++ "test/buildtest_provider.c" => [ ++ "test/generate_buildtest.pl", ++ "provider" ++ ], ++ "test/buildtest_quic.c" => [ ++ "test/generate_buildtest.pl", ++ "quic" ++ ], ++ "test/buildtest_rand.c" => [ ++ "test/generate_buildtest.pl", ++ "rand" ++ ], ++ "test/buildtest_rc2.c" => [ ++ "test/generate_buildtest.pl", ++ "rc2" ++ ], ++ "test/buildtest_rc4.c" => [ ++ "test/generate_buildtest.pl", ++ "rc4" ++ ], ++ "test/buildtest_ripemd.c" => [ ++ "test/generate_buildtest.pl", ++ "ripemd" ++ ], ++ "test/buildtest_rsa.c" => [ ++ "test/generate_buildtest.pl", ++ "rsa" ++ ], ++ "test/buildtest_seed.c" => [ ++ "test/generate_buildtest.pl", ++ "seed" ++ ], ++ "test/buildtest_self_test.c" => [ ++ "test/generate_buildtest.pl", ++ "self_test" ++ ], ++ "test/buildtest_sha.c" => [ ++ "test/generate_buildtest.pl", ++ "sha" ++ ], ++ "test/buildtest_srtp.c" => [ ++ "test/generate_buildtest.pl", ++ "srtp" ++ ], ++ "test/buildtest_ssl2.c" => [ ++ "test/generate_buildtest.pl", ++ "ssl2" ++ ], ++ "test/buildtest_sslerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "sslerr_legacy" ++ ], ++ "test/buildtest_stack.c" => [ ++ "test/generate_buildtest.pl", ++ "stack" ++ ], ++ "test/buildtest_store.c" => [ ++ "test/generate_buildtest.pl", ++ "store" ++ ], ++ "test/buildtest_symhacks.c" => [ ++ "test/generate_buildtest.pl", ++ "symhacks" ++ ], ++ "test/buildtest_tls1.c" => [ ++ "test/generate_buildtest.pl", ++ "tls1" ++ ], ++ "test/buildtest_ts.c" => [ ++ "test/generate_buildtest.pl", ++ "ts" ++ ], ++ "test/buildtest_txt_db.c" => [ ++ "test/generate_buildtest.pl", ++ "txt_db" ++ ], ++ "test/buildtest_types.c" => [ ++ "test/generate_buildtest.pl", ++ "types" ++ ], ++ "test/buildtest_whrlpool.c" => [ ++ "test/generate_buildtest.pl", ++ "whrlpool" ++ ], ++ "test/p_test.ld" => [ ++ "util/providers.num" ++ ], ++ "test/provider_internal_test.cnf" => [ ++ "test/provider_internal_test.cnf.in" ++ ] ++ }, ++ "htmldocs" => { ++ "man1" => [ ++ "doc/html/man1/CA.pl.html", ++ "doc/html/man1/openssl-asn1parse.html", ++ "doc/html/man1/openssl-ca.html", ++ "doc/html/man1/openssl-ciphers.html", ++ "doc/html/man1/openssl-cmds.html", ++ "doc/html/man1/openssl-cmp.html", ++ "doc/html/man1/openssl-cms.html", ++ "doc/html/man1/openssl-crl.html", ++ "doc/html/man1/openssl-crl2pkcs7.html", ++ "doc/html/man1/openssl-dgst.html", ++ "doc/html/man1/openssl-dhparam.html", ++ "doc/html/man1/openssl-dsa.html", ++ "doc/html/man1/openssl-dsaparam.html", ++ "doc/html/man1/openssl-ec.html", ++ "doc/html/man1/openssl-ecparam.html", ++ "doc/html/man1/openssl-enc.html", ++ "doc/html/man1/openssl-engine.html", ++ "doc/html/man1/openssl-errstr.html", ++ "doc/html/man1/openssl-fipsinstall.html", ++ "doc/html/man1/openssl-format-options.html", ++ "doc/html/man1/openssl-gendsa.html", ++ "doc/html/man1/openssl-genpkey.html", ++ "doc/html/man1/openssl-genrsa.html", ++ "doc/html/man1/openssl-info.html", ++ "doc/html/man1/openssl-kdf.html", ++ "doc/html/man1/openssl-list.html", ++ "doc/html/man1/openssl-mac.html", ++ "doc/html/man1/openssl-namedisplay-options.html", ++ "doc/html/man1/openssl-nseq.html", ++ "doc/html/man1/openssl-ocsp.html", ++ "doc/html/man1/openssl-passphrase-options.html", ++ "doc/html/man1/openssl-passwd.html", ++ "doc/html/man1/openssl-pkcs12.html", ++ "doc/html/man1/openssl-pkcs7.html", ++ "doc/html/man1/openssl-pkcs8.html", ++ "doc/html/man1/openssl-pkey.html", ++ "doc/html/man1/openssl-pkeyparam.html", ++ "doc/html/man1/openssl-pkeyutl.html", ++ "doc/html/man1/openssl-prime.html", ++ "doc/html/man1/openssl-rand.html", ++ "doc/html/man1/openssl-rehash.html", ++ "doc/html/man1/openssl-req.html", ++ "doc/html/man1/openssl-rsa.html", ++ "doc/html/man1/openssl-rsautl.html", ++ "doc/html/man1/openssl-s_client.html", ++ "doc/html/man1/openssl-s_server.html", ++ "doc/html/man1/openssl-s_time.html", ++ "doc/html/man1/openssl-sess_id.html", ++ "doc/html/man1/openssl-smime.html", ++ "doc/html/man1/openssl-speed.html", ++ "doc/html/man1/openssl-spkac.html", ++ "doc/html/man1/openssl-srp.html", ++ "doc/html/man1/openssl-storeutl.html", ++ "doc/html/man1/openssl-ts.html", ++ "doc/html/man1/openssl-verification-options.html", ++ "doc/html/man1/openssl-verify.html", ++ "doc/html/man1/openssl-version.html", ++ "doc/html/man1/openssl-x509.html", ++ "doc/html/man1/openssl.html", ++ "doc/html/man1/tsget.html" ++ ], ++ "man3" => [ ++ "doc/html/man3/ADMISSIONS.html", ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html", ++ "doc/html/man3/ASN1_INTEGER_get_int64.html", ++ "doc/html/man3/ASN1_INTEGER_new.html", ++ "doc/html/man3/ASN1_ITEM_lookup.html", ++ "doc/html/man3/ASN1_OBJECT_new.html", ++ "doc/html/man3/ASN1_STRING_TABLE_add.html", ++ "doc/html/man3/ASN1_STRING_length.html", ++ "doc/html/man3/ASN1_STRING_new.html", ++ "doc/html/man3/ASN1_STRING_print_ex.html", ++ "doc/html/man3/ASN1_TIME_set.html", ++ "doc/html/man3/ASN1_TYPE_get.html", ++ "doc/html/man3/ASN1_aux_cb.html", ++ "doc/html/man3/ASN1_generate_nconf.html", ++ "doc/html/man3/ASN1_item_d2i_bio.html", ++ "doc/html/man3/ASN1_item_new.html", ++ "doc/html/man3/ASN1_item_sign.html", ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html", ++ "doc/html/man3/ASYNC_start_job.html", ++ "doc/html/man3/BF_encrypt.html", ++ "doc/html/man3/BIO_ADDR.html", ++ "doc/html/man3/BIO_ADDRINFO.html", ++ "doc/html/man3/BIO_connect.html", ++ "doc/html/man3/BIO_ctrl.html", ++ "doc/html/man3/BIO_f_base64.html", ++ "doc/html/man3/BIO_f_buffer.html", ++ "doc/html/man3/BIO_f_cipher.html", ++ "doc/html/man3/BIO_f_md.html", ++ "doc/html/man3/BIO_f_null.html", ++ "doc/html/man3/BIO_f_prefix.html", ++ "doc/html/man3/BIO_f_readbuffer.html", ++ "doc/html/man3/BIO_f_ssl.html", ++ "doc/html/man3/BIO_find_type.html", ++ "doc/html/man3/BIO_get_data.html", ++ "doc/html/man3/BIO_get_ex_new_index.html", ++ "doc/html/man3/BIO_meth_new.html", ++ "doc/html/man3/BIO_new.html", ++ "doc/html/man3/BIO_new_CMS.html", ++ "doc/html/man3/BIO_parse_hostserv.html", ++ "doc/html/man3/BIO_printf.html", ++ "doc/html/man3/BIO_push.html", ++ "doc/html/man3/BIO_read.html", ++ "doc/html/man3/BIO_s_accept.html", ++ "doc/html/man3/BIO_s_bio.html", ++ "doc/html/man3/BIO_s_connect.html", ++ "doc/html/man3/BIO_s_core.html", ++ "doc/html/man3/BIO_s_fd.html", ++ "doc/html/man3/BIO_s_file.html", ++ "doc/html/man3/BIO_s_mem.html", ++ "doc/html/man3/BIO_s_null.html", ++ "doc/html/man3/BIO_s_socket.html", ++ "doc/html/man3/BIO_set_callback.html", ++ "doc/html/man3/BIO_should_retry.html", ++ "doc/html/man3/BIO_socket_wait.html", ++ "doc/html/man3/BN_BLINDING_new.html", ++ "doc/html/man3/BN_CTX_new.html", ++ "doc/html/man3/BN_CTX_start.html", ++ "doc/html/man3/BN_add.html", ++ "doc/html/man3/BN_add_word.html", ++ "doc/html/man3/BN_bn2bin.html", ++ "doc/html/man3/BN_cmp.html", ++ "doc/html/man3/BN_copy.html", ++ "doc/html/man3/BN_generate_prime.html", ++ "doc/html/man3/BN_mod_exp_mont.html", ++ "doc/html/man3/BN_mod_inverse.html", ++ "doc/html/man3/BN_mod_mul_montgomery.html", ++ "doc/html/man3/BN_mod_mul_reciprocal.html", ++ "doc/html/man3/BN_new.html", ++ "doc/html/man3/BN_num_bytes.html", ++ "doc/html/man3/BN_rand.html", ++ "doc/html/man3/BN_security_bits.html", ++ "doc/html/man3/BN_set_bit.html", ++ "doc/html/man3/BN_swap.html", ++ "doc/html/man3/BN_zero.html", ++ "doc/html/man3/BUF_MEM_new.html", ++ "doc/html/man3/CMS_EncryptedData_decrypt.html", ++ "doc/html/man3/CMS_EncryptedData_encrypt.html", ++ "doc/html/man3/CMS_EnvelopedData_create.html", ++ "doc/html/man3/CMS_add0_cert.html", ++ "doc/html/man3/CMS_add1_recipient_cert.html", ++ "doc/html/man3/CMS_add1_signer.html", ++ "doc/html/man3/CMS_compress.html", ++ "doc/html/man3/CMS_data_create.html", ++ "doc/html/man3/CMS_decrypt.html", ++ "doc/html/man3/CMS_digest_create.html", ++ "doc/html/man3/CMS_encrypt.html", ++ "doc/html/man3/CMS_final.html", ++ "doc/html/man3/CMS_get0_RecipientInfos.html", ++ "doc/html/man3/CMS_get0_SignerInfos.html", ++ "doc/html/man3/CMS_get0_type.html", ++ "doc/html/man3/CMS_get1_ReceiptRequest.html", ++ "doc/html/man3/CMS_sign.html", ++ "doc/html/man3/CMS_sign_receipt.html", ++ "doc/html/man3/CMS_uncompress.html", ++ "doc/html/man3/CMS_verify.html", ++ "doc/html/man3/CMS_verify_receipt.html", ++ "doc/html/man3/CONF_modules_free.html", ++ "doc/html/man3/CONF_modules_load_file.html", ++ "doc/html/man3/CRYPTO_THREAD_run_once.html", ++ "doc/html/man3/CRYPTO_get_ex_new_index.html", ++ "doc/html/man3/CRYPTO_memcmp.html", ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html", ++ "doc/html/man3/CTLOG_STORE_new.html", ++ "doc/html/man3/CTLOG_new.html", ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html", ++ "doc/html/man3/DEFINE_STACK_OF.html", ++ "doc/html/man3/DES_random_key.html", ++ "doc/html/man3/DH_generate_key.html", ++ "doc/html/man3/DH_generate_parameters.html", ++ "doc/html/man3/DH_get0_pqg.html", ++ "doc/html/man3/DH_get_1024_160.html", ++ "doc/html/man3/DH_meth_new.html", ++ "doc/html/man3/DH_new.html", ++ "doc/html/man3/DH_new_by_nid.html", ++ "doc/html/man3/DH_set_method.html", ++ "doc/html/man3/DH_size.html", ++ "doc/html/man3/DSA_SIG_new.html", ++ "doc/html/man3/DSA_do_sign.html", ++ "doc/html/man3/DSA_dup_DH.html", ++ "doc/html/man3/DSA_generate_key.html", ++ "doc/html/man3/DSA_generate_parameters.html", ++ "doc/html/man3/DSA_get0_pqg.html", ++ "doc/html/man3/DSA_meth_new.html", ++ "doc/html/man3/DSA_new.html", ++ "doc/html/man3/DSA_set_method.html", ++ "doc/html/man3/DSA_sign.html", ++ "doc/html/man3/DSA_size.html", ++ "doc/html/man3/DTLS_get_data_mtu.html", ++ "doc/html/man3/DTLS_set_timer_cb.html", ++ "doc/html/man3/DTLSv1_listen.html", ++ "doc/html/man3/ECDSA_SIG_new.html", ++ "doc/html/man3/ECPKParameters_print.html", ++ "doc/html/man3/EC_GFp_simple_method.html", ++ "doc/html/man3/EC_GROUP_copy.html", ++ "doc/html/man3/EC_GROUP_new.html", ++ "doc/html/man3/EC_KEY_get_enc_flags.html", ++ "doc/html/man3/EC_KEY_new.html", ++ "doc/html/man3/EC_POINT_add.html", ++ "doc/html/man3/EC_POINT_new.html", ++ "doc/html/man3/ENGINE_add.html", ++ "doc/html/man3/ERR_GET_LIB.html", ++ "doc/html/man3/ERR_clear_error.html", ++ "doc/html/man3/ERR_error_string.html", ++ "doc/html/man3/ERR_get_error.html", ++ "doc/html/man3/ERR_load_crypto_strings.html", ++ "doc/html/man3/ERR_load_strings.html", ++ "doc/html/man3/ERR_new.html", ++ "doc/html/man3/ERR_print_errors.html", ++ "doc/html/man3/ERR_put_error.html", ++ "doc/html/man3/ERR_remove_state.html", ++ "doc/html/man3/ERR_set_mark.html", ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html", ++ "doc/html/man3/EVP_BytesToKey.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html", ++ "doc/html/man3/EVP_CIPHER_meth_new.html", ++ "doc/html/man3/EVP_DigestInit.html", ++ "doc/html/man3/EVP_DigestSignInit.html", ++ "doc/html/man3/EVP_DigestVerifyInit.html", ++ "doc/html/man3/EVP_EncodeInit.html", ++ "doc/html/man3/EVP_EncryptInit.html", ++ "doc/html/man3/EVP_KDF.html", ++ "doc/html/man3/EVP_KEM_free.html", ++ "doc/html/man3/EVP_KEYEXCH_free.html", ++ "doc/html/man3/EVP_KEYMGMT.html", ++ "doc/html/man3/EVP_MAC.html", ++ "doc/html/man3/EVP_MD_meth_new.html", ++ "doc/html/man3/EVP_OpenInit.html", ++ "doc/html/man3/EVP_PBE_CipherInit.html", ++ "doc/html/man3/EVP_PKEY2PKCS8.html", ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html", ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html", ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", ++ "doc/html/man3/EVP_PKEY_CTX_new.html", ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html", ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html", ++ "doc/html/man3/EVP_PKEY_check.html", ++ "doc/html/man3/EVP_PKEY_copy_parameters.html", ++ "doc/html/man3/EVP_PKEY_decapsulate.html", ++ "doc/html/man3/EVP_PKEY_decrypt.html", ++ "doc/html/man3/EVP_PKEY_derive.html", ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html", ++ "doc/html/man3/EVP_PKEY_encapsulate.html", ++ "doc/html/man3/EVP_PKEY_encrypt.html", ++ "doc/html/man3/EVP_PKEY_fromdata.html", ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html", ++ "doc/html/man3/EVP_PKEY_get_field_type.html", ++ "doc/html/man3/EVP_PKEY_get_group_name.html", ++ "doc/html/man3/EVP_PKEY_get_size.html", ++ "doc/html/man3/EVP_PKEY_gettable_params.html", ++ "doc/html/man3/EVP_PKEY_is_a.html", ++ "doc/html/man3/EVP_PKEY_keygen.html", ++ "doc/html/man3/EVP_PKEY_meth_get_count.html", ++ "doc/html/man3/EVP_PKEY_meth_new.html", ++ "doc/html/man3/EVP_PKEY_new.html", ++ "doc/html/man3/EVP_PKEY_print_private.html", ++ "doc/html/man3/EVP_PKEY_set1_RSA.html", ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html", ++ "doc/html/man3/EVP_PKEY_set_type.html", ++ "doc/html/man3/EVP_PKEY_settable_params.html", ++ "doc/html/man3/EVP_PKEY_sign.html", ++ "doc/html/man3/EVP_PKEY_todata.html", ++ "doc/html/man3/EVP_PKEY_verify.html", ++ "doc/html/man3/EVP_PKEY_verify_recover.html", ++ "doc/html/man3/EVP_RAND.html", ++ "doc/html/man3/EVP_SIGNATURE.html", ++ "doc/html/man3/EVP_SealInit.html", ++ "doc/html/man3/EVP_SignInit.html", ++ "doc/html/man3/EVP_VerifyInit.html", ++ "doc/html/man3/EVP_aes_128_gcm.html", ++ "doc/html/man3/EVP_aria_128_gcm.html", ++ "doc/html/man3/EVP_bf_cbc.html", ++ "doc/html/man3/EVP_blake2b512.html", ++ "doc/html/man3/EVP_camellia_128_ecb.html", ++ "doc/html/man3/EVP_cast5_cbc.html", ++ "doc/html/man3/EVP_chacha20.html", ++ "doc/html/man3/EVP_des_cbc.html", ++ "doc/html/man3/EVP_desx_cbc.html", ++ "doc/html/man3/EVP_idea_cbc.html", ++ "doc/html/man3/EVP_md2.html", ++ "doc/html/man3/EVP_md4.html", ++ "doc/html/man3/EVP_md5.html", ++ "doc/html/man3/EVP_mdc2.html", ++ "doc/html/man3/EVP_rc2_cbc.html", ++ "doc/html/man3/EVP_rc4.html", ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html", ++ "doc/html/man3/EVP_ripemd160.html", ++ "doc/html/man3/EVP_seed_cbc.html", ++ "doc/html/man3/EVP_set_default_properties.html", ++ "doc/html/man3/EVP_sha1.html", ++ "doc/html/man3/EVP_sha224.html", ++ "doc/html/man3/EVP_sha3_224.html", ++ "doc/html/man3/EVP_sm3.html", ++ "doc/html/man3/EVP_sm4_cbc.html", ++ "doc/html/man3/EVP_whirlpool.html", ++ "doc/html/man3/HMAC.html", ++ "doc/html/man3/MD5.html", ++ "doc/html/man3/MDC2_Init.html", ++ "doc/html/man3/NCONF_new_ex.html", ++ "doc/html/man3/OBJ_nid2obj.html", ++ "doc/html/man3/OCSP_REQUEST_new.html", ++ "doc/html/man3/OCSP_cert_to_id.html", ++ "doc/html/man3/OCSP_request_add1_nonce.html", ++ "doc/html/man3/OCSP_resp_find_status.html", ++ "doc/html/man3/OCSP_response_status.html", ++ "doc/html/man3/OCSP_sendreq_new.html", ++ "doc/html/man3/OPENSSL_Applink.html", ++ "doc/html/man3/OPENSSL_FILE.html", ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html", ++ "doc/html/man3/OPENSSL_LH_stats.html", ++ "doc/html/man3/OPENSSL_config.html", ++ "doc/html/man3/OPENSSL_fork_prepare.html", ++ "doc/html/man3/OPENSSL_hexchar2int.html", ++ "doc/html/man3/OPENSSL_ia32cap.html", ++ "doc/html/man3/OPENSSL_init_crypto.html", ++ "doc/html/man3/OPENSSL_init_ssl.html", ++ "doc/html/man3/OPENSSL_instrument_bus.html", ++ "doc/html/man3/OPENSSL_load_builtin_modules.html", ++ "doc/html/man3/OPENSSL_malloc.html", ++ "doc/html/man3/OPENSSL_s390xcap.html", ++ "doc/html/man3/OPENSSL_secure_malloc.html", ++ "doc/html/man3/OPENSSL_strcasecmp.html", ++ "doc/html/man3/OSSL_CMP_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html", ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html", ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html", ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html", ++ "doc/html/man3/OSSL_CMP_exec_certreq.html", ++ "doc/html/man3/OSSL_CMP_log_open.html", ++ "doc/html/man3/OSSL_CMP_validate_msg.html", ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html", ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html", ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html", ++ "doc/html/man3/OSSL_DECODER.html", ++ "doc/html/man3/OSSL_DECODER_CTX.html", ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_DECODER_from_bio.html", ++ "doc/html/man3/OSSL_ENCODER.html", ++ "doc/html/man3/OSSL_ENCODER_CTX.html", ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_ENCODER_to_bio.html", ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html", ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html", ++ "doc/html/man3/OSSL_HTTP_parse_url.html", ++ "doc/html/man3/OSSL_HTTP_transfer.html", ++ "doc/html/man3/OSSL_LIB_CTX.html", ++ "doc/html/man3/OSSL_PARAM.html", ++ "doc/html/man3/OSSL_PARAM_BLD.html", ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html", ++ "doc/html/man3/OSSL_PARAM_dup.html", ++ "doc/html/man3/OSSL_PARAM_int.html", ++ "doc/html/man3/OSSL_PROVIDER.html", ++ "doc/html/man3/OSSL_SELF_TEST_new.html", ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html", ++ "doc/html/man3/OSSL_STORE_INFO.html", ++ "doc/html/man3/OSSL_STORE_LOADER.html", ++ "doc/html/man3/OSSL_STORE_SEARCH.html", ++ "doc/html/man3/OSSL_STORE_attach.html", ++ "doc/html/man3/OSSL_STORE_expect.html", ++ "doc/html/man3/OSSL_STORE_open.html", ++ "doc/html/man3/OSSL_trace_enabled.html", ++ "doc/html/man3/OSSL_trace_get_category_num.html", ++ "doc/html/man3/OSSL_trace_set_channel.html", ++ "doc/html/man3/OpenSSL_add_all_algorithms.html", ++ "doc/html/man3/OpenSSL_version.html", ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", ++ "doc/html/man3/PEM_bytes_read_bio.html", ++ "doc/html/man3/PEM_read.html", ++ "doc/html/man3/PEM_read_CMS.html", ++ "doc/html/man3/PEM_read_bio_PrivateKey.html", ++ "doc/html/man3/PEM_read_bio_ex.html", ++ "doc/html/man3/PEM_write_bio_CMS_stream.html", ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html", ++ "doc/html/man3/PKCS12_PBE_keyivgen.html", ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html", ++ "doc/html/man3/PKCS12_add_CSPName_asc.html", ++ "doc/html/man3/PKCS12_add_cert.html", ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html", ++ "doc/html/man3/PKCS12_add_localkeyid.html", ++ "doc/html/man3/PKCS12_add_safe.html", ++ "doc/html/man3/PKCS12_create.html", ++ "doc/html/man3/PKCS12_decrypt_skey.html", ++ "doc/html/man3/PKCS12_gen_mac.html", ++ "doc/html/man3/PKCS12_get_friendlyname.html", ++ "doc/html/man3/PKCS12_init.html", ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html", ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html", ++ "doc/html/man3/PKCS12_newpass.html", ++ "doc/html/man3/PKCS12_pack_p7encdata.html", ++ "doc/html/man3/PKCS12_parse.html", ++ "doc/html/man3/PKCS5_PBE_keyivgen.html", ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html", ++ "doc/html/man3/PKCS7_decrypt.html", ++ "doc/html/man3/PKCS7_encrypt.html", ++ "doc/html/man3/PKCS7_get_octet_string.html", ++ "doc/html/man3/PKCS7_sign.html", ++ "doc/html/man3/PKCS7_sign_add_signer.html", ++ "doc/html/man3/PKCS7_type_is_other.html", ++ "doc/html/man3/PKCS7_verify.html", ++ "doc/html/man3/PKCS8_encrypt.html", ++ "doc/html/man3/PKCS8_pkey_add1_attr.html", ++ "doc/html/man3/RAND_add.html", ++ "doc/html/man3/RAND_bytes.html", ++ "doc/html/man3/RAND_cleanup.html", ++ "doc/html/man3/RAND_egd.html", ++ "doc/html/man3/RAND_get0_primary.html", ++ "doc/html/man3/RAND_load_file.html", ++ "doc/html/man3/RAND_set_DRBG_type.html", ++ "doc/html/man3/RAND_set_rand_method.html", ++ "doc/html/man3/RC4_set_key.html", ++ "doc/html/man3/RIPEMD160_Init.html", ++ "doc/html/man3/RSA_blinding_on.html", ++ "doc/html/man3/RSA_check_key.html", ++ "doc/html/man3/RSA_generate_key.html", ++ "doc/html/man3/RSA_get0_key.html", ++ "doc/html/man3/RSA_meth_new.html", ++ "doc/html/man3/RSA_new.html", ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html", ++ "doc/html/man3/RSA_print.html", ++ "doc/html/man3/RSA_private_encrypt.html", ++ "doc/html/man3/RSA_public_encrypt.html", ++ "doc/html/man3/RSA_set_method.html", ++ "doc/html/man3/RSA_sign.html", ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html", ++ "doc/html/man3/RSA_size.html", ++ "doc/html/man3/SCT_new.html", ++ "doc/html/man3/SCT_print.html", ++ "doc/html/man3/SCT_validate.html", ++ "doc/html/man3/SHA256_Init.html", ++ "doc/html/man3/SMIME_read_ASN1.html", ++ "doc/html/man3/SMIME_read_CMS.html", ++ "doc/html/man3/SMIME_read_PKCS7.html", ++ "doc/html/man3/SMIME_write_ASN1.html", ++ "doc/html/man3/SMIME_write_CMS.html", ++ "doc/html/man3/SMIME_write_PKCS7.html", ++ "doc/html/man3/SRP_Calc_B.html", ++ "doc/html/man3/SRP_VBASE_new.html", ++ "doc/html/man3/SRP_create_verifier.html", ++ "doc/html/man3/SRP_user_pwd_new.html", ++ "doc/html/man3/SSL_CIPHER_get_name.html", ++ "doc/html/man3/SSL_COMP_add_compression_method.html", ++ "doc/html/man3/SSL_CONF_CTX_new.html", ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html", ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html", ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html", ++ "doc/html/man3/SSL_CONF_cmd.html", ++ "doc/html/man3/SSL_CONF_cmd_argv.html", ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_session.html", ++ "doc/html/man3/SSL_CTX_config.html", ++ "doc/html/man3/SSL_CTX_ctrl.html", ++ "doc/html/man3/SSL_CTX_dane_enable.html", ++ "doc/html/man3/SSL_CTX_flush_sessions.html", ++ "doc/html/man3/SSL_CTX_free.html", ++ "doc/html/man3/SSL_CTX_get0_param.html", ++ "doc/html/man3/SSL_CTX_get_verify_mode.html", ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html", ++ "doc/html/man3/SSL_CTX_load_verify_locations.html", ++ "doc/html/man3/SSL_CTX_new.html", ++ "doc/html/man3/SSL_CTX_sess_number.html", ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html", ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html", ++ "doc/html/man3/SSL_CTX_sessions.html", ++ "doc/html/man3/SSL_CTX_set0_CA_list.html", ++ "doc/html/man3/SSL_CTX_set1_curves.html", ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html", ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html", ++ "doc/html/man3/SSL_CTX_set_cipher_list.html", ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html", ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html", ++ "doc/html/man3/SSL_CTX_set_info_callback.html", ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html", ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html", ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html", ++ "doc/html/man3/SSL_CTX_set_mode.html", ++ "doc/html/man3/SSL_CTX_set_msg_callback.html", ++ "doc/html/man3/SSL_CTX_set_num_tickets.html", ++ "doc/html/man3/SSL_CTX_set_options.html", ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html", ++ "doc/html/man3/SSL_CTX_set_quic_method.html", ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html", ++ "doc/html/man3/SSL_CTX_set_read_ahead.html", ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html", ++ "doc/html/man3/SSL_CTX_set_security_level.html", ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html", ++ "doc/html/man3/SSL_CTX_set_session_id_context.html", ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html", ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html", ++ "doc/html/man3/SSL_CTX_set_srp_password.html", ++ "doc/html/man3/SSL_CTX_set_ssl_version.html", ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html", ++ "doc/html/man3/SSL_CTX_set_timeout.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html", ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html", ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html", ++ "doc/html/man3/SSL_CTX_set_verify.html", ++ "doc/html/man3/SSL_CTX_use_certificate.html", ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html", ++ "doc/html/man3/SSL_CTX_use_serverinfo.html", ++ "doc/html/man3/SSL_SESSION_free.html", ++ "doc/html/man3/SSL_SESSION_get0_cipher.html", ++ "doc/html/man3/SSL_SESSION_get0_hostname.html", ++ "doc/html/man3/SSL_SESSION_get0_id_context.html", ++ "doc/html/man3/SSL_SESSION_get0_peer.html", ++ "doc/html/man3/SSL_SESSION_get_compress_id.html", ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html", ++ "doc/html/man3/SSL_SESSION_get_time.html", ++ "doc/html/man3/SSL_SESSION_has_ticket.html", ++ "doc/html/man3/SSL_SESSION_is_resumable.html", ++ "doc/html/man3/SSL_SESSION_print.html", ++ "doc/html/man3/SSL_SESSION_set1_id.html", ++ "doc/html/man3/SSL_accept.html", ++ "doc/html/man3/SSL_alert_type_string.html", ++ "doc/html/man3/SSL_alloc_buffers.html", ++ "doc/html/man3/SSL_check_chain.html", ++ "doc/html/man3/SSL_clear.html", ++ "doc/html/man3/SSL_connect.html", ++ "doc/html/man3/SSL_do_handshake.html", ++ "doc/html/man3/SSL_export_keying_material.html", ++ "doc/html/man3/SSL_extension_supported.html", ++ "doc/html/man3/SSL_free.html", ++ "doc/html/man3/SSL_get0_peer_scts.html", ++ "doc/html/man3/SSL_get_SSL_CTX.html", ++ "doc/html/man3/SSL_get_all_async_fds.html", ++ "doc/html/man3/SSL_get_certificate.html", ++ "doc/html/man3/SSL_get_ciphers.html", ++ "doc/html/man3/SSL_get_client_random.html", ++ "doc/html/man3/SSL_get_current_cipher.html", ++ "doc/html/man3/SSL_get_default_timeout.html", ++ "doc/html/man3/SSL_get_error.html", ++ "doc/html/man3/SSL_get_extms_support.html", ++ "doc/html/man3/SSL_get_fd.html", ++ "doc/html/man3/SSL_get_peer_cert_chain.html", ++ "doc/html/man3/SSL_get_peer_certificate.html", ++ "doc/html/man3/SSL_get_peer_signature_nid.html", ++ "doc/html/man3/SSL_get_peer_tmp_key.html", ++ "doc/html/man3/SSL_get_psk_identity.html", ++ "doc/html/man3/SSL_get_rbio.html", ++ "doc/html/man3/SSL_get_session.html", ++ "doc/html/man3/SSL_get_shared_sigalgs.html", ++ "doc/html/man3/SSL_get_verify_result.html", ++ "doc/html/man3/SSL_get_version.html", ++ "doc/html/man3/SSL_group_to_name.html", ++ "doc/html/man3/SSL_in_init.html", ++ "doc/html/man3/SSL_key_update.html", ++ "doc/html/man3/SSL_library_init.html", ++ "doc/html/man3/SSL_load_client_CA_file.html", ++ "doc/html/man3/SSL_new.html", ++ "doc/html/man3/SSL_pending.html", ++ "doc/html/man3/SSL_read.html", ++ "doc/html/man3/SSL_read_early_data.html", ++ "doc/html/man3/SSL_rstate_string.html", ++ "doc/html/man3/SSL_session_reused.html", ++ "doc/html/man3/SSL_set1_host.html", ++ "doc/html/man3/SSL_set_async_callback.html", ++ "doc/html/man3/SSL_set_bio.html", ++ "doc/html/man3/SSL_set_connect_state.html", ++ "doc/html/man3/SSL_set_fd.html", ++ "doc/html/man3/SSL_set_retry_verify.html", ++ "doc/html/man3/SSL_set_session.html", ++ "doc/html/man3/SSL_set_shutdown.html", ++ "doc/html/man3/SSL_set_verify_result.html", ++ "doc/html/man3/SSL_shutdown.html", ++ "doc/html/man3/SSL_state_string.html", ++ "doc/html/man3/SSL_want.html", ++ "doc/html/man3/SSL_write.html", ++ "doc/html/man3/TS_RESP_CTX_new.html", ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html", ++ "doc/html/man3/UI_STRING.html", ++ "doc/html/man3/UI_UTIL_read_pw.html", ++ "doc/html/man3/UI_create_method.html", ++ "doc/html/man3/UI_new.html", ++ "doc/html/man3/X509V3_get_d2i.html", ++ "doc/html/man3/X509V3_set_ctx.html", ++ "doc/html/man3/X509_ALGOR_dup.html", ++ "doc/html/man3/X509_CRL_get0_by_serial.html", ++ "doc/html/man3/X509_EXTENSION_set_object.html", ++ "doc/html/man3/X509_LOOKUP.html", ++ "doc/html/man3/X509_LOOKUP_hash_dir.html", ++ "doc/html/man3/X509_LOOKUP_meth_new.html", ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html", ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html", ++ "doc/html/man3/X509_NAME_get0_der.html", ++ "doc/html/man3/X509_NAME_get_index_by_NID.html", ++ "doc/html/man3/X509_NAME_print_ex.html", ++ "doc/html/man3/X509_PUBKEY_new.html", ++ "doc/html/man3/X509_SIG_get0.html", ++ "doc/html/man3/X509_STORE_CTX_get_error.html", ++ "doc/html/man3/X509_STORE_CTX_new.html", ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", ++ "doc/html/man3/X509_STORE_add_cert.html", ++ "doc/html/man3/X509_STORE_get0_param.html", ++ "doc/html/man3/X509_STORE_new.html", ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html", ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html", ++ "doc/html/man3/X509_add_cert.html", ++ "doc/html/man3/X509_check_ca.html", ++ "doc/html/man3/X509_check_host.html", ++ "doc/html/man3/X509_check_issued.html", ++ "doc/html/man3/X509_check_private_key.html", ++ "doc/html/man3/X509_check_purpose.html", ++ "doc/html/man3/X509_cmp.html", ++ "doc/html/man3/X509_cmp_time.html", ++ "doc/html/man3/X509_digest.html", ++ "doc/html/man3/X509_dup.html", ++ "doc/html/man3/X509_get0_distinguishing_id.html", ++ "doc/html/man3/X509_get0_notBefore.html", ++ "doc/html/man3/X509_get0_signature.html", ++ "doc/html/man3/X509_get0_uids.html", ++ "doc/html/man3/X509_get_extension_flags.html", ++ "doc/html/man3/X509_get_pubkey.html", ++ "doc/html/man3/X509_get_serialNumber.html", ++ "doc/html/man3/X509_get_subject_name.html", ++ "doc/html/man3/X509_get_version.html", ++ "doc/html/man3/X509_load_http.html", ++ "doc/html/man3/X509_new.html", ++ "doc/html/man3/X509_sign.html", ++ "doc/html/man3/X509_verify.html", ++ "doc/html/man3/X509_verify_cert.html", ++ "doc/html/man3/X509v3_get_ext_by_NID.html", ++ "doc/html/man3/b2i_PVK_bio_ex.html", ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html", ++ "doc/html/man3/d2i_PrivateKey.html", ++ "doc/html/man3/d2i_RSAPrivateKey.html", ++ "doc/html/man3/d2i_SSL_SESSION.html", ++ "doc/html/man3/d2i_X509.html", ++ "doc/html/man3/i2d_CMS_bio_stream.html", ++ "doc/html/man3/i2d_PKCS7_bio_stream.html", ++ "doc/html/man3/i2d_re_X509_tbs.html", ++ "doc/html/man3/o2i_SCT_LIST.html", ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" ++ ], ++ "man5" => [ ++ "doc/html/man5/config.html", ++ "doc/html/man5/fips_config.html", ++ "doc/html/man5/x509v3_config.html" ++ ], ++ "man7" => [ ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html", ++ "doc/html/man7/EVP_CIPHER-AES.html", ++ "doc/html/man7/EVP_CIPHER-ARIA.html", ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html", ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html", ++ "doc/html/man7/EVP_CIPHER-CAST.html", ++ "doc/html/man7/EVP_CIPHER-CHACHA.html", ++ "doc/html/man7/EVP_CIPHER-DES.html", ++ "doc/html/man7/EVP_CIPHER-IDEA.html", ++ "doc/html/man7/EVP_CIPHER-RC2.html", ++ "doc/html/man7/EVP_CIPHER-RC4.html", ++ "doc/html/man7/EVP_CIPHER-RC5.html", ++ "doc/html/man7/EVP_CIPHER-SEED.html", ++ "doc/html/man7/EVP_CIPHER-SM4.html", ++ "doc/html/man7/EVP_KDF-HKDF.html", ++ "doc/html/man7/EVP_KDF-KB.html", ++ "doc/html/man7/EVP_KDF-KRB5KDF.html", ++ "doc/html/man7/EVP_KDF-PBKDF1.html", ++ "doc/html/man7/EVP_KDF-PBKDF2.html", ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html", ++ "doc/html/man7/EVP_KDF-SCRYPT.html", ++ "doc/html/man7/EVP_KDF-SS.html", ++ "doc/html/man7/EVP_KDF-SSHKDF.html", ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html", ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html", ++ "doc/html/man7/EVP_KDF-X942-ASN1.html", ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html", ++ "doc/html/man7/EVP_KDF-X963.html", ++ "doc/html/man7/EVP_KEM-RSA.html", ++ "doc/html/man7/EVP_KEYEXCH-DH.html", ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html", ++ "doc/html/man7/EVP_KEYEXCH-X25519.html", ++ "doc/html/man7/EVP_MAC-BLAKE2.html", ++ "doc/html/man7/EVP_MAC-CMAC.html", ++ "doc/html/man7/EVP_MAC-GMAC.html", ++ "doc/html/man7/EVP_MAC-HMAC.html", ++ "doc/html/man7/EVP_MAC-KMAC.html", ++ "doc/html/man7/EVP_MAC-Poly1305.html", ++ "doc/html/man7/EVP_MAC-Siphash.html", ++ "doc/html/man7/EVP_MD-BLAKE2.html", ++ "doc/html/man7/EVP_MD-MD2.html", ++ "doc/html/man7/EVP_MD-MD4.html", ++ "doc/html/man7/EVP_MD-MD5-SHA1.html", ++ "doc/html/man7/EVP_MD-MD5.html", ++ "doc/html/man7/EVP_MD-MDC2.html", ++ "doc/html/man7/EVP_MD-RIPEMD160.html", ++ "doc/html/man7/EVP_MD-SHA1.html", ++ "doc/html/man7/EVP_MD-SHA2.html", ++ "doc/html/man7/EVP_MD-SHA3.html", ++ "doc/html/man7/EVP_MD-SHAKE.html", ++ "doc/html/man7/EVP_MD-SM3.html", ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html", ++ "doc/html/man7/EVP_MD-common.html", ++ "doc/html/man7/EVP_PKEY-DH.html", ++ "doc/html/man7/EVP_PKEY-DSA.html", ++ "doc/html/man7/EVP_PKEY-EC.html", ++ "doc/html/man7/EVP_PKEY-FFC.html", ++ "doc/html/man7/EVP_PKEY-HMAC.html", ++ "doc/html/man7/EVP_PKEY-RSA.html", ++ "doc/html/man7/EVP_PKEY-SM2.html", ++ "doc/html/man7/EVP_PKEY-X25519.html", ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html", ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html", ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html", ++ "doc/html/man7/EVP_RAND-SEED-SRC.html", ++ "doc/html/man7/EVP_RAND-TEST-RAND.html", ++ "doc/html/man7/EVP_RAND.html", ++ "doc/html/man7/EVP_SIGNATURE-DSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html", ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html", ++ "doc/html/man7/EVP_SIGNATURE-RSA.html", ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html", ++ "doc/html/man7/OSSL_PROVIDER-base.html", ++ "doc/html/man7/OSSL_PROVIDER-default.html", ++ "doc/html/man7/OSSL_PROVIDER-legacy.html", ++ "doc/html/man7/OSSL_PROVIDER-null.html", ++ "doc/html/man7/RAND.html", ++ "doc/html/man7/RSA-PSS.html", ++ "doc/html/man7/X25519.html", ++ "doc/html/man7/bio.html", ++ "doc/html/man7/crypto.html", ++ "doc/html/man7/ct.html", ++ "doc/html/man7/des_modes.html", ++ "doc/html/man7/evp.html", ++ "doc/html/man7/fips_module.html", ++ "doc/html/man7/life_cycle-cipher.html", ++ "doc/html/man7/life_cycle-digest.html", ++ "doc/html/man7/life_cycle-kdf.html", ++ "doc/html/man7/life_cycle-mac.html", ++ "doc/html/man7/life_cycle-pkey.html", ++ "doc/html/man7/life_cycle-rand.html", ++ "doc/html/man7/migration_guide.html", ++ "doc/html/man7/openssl-core.h.html", ++ "doc/html/man7/openssl-core_dispatch.h.html", ++ "doc/html/man7/openssl-core_names.h.html", ++ "doc/html/man7/openssl-env.html", ++ "doc/html/man7/openssl-glossary.html", ++ "doc/html/man7/openssl-threads.html", ++ "doc/html/man7/openssl_user_macros.html", ++ "doc/html/man7/ossl_store-file.html", ++ "doc/html/man7/ossl_store.html", ++ "doc/html/man7/passphrase-encoding.html", ++ "doc/html/man7/property.html", ++ "doc/html/man7/provider-asym_cipher.html", ++ "doc/html/man7/provider-base.html", ++ "doc/html/man7/provider-cipher.html", ++ "doc/html/man7/provider-decoder.html", ++ "doc/html/man7/provider-digest.html", ++ "doc/html/man7/provider-encoder.html", ++ "doc/html/man7/provider-kdf.html", ++ "doc/html/man7/provider-kem.html", ++ "doc/html/man7/provider-keyexch.html", ++ "doc/html/man7/provider-keymgmt.html", ++ "doc/html/man7/provider-mac.html", ++ "doc/html/man7/provider-object.html", ++ "doc/html/man7/provider-rand.html", ++ "doc/html/man7/provider-signature.html", ++ "doc/html/man7/provider-storemgmt.html", ++ "doc/html/man7/provider.html", ++ "doc/html/man7/proxy-certificates.html", ++ "doc/html/man7/ssl.html", ++ "doc/html/man7/x509.html" ++ ] ++ }, ++ "imagedocs" => { ++ "man7" => [ ++ "doc/man7/img/cipher.png", ++ "doc/man7/img/digest.png", ++ "doc/man7/img/kdf.png", ++ "doc/man7/img/mac.png", ++ "doc/man7/img/pkey.png", ++ "doc/man7/img/rand.png" ++ ] ++ }, ++ "includes" => { ++ "apps/asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/ca.o" => [ ++ "apps" ++ ], ++ "apps/ciphers.o" => [ ++ "apps" ++ ], ++ "apps/cmp.o" => [ ++ "apps" ++ ], ++ "apps/cms.o" => [ ++ "apps" ++ ], ++ "apps/crl.o" => [ ++ "apps" ++ ], ++ "apps/crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/dgst.o" => [ ++ "apps" ++ ], ++ "apps/dhparam.o" => [ ++ "apps" ++ ], ++ "apps/dsa.o" => [ ++ "apps" ++ ], ++ "apps/dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/ec.o" => [ ++ "apps" ++ ], ++ "apps/ecparam.o" => [ ++ "apps" ++ ], ++ "apps/enc.o" => [ ++ "apps" ++ ], ++ "apps/engine.o" => [ ++ "apps" ++ ], ++ "apps/errstr.o" => [ ++ "apps" ++ ], ++ "apps/fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/gendsa.o" => [ ++ "apps" ++ ], ++ "apps/genpkey.o" => [ ++ "apps" ++ ], ++ "apps/genrsa.o" => [ ++ "apps" ++ ], ++ "apps/info.o" => [ ++ "apps" ++ ], ++ "apps/kdf.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/libapps.a" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/list.o" => [ ++ "apps" ++ ], ++ "apps/mac.o" => [ ++ "apps" ++ ], ++ "apps/nseq.o" => [ ++ "apps" ++ ], ++ "apps/ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps" ++ ], ++ "apps/openssl.o" => [ ++ "apps" ++ ], ++ "apps/passwd.o" => [ ++ "apps" ++ ], ++ "apps/pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/pkey.o" => [ ++ "apps" ++ ], ++ "apps/pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/prime.o" => [ ++ "apps" ++ ], ++ "apps/progs.c" => [ ++ "." ++ ], ++ "apps/progs.o" => [ ++ "apps" ++ ], ++ "apps/rand.o" => [ ++ "apps" ++ ], ++ "apps/rehash.o" => [ ++ "apps" ++ ], ++ "apps/req.o" => [ ++ "apps" ++ ], ++ "apps/rsa.o" => [ ++ "apps" ++ ], ++ "apps/rsautl.o" => [ ++ "apps" ++ ], ++ "apps/s_client.o" => [ ++ "apps" ++ ], ++ "apps/s_server.o" => [ ++ "apps" ++ ], ++ "apps/s_time.o" => [ ++ "apps" ++ ], ++ "apps/sess_id.o" => [ ++ "apps" ++ ], ++ "apps/smime.o" => [ ++ "apps" ++ ], ++ "apps/speed.o" => [ ++ "apps" ++ ], ++ "apps/spkac.o" => [ ++ "apps" ++ ], ++ "apps/srp.o" => [ ++ "apps" ++ ], ++ "apps/storeutl.o" => [ ++ "apps" ++ ], ++ "apps/ts.o" => [ ++ "apps" ++ ], ++ "apps/verify.o" => [ ++ "apps" ++ ], ++ "apps/version.o" => [ ++ "apps" ++ ], ++ "apps/x509.o" => [ ++ "apps" ++ ], ++ "crypto/aes/aes-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesfx-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/bsaes-armv7.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/libcrypto-lib-aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/libfips-lib-aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/arm64cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/armv4cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv8-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/liblegacy-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparct4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9a-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/vis3-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/cpuid.o" => [ ++ "." ++ ], ++ "crypto/cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/des/dest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_s390x_nistp.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/info.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/md5/md5-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghashv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/s390xcpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/keccak1600-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv4-large.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sparcv9.o" => [ ++ "crypto" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc" ++ ], ++ "fuzz/asn1-test" => [ ++ "include" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "include" ++ ], ++ "fuzz/bignum-test" => [ ++ "include" ++ ], ++ "fuzz/bndiv-test" => [ ++ "include" ++ ], ++ "fuzz/client-test" => [ ++ "include" ++ ], ++ "fuzz/cmp-test" => [ ++ "include" ++ ], ++ "fuzz/cms-test" => [ ++ "include" ++ ], ++ "fuzz/conf-test" => [ ++ "include" ++ ], ++ "fuzz/crl-test" => [ ++ "include" ++ ], ++ "fuzz/ct-test" => [ ++ "include" ++ ], ++ "fuzz/server-test" => [ ++ "include" ++ ], ++ "fuzz/x509-test" => [ ++ "include" ++ ], ++ "libcrypto" => [ ++ ".", ++ "include", ++ "providers/common/include", ++ "providers/implementations/include" ++ ], ++ "libcrypto.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "libssl" => [ ++ ".", ++ "include" ++ ], ++ "libssl.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der" ++ ], ++ "providers/fips" => [ ++ "include" ++ ], ++ "providers/implementations/encode_decode/encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/legacy" => [ ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libcommon.a" => [ ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libdefault.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libfips.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/liblegacy.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "test/aborttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/acvp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/aesgcmtest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/afalgtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/algorithmid_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_decode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_encode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_string_table_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynciotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynctest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bad_dtls_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_callback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_core_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_enc_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_memleak_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_prefix_text" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bioprinttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bn_internal_test" => [ ++ ".", ++ "include", ++ "crypto/bn", ++ "apps/include" ++ ], ++ "test/bntest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/buildtest_c_aes" => [ ++ "include" ++ ], ++ "test/buildtest_c_async" => [ ++ "include" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "include" ++ ], ++ "test/buildtest_c_bn" => [ ++ "include" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "include" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "include" ++ ], ++ "test/buildtest_c_cast" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "include" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "include" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "include" ++ ], ++ "test/buildtest_c_core" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "include" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_des" => [ ++ "include" ++ ], ++ "test/buildtest_c_dh" => [ ++ "include" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "include" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "include" ++ ], ++ "test/buildtest_c_ec" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_engine" => [ ++ "include" ++ ], ++ "test/buildtest_c_evp" => [ ++ "include" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_http" => [ ++ "include" ++ ], ++ "test/buildtest_c_idea" => [ ++ "include" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "include" ++ ], ++ "test/buildtest_c_macros" => [ ++ "include" ++ ], ++ "test/buildtest_c_md4" => [ ++ "include" ++ ], ++ "test/buildtest_c_md5" => [ ++ "include" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_modes" => [ ++ "include" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "include" ++ ], ++ "test/buildtest_c_objects" => [ ++ "include" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "include" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "include" ++ ], ++ "test/buildtest_c_params" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "include" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "include" ++ ], ++ "test/buildtest_c_provider" => [ ++ "include" ++ ], ++ "test/buildtest_c_quic" => [ ++ "include" ++ ], ++ "test/buildtest_c_rand" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "include" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "include" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_seed" => [ ++ "include" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "include" ++ ], ++ "test/buildtest_c_sha" => [ ++ "include" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "include" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "include" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_stack" => [ ++ "include" ++ ], ++ "test/buildtest_c_store" => [ ++ "include" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "include" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_ts" => [ ++ "include" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "include" ++ ], ++ "test/buildtest_c_types" => [ ++ "include" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "include" ++ ], ++ "test/casttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/chacha_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipher_overhead_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipherbytes_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cipherlist_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ciphername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/clienthellotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_asn_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_client_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_ctx_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_hdr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_msg_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_protect_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_server_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_status_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_vfy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmsapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/conf_include_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/confdump" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/constant_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/context_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/crltest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ct_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ctype_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/curve448_internal_test" => [ ++ ".", ++ "include", ++ "apps/include", ++ "crypto/ec/curve448" ++ ], ++ "test/d2i_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/danetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/defltfips_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/destest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dhtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/drbgtest" => [ ++ "include", ++ "apps/include", ++ "providers/common/include" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtls_mtu_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/dtlstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtlsv1listentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ec_internal_test" => [ ++ "include", ++ "crypto/ec", ++ "apps/include" ++ ], ++ "test/ecdsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ecstresstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ectest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/endecode_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/endecoder_legacy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/enginetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/errtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test2" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_libctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exdatatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/fatalerrtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ffc_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/gmdifftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/hexstr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/hmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/http_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ideatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/igetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/keymgmt_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/lhash_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/libtestutil.a" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/localetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/memleaktest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/modes_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/namemap_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ocspapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ossl_store_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/p_test" => [ ++ "include", ++ "." ++ ], ++ "test/packettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/param_build_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_api_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_conversion_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/pbelutest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pbetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pem_read_depr_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs12_format_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs7_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/poly1305_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/property_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/prov_config_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provfetchtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_fallback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_internal_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/provider_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/rand_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rand_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc4test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc5test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/recordlentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_complex" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_mp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ ".", ++ "include", ++ "crypto/rsa", ++ "apps/include" ++ ], ++ "test/rsa_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/secmemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/servername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sha_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/siphash_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sm2_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm3_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm4_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sparse_array_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/srptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_old_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslapitest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/sslbuffertest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslcorrupttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/stack_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sysdefaulttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/test_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest_fips" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/time_offset_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13ccstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13encryptiontest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/uitest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/upcallstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/user_property_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3ext" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3nametest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/verify_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/versions" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/wpackettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/x509_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509aux" => [ ++ "include", ++ "apps/include" ++ ], ++ "util/wrap.pl" => [ ++ "." ++ ] ++ }, ++ "ldadd" => {}, ++ "libraries" => [ ++ "apps/libapps.a", ++ "libcrypto", ++ "libssl", ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a", ++ "test/libtestutil.a" ++ ], ++ "mandocs" => { ++ "man1" => [ ++ "doc/man/man1/CA.pl.1", ++ "doc/man/man1/openssl-asn1parse.1", ++ "doc/man/man1/openssl-ca.1", ++ "doc/man/man1/openssl-ciphers.1", ++ "doc/man/man1/openssl-cmds.1", ++ "doc/man/man1/openssl-cmp.1", ++ "doc/man/man1/openssl-cms.1", ++ "doc/man/man1/openssl-crl.1", ++ "doc/man/man1/openssl-crl2pkcs7.1", ++ "doc/man/man1/openssl-dgst.1", ++ "doc/man/man1/openssl-dhparam.1", ++ "doc/man/man1/openssl-dsa.1", ++ "doc/man/man1/openssl-dsaparam.1", ++ "doc/man/man1/openssl-ec.1", ++ "doc/man/man1/openssl-ecparam.1", ++ "doc/man/man1/openssl-enc.1", ++ "doc/man/man1/openssl-engine.1", ++ "doc/man/man1/openssl-errstr.1", ++ "doc/man/man1/openssl-fipsinstall.1", ++ "doc/man/man1/openssl-format-options.1", ++ "doc/man/man1/openssl-gendsa.1", ++ "doc/man/man1/openssl-genpkey.1", ++ "doc/man/man1/openssl-genrsa.1", ++ "doc/man/man1/openssl-info.1", ++ "doc/man/man1/openssl-kdf.1", ++ "doc/man/man1/openssl-list.1", ++ "doc/man/man1/openssl-mac.1", ++ "doc/man/man1/openssl-namedisplay-options.1", ++ "doc/man/man1/openssl-nseq.1", ++ "doc/man/man1/openssl-ocsp.1", ++ "doc/man/man1/openssl-passphrase-options.1", ++ "doc/man/man1/openssl-passwd.1", ++ "doc/man/man1/openssl-pkcs12.1", ++ "doc/man/man1/openssl-pkcs7.1", ++ "doc/man/man1/openssl-pkcs8.1", ++ "doc/man/man1/openssl-pkey.1", ++ "doc/man/man1/openssl-pkeyparam.1", ++ "doc/man/man1/openssl-pkeyutl.1", ++ "doc/man/man1/openssl-prime.1", ++ "doc/man/man1/openssl-rand.1", ++ "doc/man/man1/openssl-rehash.1", ++ "doc/man/man1/openssl-req.1", ++ "doc/man/man1/openssl-rsa.1", ++ "doc/man/man1/openssl-rsautl.1", ++ "doc/man/man1/openssl-s_client.1", ++ "doc/man/man1/openssl-s_server.1", ++ "doc/man/man1/openssl-s_time.1", ++ "doc/man/man1/openssl-sess_id.1", ++ "doc/man/man1/openssl-smime.1", ++ "doc/man/man1/openssl-speed.1", ++ "doc/man/man1/openssl-spkac.1", ++ "doc/man/man1/openssl-srp.1", ++ "doc/man/man1/openssl-storeutl.1", ++ "doc/man/man1/openssl-ts.1", ++ "doc/man/man1/openssl-verification-options.1", ++ "doc/man/man1/openssl-verify.1", ++ "doc/man/man1/openssl-version.1", ++ "doc/man/man1/openssl-x509.1", ++ "doc/man/man1/openssl.1", ++ "doc/man/man1/tsget.1" ++ ], ++ "man3" => [ ++ "doc/man/man3/ADMISSIONS.3", ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3", ++ "doc/man/man3/ASN1_INTEGER_get_int64.3", ++ "doc/man/man3/ASN1_INTEGER_new.3", ++ "doc/man/man3/ASN1_ITEM_lookup.3", ++ "doc/man/man3/ASN1_OBJECT_new.3", ++ "doc/man/man3/ASN1_STRING_TABLE_add.3", ++ "doc/man/man3/ASN1_STRING_length.3", ++ "doc/man/man3/ASN1_STRING_new.3", ++ "doc/man/man3/ASN1_STRING_print_ex.3", ++ "doc/man/man3/ASN1_TIME_set.3", ++ "doc/man/man3/ASN1_TYPE_get.3", ++ "doc/man/man3/ASN1_aux_cb.3", ++ "doc/man/man3/ASN1_generate_nconf.3", ++ "doc/man/man3/ASN1_item_d2i_bio.3", ++ "doc/man/man3/ASN1_item_new.3", ++ "doc/man/man3/ASN1_item_sign.3", ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3", ++ "doc/man/man3/ASYNC_start_job.3", ++ "doc/man/man3/BF_encrypt.3", ++ "doc/man/man3/BIO_ADDR.3", ++ "doc/man/man3/BIO_ADDRINFO.3", ++ "doc/man/man3/BIO_connect.3", ++ "doc/man/man3/BIO_ctrl.3", ++ "doc/man/man3/BIO_f_base64.3", ++ "doc/man/man3/BIO_f_buffer.3", ++ "doc/man/man3/BIO_f_cipher.3", ++ "doc/man/man3/BIO_f_md.3", ++ "doc/man/man3/BIO_f_null.3", ++ "doc/man/man3/BIO_f_prefix.3", ++ "doc/man/man3/BIO_f_readbuffer.3", ++ "doc/man/man3/BIO_f_ssl.3", ++ "doc/man/man3/BIO_find_type.3", ++ "doc/man/man3/BIO_get_data.3", ++ "doc/man/man3/BIO_get_ex_new_index.3", ++ "doc/man/man3/BIO_meth_new.3", ++ "doc/man/man3/BIO_new.3", ++ "doc/man/man3/BIO_new_CMS.3", ++ "doc/man/man3/BIO_parse_hostserv.3", ++ "doc/man/man3/BIO_printf.3", ++ "doc/man/man3/BIO_push.3", ++ "doc/man/man3/BIO_read.3", ++ "doc/man/man3/BIO_s_accept.3", ++ "doc/man/man3/BIO_s_bio.3", ++ "doc/man/man3/BIO_s_connect.3", ++ "doc/man/man3/BIO_s_core.3", ++ "doc/man/man3/BIO_s_fd.3", ++ "doc/man/man3/BIO_s_file.3", ++ "doc/man/man3/BIO_s_mem.3", ++ "doc/man/man3/BIO_s_null.3", ++ "doc/man/man3/BIO_s_socket.3", ++ "doc/man/man3/BIO_set_callback.3", ++ "doc/man/man3/BIO_should_retry.3", ++ "doc/man/man3/BIO_socket_wait.3", ++ "doc/man/man3/BN_BLINDING_new.3", ++ "doc/man/man3/BN_CTX_new.3", ++ "doc/man/man3/BN_CTX_start.3", ++ "doc/man/man3/BN_add.3", ++ "doc/man/man3/BN_add_word.3", ++ "doc/man/man3/BN_bn2bin.3", ++ "doc/man/man3/BN_cmp.3", ++ "doc/man/man3/BN_copy.3", ++ "doc/man/man3/BN_generate_prime.3", ++ "doc/man/man3/BN_mod_exp_mont.3", ++ "doc/man/man3/BN_mod_inverse.3", ++ "doc/man/man3/BN_mod_mul_montgomery.3", ++ "doc/man/man3/BN_mod_mul_reciprocal.3", ++ "doc/man/man3/BN_new.3", ++ "doc/man/man3/BN_num_bytes.3", ++ "doc/man/man3/BN_rand.3", ++ "doc/man/man3/BN_security_bits.3", ++ "doc/man/man3/BN_set_bit.3", ++ "doc/man/man3/BN_swap.3", ++ "doc/man/man3/BN_zero.3", ++ "doc/man/man3/BUF_MEM_new.3", ++ "doc/man/man3/CMS_EncryptedData_decrypt.3", ++ "doc/man/man3/CMS_EncryptedData_encrypt.3", ++ "doc/man/man3/CMS_EnvelopedData_create.3", ++ "doc/man/man3/CMS_add0_cert.3", ++ "doc/man/man3/CMS_add1_recipient_cert.3", ++ "doc/man/man3/CMS_add1_signer.3", ++ "doc/man/man3/CMS_compress.3", ++ "doc/man/man3/CMS_data_create.3", ++ "doc/man/man3/CMS_decrypt.3", ++ "doc/man/man3/CMS_digest_create.3", ++ "doc/man/man3/CMS_encrypt.3", ++ "doc/man/man3/CMS_final.3", ++ "doc/man/man3/CMS_get0_RecipientInfos.3", ++ "doc/man/man3/CMS_get0_SignerInfos.3", ++ "doc/man/man3/CMS_get0_type.3", ++ "doc/man/man3/CMS_get1_ReceiptRequest.3", ++ "doc/man/man3/CMS_sign.3", ++ "doc/man/man3/CMS_sign_receipt.3", ++ "doc/man/man3/CMS_uncompress.3", ++ "doc/man/man3/CMS_verify.3", ++ "doc/man/man3/CMS_verify_receipt.3", ++ "doc/man/man3/CONF_modules_free.3", ++ "doc/man/man3/CONF_modules_load_file.3", ++ "doc/man/man3/CRYPTO_THREAD_run_once.3", ++ "doc/man/man3/CRYPTO_get_ex_new_index.3", ++ "doc/man/man3/CRYPTO_memcmp.3", ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3", ++ "doc/man/man3/CTLOG_STORE_new.3", ++ "doc/man/man3/CTLOG_new.3", ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3", ++ "doc/man/man3/DEFINE_STACK_OF.3", ++ "doc/man/man3/DES_random_key.3", ++ "doc/man/man3/DH_generate_key.3", ++ "doc/man/man3/DH_generate_parameters.3", ++ "doc/man/man3/DH_get0_pqg.3", ++ "doc/man/man3/DH_get_1024_160.3", ++ "doc/man/man3/DH_meth_new.3", ++ "doc/man/man3/DH_new.3", ++ "doc/man/man3/DH_new_by_nid.3", ++ "doc/man/man3/DH_set_method.3", ++ "doc/man/man3/DH_size.3", ++ "doc/man/man3/DSA_SIG_new.3", ++ "doc/man/man3/DSA_do_sign.3", ++ "doc/man/man3/DSA_dup_DH.3", ++ "doc/man/man3/DSA_generate_key.3", ++ "doc/man/man3/DSA_generate_parameters.3", ++ "doc/man/man3/DSA_get0_pqg.3", ++ "doc/man/man3/DSA_meth_new.3", ++ "doc/man/man3/DSA_new.3", ++ "doc/man/man3/DSA_set_method.3", ++ "doc/man/man3/DSA_sign.3", ++ "doc/man/man3/DSA_size.3", ++ "doc/man/man3/DTLS_get_data_mtu.3", ++ "doc/man/man3/DTLS_set_timer_cb.3", ++ "doc/man/man3/DTLSv1_listen.3", ++ "doc/man/man3/ECDSA_SIG_new.3", ++ "doc/man/man3/ECPKParameters_print.3", ++ "doc/man/man3/EC_GFp_simple_method.3", ++ "doc/man/man3/EC_GROUP_copy.3", ++ "doc/man/man3/EC_GROUP_new.3", ++ "doc/man/man3/EC_KEY_get_enc_flags.3", ++ "doc/man/man3/EC_KEY_new.3", ++ "doc/man/man3/EC_POINT_add.3", ++ "doc/man/man3/EC_POINT_new.3", ++ "doc/man/man3/ENGINE_add.3", ++ "doc/man/man3/ERR_GET_LIB.3", ++ "doc/man/man3/ERR_clear_error.3", ++ "doc/man/man3/ERR_error_string.3", ++ "doc/man/man3/ERR_get_error.3", ++ "doc/man/man3/ERR_load_crypto_strings.3", ++ "doc/man/man3/ERR_load_strings.3", ++ "doc/man/man3/ERR_new.3", ++ "doc/man/man3/ERR_print_errors.3", ++ "doc/man/man3/ERR_put_error.3", ++ "doc/man/man3/ERR_remove_state.3", ++ "doc/man/man3/ERR_set_mark.3", ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3", ++ "doc/man/man3/EVP_BytesToKey.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3", ++ "doc/man/man3/EVP_CIPHER_meth_new.3", ++ "doc/man/man3/EVP_DigestInit.3", ++ "doc/man/man3/EVP_DigestSignInit.3", ++ "doc/man/man3/EVP_DigestVerifyInit.3", ++ "doc/man/man3/EVP_EncodeInit.3", ++ "doc/man/man3/EVP_EncryptInit.3", ++ "doc/man/man3/EVP_KDF.3", ++ "doc/man/man3/EVP_KEM_free.3", ++ "doc/man/man3/EVP_KEYEXCH_free.3", ++ "doc/man/man3/EVP_KEYMGMT.3", ++ "doc/man/man3/EVP_MAC.3", ++ "doc/man/man3/EVP_MD_meth_new.3", ++ "doc/man/man3/EVP_OpenInit.3", ++ "doc/man/man3/EVP_PBE_CipherInit.3", ++ "doc/man/man3/EVP_PKEY2PKCS8.3", ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3", ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3", ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", ++ "doc/man/man3/EVP_PKEY_CTX_new.3", ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3", ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3", ++ "doc/man/man3/EVP_PKEY_check.3", ++ "doc/man/man3/EVP_PKEY_copy_parameters.3", ++ "doc/man/man3/EVP_PKEY_decapsulate.3", ++ "doc/man/man3/EVP_PKEY_decrypt.3", ++ "doc/man/man3/EVP_PKEY_derive.3", ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3", ++ "doc/man/man3/EVP_PKEY_encapsulate.3", ++ "doc/man/man3/EVP_PKEY_encrypt.3", ++ "doc/man/man3/EVP_PKEY_fromdata.3", ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3", ++ "doc/man/man3/EVP_PKEY_get_field_type.3", ++ "doc/man/man3/EVP_PKEY_get_group_name.3", ++ "doc/man/man3/EVP_PKEY_get_size.3", ++ "doc/man/man3/EVP_PKEY_gettable_params.3", ++ "doc/man/man3/EVP_PKEY_is_a.3", ++ "doc/man/man3/EVP_PKEY_keygen.3", ++ "doc/man/man3/EVP_PKEY_meth_get_count.3", ++ "doc/man/man3/EVP_PKEY_meth_new.3", ++ "doc/man/man3/EVP_PKEY_new.3", ++ "doc/man/man3/EVP_PKEY_print_private.3", ++ "doc/man/man3/EVP_PKEY_set1_RSA.3", ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3", ++ "doc/man/man3/EVP_PKEY_set_type.3", ++ "doc/man/man3/EVP_PKEY_settable_params.3", ++ "doc/man/man3/EVP_PKEY_sign.3", ++ "doc/man/man3/EVP_PKEY_todata.3", ++ "doc/man/man3/EVP_PKEY_verify.3", ++ "doc/man/man3/EVP_PKEY_verify_recover.3", ++ "doc/man/man3/EVP_RAND.3", ++ "doc/man/man3/EVP_SIGNATURE.3", ++ "doc/man/man3/EVP_SealInit.3", ++ "doc/man/man3/EVP_SignInit.3", ++ "doc/man/man3/EVP_VerifyInit.3", ++ "doc/man/man3/EVP_aes_128_gcm.3", ++ "doc/man/man3/EVP_aria_128_gcm.3", ++ "doc/man/man3/EVP_bf_cbc.3", ++ "doc/man/man3/EVP_blake2b512.3", ++ "doc/man/man3/EVP_camellia_128_ecb.3", ++ "doc/man/man3/EVP_cast5_cbc.3", ++ "doc/man/man3/EVP_chacha20.3", ++ "doc/man/man3/EVP_des_cbc.3", ++ "doc/man/man3/EVP_desx_cbc.3", ++ "doc/man/man3/EVP_idea_cbc.3", ++ "doc/man/man3/EVP_md2.3", ++ "doc/man/man3/EVP_md4.3", ++ "doc/man/man3/EVP_md5.3", ++ "doc/man/man3/EVP_mdc2.3", ++ "doc/man/man3/EVP_rc2_cbc.3", ++ "doc/man/man3/EVP_rc4.3", ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3", ++ "doc/man/man3/EVP_ripemd160.3", ++ "doc/man/man3/EVP_seed_cbc.3", ++ "doc/man/man3/EVP_set_default_properties.3", ++ "doc/man/man3/EVP_sha1.3", ++ "doc/man/man3/EVP_sha224.3", ++ "doc/man/man3/EVP_sha3_224.3", ++ "doc/man/man3/EVP_sm3.3", ++ "doc/man/man3/EVP_sm4_cbc.3", ++ "doc/man/man3/EVP_whirlpool.3", ++ "doc/man/man3/HMAC.3", ++ "doc/man/man3/MD5.3", ++ "doc/man/man3/MDC2_Init.3", ++ "doc/man/man3/NCONF_new_ex.3", ++ "doc/man/man3/OBJ_nid2obj.3", ++ "doc/man/man3/OCSP_REQUEST_new.3", ++ "doc/man/man3/OCSP_cert_to_id.3", ++ "doc/man/man3/OCSP_request_add1_nonce.3", ++ "doc/man/man3/OCSP_resp_find_status.3", ++ "doc/man/man3/OCSP_response_status.3", ++ "doc/man/man3/OCSP_sendreq_new.3", ++ "doc/man/man3/OPENSSL_Applink.3", ++ "doc/man/man3/OPENSSL_FILE.3", ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3", ++ "doc/man/man3/OPENSSL_LH_stats.3", ++ "doc/man/man3/OPENSSL_config.3", ++ "doc/man/man3/OPENSSL_fork_prepare.3", ++ "doc/man/man3/OPENSSL_hexchar2int.3", ++ "doc/man/man3/OPENSSL_ia32cap.3", ++ "doc/man/man3/OPENSSL_init_crypto.3", ++ "doc/man/man3/OPENSSL_init_ssl.3", ++ "doc/man/man3/OPENSSL_instrument_bus.3", ++ "doc/man/man3/OPENSSL_load_builtin_modules.3", ++ "doc/man/man3/OPENSSL_malloc.3", ++ "doc/man/man3/OPENSSL_s390xcap.3", ++ "doc/man/man3/OPENSSL_secure_malloc.3", ++ "doc/man/man3/OPENSSL_strcasecmp.3", ++ "doc/man/man3/OSSL_CMP_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3", ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3", ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3", ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3", ++ "doc/man/man3/OSSL_CMP_exec_certreq.3", ++ "doc/man/man3/OSSL_CMP_log_open.3", ++ "doc/man/man3/OSSL_CMP_validate_msg.3", ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3", ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3", ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3", ++ "doc/man/man3/OSSL_DECODER.3", ++ "doc/man/man3/OSSL_DECODER_CTX.3", ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_DECODER_from_bio.3", ++ "doc/man/man3/OSSL_ENCODER.3", ++ "doc/man/man3/OSSL_ENCODER_CTX.3", ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_ENCODER_to_bio.3", ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3", ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3", ++ "doc/man/man3/OSSL_HTTP_parse_url.3", ++ "doc/man/man3/OSSL_HTTP_transfer.3", ++ "doc/man/man3/OSSL_LIB_CTX.3", ++ "doc/man/man3/OSSL_PARAM.3", ++ "doc/man/man3/OSSL_PARAM_BLD.3", ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3", ++ "doc/man/man3/OSSL_PARAM_dup.3", ++ "doc/man/man3/OSSL_PARAM_int.3", ++ "doc/man/man3/OSSL_PROVIDER.3", ++ "doc/man/man3/OSSL_SELF_TEST_new.3", ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3", ++ "doc/man/man3/OSSL_STORE_INFO.3", ++ "doc/man/man3/OSSL_STORE_LOADER.3", ++ "doc/man/man3/OSSL_STORE_SEARCH.3", ++ "doc/man/man3/OSSL_STORE_attach.3", ++ "doc/man/man3/OSSL_STORE_expect.3", ++ "doc/man/man3/OSSL_STORE_open.3", ++ "doc/man/man3/OSSL_trace_enabled.3", ++ "doc/man/man3/OSSL_trace_get_category_num.3", ++ "doc/man/man3/OSSL_trace_set_channel.3", ++ "doc/man/man3/OpenSSL_add_all_algorithms.3", ++ "doc/man/man3/OpenSSL_version.3", ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", ++ "doc/man/man3/PEM_bytes_read_bio.3", ++ "doc/man/man3/PEM_read.3", ++ "doc/man/man3/PEM_read_CMS.3", ++ "doc/man/man3/PEM_read_bio_PrivateKey.3", ++ "doc/man/man3/PEM_read_bio_ex.3", ++ "doc/man/man3/PEM_write_bio_CMS_stream.3", ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3", ++ "doc/man/man3/PKCS12_PBE_keyivgen.3", ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3", ++ "doc/man/man3/PKCS12_add_CSPName_asc.3", ++ "doc/man/man3/PKCS12_add_cert.3", ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3", ++ "doc/man/man3/PKCS12_add_localkeyid.3", ++ "doc/man/man3/PKCS12_add_safe.3", ++ "doc/man/man3/PKCS12_create.3", ++ "doc/man/man3/PKCS12_decrypt_skey.3", ++ "doc/man/man3/PKCS12_gen_mac.3", ++ "doc/man/man3/PKCS12_get_friendlyname.3", ++ "doc/man/man3/PKCS12_init.3", ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3", ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3", ++ "doc/man/man3/PKCS12_newpass.3", ++ "doc/man/man3/PKCS12_pack_p7encdata.3", ++ "doc/man/man3/PKCS12_parse.3", ++ "doc/man/man3/PKCS5_PBE_keyivgen.3", ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3", ++ "doc/man/man3/PKCS7_decrypt.3", ++ "doc/man/man3/PKCS7_encrypt.3", ++ "doc/man/man3/PKCS7_get_octet_string.3", ++ "doc/man/man3/PKCS7_sign.3", ++ "doc/man/man3/PKCS7_sign_add_signer.3", ++ "doc/man/man3/PKCS7_type_is_other.3", ++ "doc/man/man3/PKCS7_verify.3", ++ "doc/man/man3/PKCS8_encrypt.3", ++ "doc/man/man3/PKCS8_pkey_add1_attr.3", ++ "doc/man/man3/RAND_add.3", ++ "doc/man/man3/RAND_bytes.3", ++ "doc/man/man3/RAND_cleanup.3", ++ "doc/man/man3/RAND_egd.3", ++ "doc/man/man3/RAND_get0_primary.3", ++ "doc/man/man3/RAND_load_file.3", ++ "doc/man/man3/RAND_set_DRBG_type.3", ++ "doc/man/man3/RAND_set_rand_method.3", ++ "doc/man/man3/RC4_set_key.3", ++ "doc/man/man3/RIPEMD160_Init.3", ++ "doc/man/man3/RSA_blinding_on.3", ++ "doc/man/man3/RSA_check_key.3", ++ "doc/man/man3/RSA_generate_key.3", ++ "doc/man/man3/RSA_get0_key.3", ++ "doc/man/man3/RSA_meth_new.3", ++ "doc/man/man3/RSA_new.3", ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3", ++ "doc/man/man3/RSA_print.3", ++ "doc/man/man3/RSA_private_encrypt.3", ++ "doc/man/man3/RSA_public_encrypt.3", ++ "doc/man/man3/RSA_set_method.3", ++ "doc/man/man3/RSA_sign.3", ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3", ++ "doc/man/man3/RSA_size.3", ++ "doc/man/man3/SCT_new.3", ++ "doc/man/man3/SCT_print.3", ++ "doc/man/man3/SCT_validate.3", ++ "doc/man/man3/SHA256_Init.3", ++ "doc/man/man3/SMIME_read_ASN1.3", ++ "doc/man/man3/SMIME_read_CMS.3", ++ "doc/man/man3/SMIME_read_PKCS7.3", ++ "doc/man/man3/SMIME_write_ASN1.3", ++ "doc/man/man3/SMIME_write_CMS.3", ++ "doc/man/man3/SMIME_write_PKCS7.3", ++ "doc/man/man3/SRP_Calc_B.3", ++ "doc/man/man3/SRP_VBASE_new.3", ++ "doc/man/man3/SRP_create_verifier.3", ++ "doc/man/man3/SRP_user_pwd_new.3", ++ "doc/man/man3/SSL_CIPHER_get_name.3", ++ "doc/man/man3/SSL_COMP_add_compression_method.3", ++ "doc/man/man3/SSL_CONF_CTX_new.3", ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3", ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3", ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3", ++ "doc/man/man3/SSL_CONF_cmd.3", ++ "doc/man/man3/SSL_CONF_cmd_argv.3", ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_session.3", ++ "doc/man/man3/SSL_CTX_config.3", ++ "doc/man/man3/SSL_CTX_ctrl.3", ++ "doc/man/man3/SSL_CTX_dane_enable.3", ++ "doc/man/man3/SSL_CTX_flush_sessions.3", ++ "doc/man/man3/SSL_CTX_free.3", ++ "doc/man/man3/SSL_CTX_get0_param.3", ++ "doc/man/man3/SSL_CTX_get_verify_mode.3", ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3", ++ "doc/man/man3/SSL_CTX_load_verify_locations.3", ++ "doc/man/man3/SSL_CTX_new.3", ++ "doc/man/man3/SSL_CTX_sess_number.3", ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3", ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3", ++ "doc/man/man3/SSL_CTX_sessions.3", ++ "doc/man/man3/SSL_CTX_set0_CA_list.3", ++ "doc/man/man3/SSL_CTX_set1_curves.3", ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3", ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3", ++ "doc/man/man3/SSL_CTX_set_cipher_list.3", ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3", ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3", ++ "doc/man/man3/SSL_CTX_set_info_callback.3", ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3", ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3", ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3", ++ "doc/man/man3/SSL_CTX_set_mode.3", ++ "doc/man/man3/SSL_CTX_set_msg_callback.3", ++ "doc/man/man3/SSL_CTX_set_num_tickets.3", ++ "doc/man/man3/SSL_CTX_set_options.3", ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3", ++ "doc/man/man3/SSL_CTX_set_quic_method.3", ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3", ++ "doc/man/man3/SSL_CTX_set_read_ahead.3", ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3", ++ "doc/man/man3/SSL_CTX_set_security_level.3", ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3", ++ "doc/man/man3/SSL_CTX_set_session_id_context.3", ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3", ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3", ++ "doc/man/man3/SSL_CTX_set_srp_password.3", ++ "doc/man/man3/SSL_CTX_set_ssl_version.3", ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3", ++ "doc/man/man3/SSL_CTX_set_timeout.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3", ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3", ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3", ++ "doc/man/man3/SSL_CTX_set_verify.3", ++ "doc/man/man3/SSL_CTX_use_certificate.3", ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3", ++ "doc/man/man3/SSL_CTX_use_serverinfo.3", ++ "doc/man/man3/SSL_SESSION_free.3", ++ "doc/man/man3/SSL_SESSION_get0_cipher.3", ++ "doc/man/man3/SSL_SESSION_get0_hostname.3", ++ "doc/man/man3/SSL_SESSION_get0_id_context.3", ++ "doc/man/man3/SSL_SESSION_get0_peer.3", ++ "doc/man/man3/SSL_SESSION_get_compress_id.3", ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3", ++ "doc/man/man3/SSL_SESSION_get_time.3", ++ "doc/man/man3/SSL_SESSION_has_ticket.3", ++ "doc/man/man3/SSL_SESSION_is_resumable.3", ++ "doc/man/man3/SSL_SESSION_print.3", ++ "doc/man/man3/SSL_SESSION_set1_id.3", ++ "doc/man/man3/SSL_accept.3", ++ "doc/man/man3/SSL_alert_type_string.3", ++ "doc/man/man3/SSL_alloc_buffers.3", ++ "doc/man/man3/SSL_check_chain.3", ++ "doc/man/man3/SSL_clear.3", ++ "doc/man/man3/SSL_connect.3", ++ "doc/man/man3/SSL_do_handshake.3", ++ "doc/man/man3/SSL_export_keying_material.3", ++ "doc/man/man3/SSL_extension_supported.3", ++ "doc/man/man3/SSL_free.3", ++ "doc/man/man3/SSL_get0_peer_scts.3", ++ "doc/man/man3/SSL_get_SSL_CTX.3", ++ "doc/man/man3/SSL_get_all_async_fds.3", ++ "doc/man/man3/SSL_get_certificate.3", ++ "doc/man/man3/SSL_get_ciphers.3", ++ "doc/man/man3/SSL_get_client_random.3", ++ "doc/man/man3/SSL_get_current_cipher.3", ++ "doc/man/man3/SSL_get_default_timeout.3", ++ "doc/man/man3/SSL_get_error.3", ++ "doc/man/man3/SSL_get_extms_support.3", ++ "doc/man/man3/SSL_get_fd.3", ++ "doc/man/man3/SSL_get_peer_cert_chain.3", ++ "doc/man/man3/SSL_get_peer_certificate.3", ++ "doc/man/man3/SSL_get_peer_signature_nid.3", ++ "doc/man/man3/SSL_get_peer_tmp_key.3", ++ "doc/man/man3/SSL_get_psk_identity.3", ++ "doc/man/man3/SSL_get_rbio.3", ++ "doc/man/man3/SSL_get_session.3", ++ "doc/man/man3/SSL_get_shared_sigalgs.3", ++ "doc/man/man3/SSL_get_verify_result.3", ++ "doc/man/man3/SSL_get_version.3", ++ "doc/man/man3/SSL_group_to_name.3", ++ "doc/man/man3/SSL_in_init.3", ++ "doc/man/man3/SSL_key_update.3", ++ "doc/man/man3/SSL_library_init.3", ++ "doc/man/man3/SSL_load_client_CA_file.3", ++ "doc/man/man3/SSL_new.3", ++ "doc/man/man3/SSL_pending.3", ++ "doc/man/man3/SSL_read.3", ++ "doc/man/man3/SSL_read_early_data.3", ++ "doc/man/man3/SSL_rstate_string.3", ++ "doc/man/man3/SSL_session_reused.3", ++ "doc/man/man3/SSL_set1_host.3", ++ "doc/man/man3/SSL_set_async_callback.3", ++ "doc/man/man3/SSL_set_bio.3", ++ "doc/man/man3/SSL_set_connect_state.3", ++ "doc/man/man3/SSL_set_fd.3", ++ "doc/man/man3/SSL_set_retry_verify.3", ++ "doc/man/man3/SSL_set_session.3", ++ "doc/man/man3/SSL_set_shutdown.3", ++ "doc/man/man3/SSL_set_verify_result.3", ++ "doc/man/man3/SSL_shutdown.3", ++ "doc/man/man3/SSL_state_string.3", ++ "doc/man/man3/SSL_want.3", ++ "doc/man/man3/SSL_write.3", ++ "doc/man/man3/TS_RESP_CTX_new.3", ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3", ++ "doc/man/man3/UI_STRING.3", ++ "doc/man/man3/UI_UTIL_read_pw.3", ++ "doc/man/man3/UI_create_method.3", ++ "doc/man/man3/UI_new.3", ++ "doc/man/man3/X509V3_get_d2i.3", ++ "doc/man/man3/X509V3_set_ctx.3", ++ "doc/man/man3/X509_ALGOR_dup.3", ++ "doc/man/man3/X509_CRL_get0_by_serial.3", ++ "doc/man/man3/X509_EXTENSION_set_object.3", ++ "doc/man/man3/X509_LOOKUP.3", ++ "doc/man/man3/X509_LOOKUP_hash_dir.3", ++ "doc/man/man3/X509_LOOKUP_meth_new.3", ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3", ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3", ++ "doc/man/man3/X509_NAME_get0_der.3", ++ "doc/man/man3/X509_NAME_get_index_by_NID.3", ++ "doc/man/man3/X509_NAME_print_ex.3", ++ "doc/man/man3/X509_PUBKEY_new.3", ++ "doc/man/man3/X509_SIG_get0.3", ++ "doc/man/man3/X509_STORE_CTX_get_error.3", ++ "doc/man/man3/X509_STORE_CTX_new.3", ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", ++ "doc/man/man3/X509_STORE_add_cert.3", ++ "doc/man/man3/X509_STORE_get0_param.3", ++ "doc/man/man3/X509_STORE_new.3", ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3", ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3", ++ "doc/man/man3/X509_add_cert.3", ++ "doc/man/man3/X509_check_ca.3", ++ "doc/man/man3/X509_check_host.3", ++ "doc/man/man3/X509_check_issued.3", ++ "doc/man/man3/X509_check_private_key.3", ++ "doc/man/man3/X509_check_purpose.3", ++ "doc/man/man3/X509_cmp.3", ++ "doc/man/man3/X509_cmp_time.3", ++ "doc/man/man3/X509_digest.3", ++ "doc/man/man3/X509_dup.3", ++ "doc/man/man3/X509_get0_distinguishing_id.3", ++ "doc/man/man3/X509_get0_notBefore.3", ++ "doc/man/man3/X509_get0_signature.3", ++ "doc/man/man3/X509_get0_uids.3", ++ "doc/man/man3/X509_get_extension_flags.3", ++ "doc/man/man3/X509_get_pubkey.3", ++ "doc/man/man3/X509_get_serialNumber.3", ++ "doc/man/man3/X509_get_subject_name.3", ++ "doc/man/man3/X509_get_version.3", ++ "doc/man/man3/X509_load_http.3", ++ "doc/man/man3/X509_new.3", ++ "doc/man/man3/X509_sign.3", ++ "doc/man/man3/X509_verify.3", ++ "doc/man/man3/X509_verify_cert.3", ++ "doc/man/man3/X509v3_get_ext_by_NID.3", ++ "doc/man/man3/b2i_PVK_bio_ex.3", ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3", ++ "doc/man/man3/d2i_PrivateKey.3", ++ "doc/man/man3/d2i_RSAPrivateKey.3", ++ "doc/man/man3/d2i_SSL_SESSION.3", ++ "doc/man/man3/d2i_X509.3", ++ "doc/man/man3/i2d_CMS_bio_stream.3", ++ "doc/man/man3/i2d_PKCS7_bio_stream.3", ++ "doc/man/man3/i2d_re_X509_tbs.3", ++ "doc/man/man3/o2i_SCT_LIST.3", ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" ++ ], ++ "man5" => [ ++ "doc/man/man5/config.5", ++ "doc/man/man5/fips_config.5", ++ "doc/man/man5/x509v3_config.5" ++ ], ++ "man7" => [ ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7", ++ "doc/man/man7/EVP_CIPHER-AES.7", ++ "doc/man/man7/EVP_CIPHER-ARIA.7", ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7", ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7", ++ "doc/man/man7/EVP_CIPHER-CAST.7", ++ "doc/man/man7/EVP_CIPHER-CHACHA.7", ++ "doc/man/man7/EVP_CIPHER-DES.7", ++ "doc/man/man7/EVP_CIPHER-IDEA.7", ++ "doc/man/man7/EVP_CIPHER-RC2.7", ++ "doc/man/man7/EVP_CIPHER-RC4.7", ++ "doc/man/man7/EVP_CIPHER-RC5.7", ++ "doc/man/man7/EVP_CIPHER-SEED.7", ++ "doc/man/man7/EVP_CIPHER-SM4.7", ++ "doc/man/man7/EVP_KDF-HKDF.7", ++ "doc/man/man7/EVP_KDF-KB.7", ++ "doc/man/man7/EVP_KDF-KRB5KDF.7", ++ "doc/man/man7/EVP_KDF-PBKDF1.7", ++ "doc/man/man7/EVP_KDF-PBKDF2.7", ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7", ++ "doc/man/man7/EVP_KDF-SCRYPT.7", ++ "doc/man/man7/EVP_KDF-SS.7", ++ "doc/man/man7/EVP_KDF-SSHKDF.7", ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7", ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7", ++ "doc/man/man7/EVP_KDF-X942-ASN1.7", ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7", ++ "doc/man/man7/EVP_KDF-X963.7", ++ "doc/man/man7/EVP_KEM-RSA.7", ++ "doc/man/man7/EVP_KEYEXCH-DH.7", ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7", ++ "doc/man/man7/EVP_KEYEXCH-X25519.7", ++ "doc/man/man7/EVP_MAC-BLAKE2.7", ++ "doc/man/man7/EVP_MAC-CMAC.7", ++ "doc/man/man7/EVP_MAC-GMAC.7", ++ "doc/man/man7/EVP_MAC-HMAC.7", ++ "doc/man/man7/EVP_MAC-KMAC.7", ++ "doc/man/man7/EVP_MAC-Poly1305.7", ++ "doc/man/man7/EVP_MAC-Siphash.7", ++ "doc/man/man7/EVP_MD-BLAKE2.7", ++ "doc/man/man7/EVP_MD-MD2.7", ++ "doc/man/man7/EVP_MD-MD4.7", ++ "doc/man/man7/EVP_MD-MD5-SHA1.7", ++ "doc/man/man7/EVP_MD-MD5.7", ++ "doc/man/man7/EVP_MD-MDC2.7", ++ "doc/man/man7/EVP_MD-RIPEMD160.7", ++ "doc/man/man7/EVP_MD-SHA1.7", ++ "doc/man/man7/EVP_MD-SHA2.7", ++ "doc/man/man7/EVP_MD-SHA3.7", ++ "doc/man/man7/EVP_MD-SHAKE.7", ++ "doc/man/man7/EVP_MD-SM3.7", ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7", ++ "doc/man/man7/EVP_MD-common.7", ++ "doc/man/man7/EVP_PKEY-DH.7", ++ "doc/man/man7/EVP_PKEY-DSA.7", ++ "doc/man/man7/EVP_PKEY-EC.7", ++ "doc/man/man7/EVP_PKEY-FFC.7", ++ "doc/man/man7/EVP_PKEY-HMAC.7", ++ "doc/man/man7/EVP_PKEY-RSA.7", ++ "doc/man/man7/EVP_PKEY-SM2.7", ++ "doc/man/man7/EVP_PKEY-X25519.7", ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7", ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7", ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7", ++ "doc/man/man7/EVP_RAND-SEED-SRC.7", ++ "doc/man/man7/EVP_RAND-TEST-RAND.7", ++ "doc/man/man7/EVP_RAND.7", ++ "doc/man/man7/EVP_SIGNATURE-DSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7", ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7", ++ "doc/man/man7/EVP_SIGNATURE-RSA.7", ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7", ++ "doc/man/man7/OSSL_PROVIDER-base.7", ++ "doc/man/man7/OSSL_PROVIDER-default.7", ++ "doc/man/man7/OSSL_PROVIDER-legacy.7", ++ "doc/man/man7/OSSL_PROVIDER-null.7", ++ "doc/man/man7/RAND.7", ++ "doc/man/man7/RSA-PSS.7", ++ "doc/man/man7/X25519.7", ++ "doc/man/man7/bio.7", ++ "doc/man/man7/crypto.7", ++ "doc/man/man7/ct.7", ++ "doc/man/man7/des_modes.7", ++ "doc/man/man7/evp.7", ++ "doc/man/man7/fips_module.7", ++ "doc/man/man7/life_cycle-cipher.7", ++ "doc/man/man7/life_cycle-digest.7", ++ "doc/man/man7/life_cycle-kdf.7", ++ "doc/man/man7/life_cycle-mac.7", ++ "doc/man/man7/life_cycle-pkey.7", ++ "doc/man/man7/life_cycle-rand.7", ++ "doc/man/man7/migration_guide.7", ++ "doc/man/man7/openssl-core.h.7", ++ "doc/man/man7/openssl-core_dispatch.h.7", ++ "doc/man/man7/openssl-core_names.h.7", ++ "doc/man/man7/openssl-env.7", ++ "doc/man/man7/openssl-glossary.7", ++ "doc/man/man7/openssl-threads.7", ++ "doc/man/man7/openssl_user_macros.7", ++ "doc/man/man7/ossl_store-file.7", ++ "doc/man/man7/ossl_store.7", ++ "doc/man/man7/passphrase-encoding.7", ++ "doc/man/man7/property.7", ++ "doc/man/man7/provider-asym_cipher.7", ++ "doc/man/man7/provider-base.7", ++ "doc/man/man7/provider-cipher.7", ++ "doc/man/man7/provider-decoder.7", ++ "doc/man/man7/provider-digest.7", ++ "doc/man/man7/provider-encoder.7", ++ "doc/man/man7/provider-kdf.7", ++ "doc/man/man7/provider-kem.7", ++ "doc/man/man7/provider-keyexch.7", ++ "doc/man/man7/provider-keymgmt.7", ++ "doc/man/man7/provider-mac.7", ++ "doc/man/man7/provider-object.7", ++ "doc/man/man7/provider-rand.7", ++ "doc/man/man7/provider-signature.7", ++ "doc/man/man7/provider-storemgmt.7", ++ "doc/man/man7/provider.7", ++ "doc/man/man7/proxy-certificates.7", ++ "doc/man/man7/ssl.7", ++ "doc/man/man7/x509.7" ++ ] ++ }, ++ "modules" => [ ++ "providers/fips", ++ "providers/legacy", ++ "test/p_test" ++ ], ++ "programs" => [ ++ "apps/openssl", ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test", ++ "test/aborttest", ++ "test/acvp_test", ++ "test/aesgcmtest", ++ "test/afalgtest", ++ "test/algorithmid_test", ++ "test/asn1_decode_test", ++ "test/asn1_dsa_internal_test", ++ "test/asn1_encode_test", ++ "test/asn1_internal_test", ++ "test/asn1_string_table_test", ++ "test/asn1_time_test", ++ "test/asynciotest", ++ "test/asynctest", ++ "test/bad_dtls_test", ++ "test/bftest", ++ "test/bio_callback_test", ++ "test/bio_core_test", ++ "test/bio_enc_test", ++ "test/bio_memleak_test", ++ "test/bio_prefix_text", ++ "test/bio_readbuffer_test", ++ "test/bioprinttest", ++ "test/bn_internal_test", ++ "test/bntest", ++ "test/buildtest_c_aes", ++ "test/buildtest_c_async", ++ "test/buildtest_c_blowfish", ++ "test/buildtest_c_bn", ++ "test/buildtest_c_buffer", ++ "test/buildtest_c_camellia", ++ "test/buildtest_c_cast", ++ "test/buildtest_c_cmac", ++ "test/buildtest_c_cmp_util", ++ "test/buildtest_c_conf_api", ++ "test/buildtest_c_conftypes", ++ "test/buildtest_c_core", ++ "test/buildtest_c_core_dispatch", ++ "test/buildtest_c_core_names", ++ "test/buildtest_c_core_object", ++ "test/buildtest_c_cryptoerr_legacy", ++ "test/buildtest_c_decoder", ++ "test/buildtest_c_des", ++ "test/buildtest_c_dh", ++ "test/buildtest_c_dsa", ++ "test/buildtest_c_dtls1", ++ "test/buildtest_c_e_os2", ++ "test/buildtest_c_ebcdic", ++ "test/buildtest_c_ec", ++ "test/buildtest_c_ecdh", ++ "test/buildtest_c_ecdsa", ++ "test/buildtest_c_encoder", ++ "test/buildtest_c_engine", ++ "test/buildtest_c_evp", ++ "test/buildtest_c_fips_names", ++ "test/buildtest_c_hmac", ++ "test/buildtest_c_http", ++ "test/buildtest_c_idea", ++ "test/buildtest_c_kdf", ++ "test/buildtest_c_macros", ++ "test/buildtest_c_md4", ++ "test/buildtest_c_md5", ++ "test/buildtest_c_mdc2", ++ "test/buildtest_c_modes", ++ "test/buildtest_c_obj_mac", ++ "test/buildtest_c_objects", ++ "test/buildtest_c_ossl_typ", ++ "test/buildtest_c_param_build", ++ "test/buildtest_c_params", ++ "test/buildtest_c_pem", ++ "test/buildtest_c_pem2", ++ "test/buildtest_c_prov_ssl", ++ "test/buildtest_c_provider", ++ "test/buildtest_c_quic", ++ "test/buildtest_c_rand", ++ "test/buildtest_c_rc2", ++ "test/buildtest_c_rc4", ++ "test/buildtest_c_ripemd", ++ "test/buildtest_c_rsa", ++ "test/buildtest_c_seed", ++ "test/buildtest_c_self_test", ++ "test/buildtest_c_sha", ++ "test/buildtest_c_srtp", ++ "test/buildtest_c_ssl2", ++ "test/buildtest_c_sslerr_legacy", ++ "test/buildtest_c_stack", ++ "test/buildtest_c_store", ++ "test/buildtest_c_symhacks", ++ "test/buildtest_c_tls1", ++ "test/buildtest_c_ts", ++ "test/buildtest_c_txt_db", ++ "test/buildtest_c_types", ++ "test/buildtest_c_whrlpool", ++ "test/casttest", ++ "test/chacha_internal_test", ++ "test/cipher_overhead_test", ++ "test/cipherbytes_test", ++ "test/cipherlist_test", ++ "test/ciphername_test", ++ "test/clienthellotest", ++ "test/cmactest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/cmsapitest", ++ "test/conf_include_test", ++ "test/confdump", ++ "test/constant_time_test", ++ "test/context_internal_test", ++ "test/crltest", ++ "test/ct_test", ++ "test/ctype_internal_test", ++ "test/curve448_internal_test", ++ "test/d2i_test", ++ "test/danetest", ++ "test/defltfips_test", ++ "test/destest", ++ "test/dhtest", ++ "test/drbgtest", ++ "test/dsa_no_digest_size_test", ++ "test/dsatest", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/dtlsv1listentest", ++ "test/ec_internal_test", ++ "test/ecdsatest", ++ "test/ecstresstest", ++ "test/ectest", ++ "test/endecode_test", ++ "test/endecoder_legacy_test", ++ "test/enginetest", ++ "test/errtest", ++ "test/evp_extra_test", ++ "test/evp_extra_test2", ++ "test/evp_fetch_prov_test", ++ "test/evp_kdf_test", ++ "test/evp_libctx_test", ++ "test/evp_pkey_ctx_new_from_name", ++ "test/evp_pkey_dparams_test", ++ "test/evp_pkey_provided_test", ++ "test/evp_test", ++ "test/exdatatest", ++ "test/exptest", ++ "test/fatalerrtest", ++ "test/ffc_internal_test", ++ "test/gmdifftest", ++ "test/hexstr_test", ++ "test/hmactest", ++ "test/http_test", ++ "test/ideatest", ++ "test/igetest", ++ "test/keymgmt_internal_test", ++ "test/lhash_test", ++ "test/localetest", ++ "test/mdc2_internal_test", ++ "test/mdc2test", ++ "test/memleaktest", ++ "test/modes_internal_test", ++ "test/namemap_internal_test", ++ "test/ocspapitest", ++ "test/ossl_store_test", ++ "test/packettest", ++ "test/param_build_test", ++ "test/params_api_test", ++ "test/params_conversion_test", ++ "test/params_test", ++ "test/pbelutest", ++ "test/pbetest", ++ "test/pem_read_depr_test", ++ "test/pemtest", ++ "test/pkcs12_format_test", ++ "test/pkcs7_test", ++ "test/pkey_meth_kdf_test", ++ "test/pkey_meth_test", ++ "test/poly1305_internal_test", ++ "test/property_test", ++ "test/prov_config_test", ++ "test/provfetchtest", ++ "test/provider_fallback_test", ++ "test/provider_internal_test", ++ "test/provider_pkey_test", ++ "test/provider_status_test", ++ "test/provider_test", ++ "test/rand_status_test", ++ "test/rand_test", ++ "test/rc2test", ++ "test/rc4test", ++ "test/rc5test", ++ "test/rdrand_sanitytest", ++ "test/recordlentest", ++ "test/rsa_complex", ++ "test/rsa_mp_test", ++ "test/rsa_sp800_56b_test", ++ "test/rsa_test", ++ "test/sanitytest", ++ "test/secmemtest", ++ "test/servername_test", ++ "test/sha_test", ++ "test/siphash_internal_test", ++ "test/sm2_internal_test", ++ "test/sm3_internal_test", ++ "test/sm4_internal_test", ++ "test/sparse_array_test", ++ "test/srptest", ++ "test/ssl_cert_table_internal_test", ++ "test/ssl_ctx_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/stack_test", ++ "test/sysdefaulttest", ++ "test/test_test", ++ "test/threadstest", ++ "test/threadstest_fips", ++ "test/time_offset_test", ++ "test/tls13ccstest", ++ "test/tls13encryptiontest", ++ "test/uitest", ++ "test/upcallstest", ++ "test/user_property_test", ++ "test/v3ext", ++ "test/v3nametest", ++ "test/verify_extra_test", ++ "test/versions", ++ "test/wpackettest", ++ "test/x509_check_cert_pkey_test", ++ "test/x509_dup_cert_test", ++ "test/x509_internal_test", ++ "test/x509_time_test", ++ "test/x509aux" ++ ], ++ "scripts" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl", ++ "tools/c_rehash", ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ], ++ "shared_sources" => {}, ++ "sources" => { ++ "apps/CA.pl" => [ ++ "apps/CA.pl.in" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/libapps-lib-app_libctx.o" => [ ++ "apps/lib/app_libctx.c" ++ ], ++ "apps/lib/libapps-lib-app_params.o" => [ ++ "apps/lib/app_params.c" ++ ], ++ "apps/lib/libapps-lib-app_provider.o" => [ ++ "apps/lib/app_provider.c" ++ ], ++ "apps/lib/libapps-lib-app_rand.o" => [ ++ "apps/lib/app_rand.c" ++ ], ++ "apps/lib/libapps-lib-app_x509.o" => [ ++ "apps/lib/app_x509.c" ++ ], ++ "apps/lib/libapps-lib-apps.o" => [ ++ "apps/lib/apps.c" ++ ], ++ "apps/lib/libapps-lib-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/lib/libapps-lib-columns.o" => [ ++ "apps/lib/columns.c" ++ ], ++ "apps/lib/libapps-lib-engine.o" => [ ++ "apps/lib/engine.c" ++ ], ++ "apps/lib/libapps-lib-engine_loader.o" => [ ++ "apps/lib/engine_loader.c" ++ ], ++ "apps/lib/libapps-lib-fmt.o" => [ ++ "apps/lib/fmt.c" ++ ], ++ "apps/lib/libapps-lib-http_server.o" => [ ++ "apps/lib/http_server.c" ++ ], ++ "apps/lib/libapps-lib-names.o" => [ ++ "apps/lib/names.c" ++ ], ++ "apps/lib/libapps-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/libapps-lib-s_cb.o" => [ ++ "apps/lib/s_cb.c" ++ ], ++ "apps/lib/libapps-lib-s_socket.o" => [ ++ "apps/lib/s_socket.c" ++ ], ++ "apps/lib/libapps-lib-tlssrp_depr.o" => [ ++ "apps/lib/tlssrp_depr.c" ++ ], ++ "apps/lib/libtestutil-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/uitest-bin-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/libapps.a" => [ ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o" ++ ], ++ "apps/openssl" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/openssl-bin-asn1parse.o", ++ "apps/openssl-bin-ca.o", ++ "apps/openssl-bin-ciphers.o", ++ "apps/openssl-bin-cmp.o", ++ "apps/openssl-bin-cms.o", ++ "apps/openssl-bin-crl.o", ++ "apps/openssl-bin-crl2pkcs7.o", ++ "apps/openssl-bin-dgst.o", ++ "apps/openssl-bin-dhparam.o", ++ "apps/openssl-bin-dsa.o", ++ "apps/openssl-bin-dsaparam.o", ++ "apps/openssl-bin-ec.o", ++ "apps/openssl-bin-ecparam.o", ++ "apps/openssl-bin-enc.o", ++ "apps/openssl-bin-engine.o", ++ "apps/openssl-bin-errstr.o", ++ "apps/openssl-bin-fipsinstall.o", ++ "apps/openssl-bin-gendsa.o", ++ "apps/openssl-bin-genpkey.o", ++ "apps/openssl-bin-genrsa.o", ++ "apps/openssl-bin-info.o", ++ "apps/openssl-bin-kdf.o", ++ "apps/openssl-bin-list.o", ++ "apps/openssl-bin-mac.o", ++ "apps/openssl-bin-nseq.o", ++ "apps/openssl-bin-ocsp.o", ++ "apps/openssl-bin-openssl.o", ++ "apps/openssl-bin-passwd.o", ++ "apps/openssl-bin-pkcs12.o", ++ "apps/openssl-bin-pkcs7.o", ++ "apps/openssl-bin-pkcs8.o", ++ "apps/openssl-bin-pkey.o", ++ "apps/openssl-bin-pkeyparam.o", ++ "apps/openssl-bin-pkeyutl.o", ++ "apps/openssl-bin-prime.o", ++ "apps/openssl-bin-progs.o", ++ "apps/openssl-bin-rand.o", ++ "apps/openssl-bin-rehash.o", ++ "apps/openssl-bin-req.o", ++ "apps/openssl-bin-rsa.o", ++ "apps/openssl-bin-rsautl.o", ++ "apps/openssl-bin-s_client.o", ++ "apps/openssl-bin-s_server.o", ++ "apps/openssl-bin-s_time.o", ++ "apps/openssl-bin-sess_id.o", ++ "apps/openssl-bin-smime.o", ++ "apps/openssl-bin-speed.o", ++ "apps/openssl-bin-spkac.o", ++ "apps/openssl-bin-srp.o", ++ "apps/openssl-bin-storeutl.o", ++ "apps/openssl-bin-ts.o", ++ "apps/openssl-bin-verify.o", ++ "apps/openssl-bin-version.o", ++ "apps/openssl-bin-x509.o" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/asn1parse.c" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/ca.c" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/ciphers.c" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/cmp.c" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/cms.c" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/crl.c" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/crl2pkcs7.c" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/dgst.c" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/dhparam.c" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/dsa.c" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/dsaparam.c" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/ec.c" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/ecparam.c" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/enc.c" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/engine.c" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/errstr.c" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/fipsinstall.c" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/gendsa.c" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/genpkey.c" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/genrsa.c" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/info.c" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/kdf.c" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/list.c" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/mac.c" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/nseq.c" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/ocsp.c" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/openssl.c" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/passwd.c" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/pkcs12.c" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/pkcs7.c" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/pkcs8.c" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/pkey.c" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/pkeyparam.c" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/pkeyutl.c" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/prime.c" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.c" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/rand.c" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/rehash.c" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/req.c" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/rsa.c" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/rsautl.c" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/s_client.c" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/s_server.c" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/s_time.c" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/sess_id.c" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/smime.c" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/speed.c" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/spkac.c" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/srp.c" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/storeutl.c" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/ts.c" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/verify.c" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/version.c" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/x509.c" ++ ], ++ "apps/tsget.pl" => [ ++ "apps/tsget.in" ++ ], ++ "crypto/aes/libcrypto-lib-aes-sw_64.o" => [ ++ "crypto/aes/aes-sw_64.S" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cfb.o" => [ ++ "crypto/aes/aes_cfb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ige.o" => [ ++ "crypto/aes/aes_ige.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ofb.o" => [ ++ "crypto/aes/aes_ofb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_wrap.o" => [ ++ "crypto/aes/aes_wrap.c" ++ ], ++ "crypto/aes/libfips-lib-aes-sw_64.o" => [ ++ "crypto/aes/aes-sw_64.S" ++ ], ++ "crypto/aes/libfips-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libfips-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libfips-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aria/libcrypto-lib-aria.o" => [ ++ "crypto/aria/aria.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ ++ "crypto/asn1/a_bitstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o" => [ ++ "crypto/asn1/a_d2i_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_digest.o" => [ ++ "crypto/asn1/a_digest.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_dup.o" => [ ++ "crypto/asn1/a_dup.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_gentm.o" => [ ++ "crypto/asn1/a_gentm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o" => [ ++ "crypto/asn1/a_i2d_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_int.o" => [ ++ "crypto/asn1/a_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_mbstr.o" => [ ++ "crypto/asn1/a_mbstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_object.o" => [ ++ "crypto/asn1/a_object.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_octet.o" => [ ++ "crypto/asn1/a_octet.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_print.o" => [ ++ "crypto/asn1/a_print.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_sign.o" => [ ++ "crypto/asn1/a_sign.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strex.o" => [ ++ "crypto/asn1/a_strex.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strnid.o" => [ ++ "crypto/asn1/a_strnid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_time.o" => [ ++ "crypto/asn1/a_time.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_type.o" => [ ++ "crypto/asn1/a_type.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utctm.o" => [ ++ "crypto/asn1/a_utctm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utf8.o" => [ ++ "crypto/asn1/a_utf8.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_verify.o" => [ ++ "crypto/asn1/a_verify.c" ++ ], ++ "crypto/asn1/libcrypto-lib-ameth_lib.o" => [ ++ "crypto/asn1/ameth_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_err.o" => [ ++ "crypto/asn1/asn1_err.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_gen.o" => [ ++ "crypto/asn1/asn1_gen.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o" => [ ++ "crypto/asn1/asn1_item_list.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_lib.o" => [ ++ "crypto/asn1/asn1_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_parse.o" => [ ++ "crypto/asn1/asn1_parse.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mime.o" => [ ++ "crypto/asn1/asn_mime.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_moid.o" => [ ++ "crypto/asn1/asn_moid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o" => [ ++ "crypto/asn1/asn_mstbl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_pack.o" => [ ++ "crypto/asn1/asn_pack.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_asn1.o" => [ ++ "crypto/asn1/bio_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_ndef.o" => [ ++ "crypto/asn1/bio_ndef.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_param.o" => [ ++ "crypto/asn1/d2i_param.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pr.o" => [ ++ "crypto/asn1/d2i_pr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pu.o" => [ ++ "crypto/asn1/d2i_pu.c" ++ ], ++ "crypto/asn1/libcrypto-lib-evp_asn1.o" => [ ++ "crypto/asn1/evp_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_int.o" => [ ++ "crypto/asn1/f_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_string.o" => [ ++ "crypto/asn1/f_string.c" ++ ], ++ "crypto/asn1/libcrypto-lib-i2d_evp.o" => [ ++ "crypto/asn1/i2d_evp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-n_pkey.o" => [ ++ "crypto/asn1/n_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-nsseq.o" => [ ++ "crypto/asn1/nsseq.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbe.o" => [ ++ "crypto/asn1/p5_pbe.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o" => [ ++ "crypto/asn1/p5_pbev2.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o" => [ ++ "crypto/asn1/p5_scrypt.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p8_pkey.o" => [ ++ "crypto/asn1/p8_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_bitst.o" => [ ++ "crypto/asn1/t_bitst.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_pkey.o" => [ ++ "crypto/asn1/t_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_spki.o" => [ ++ "crypto/asn1/t_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_dec.o" => [ ++ "crypto/asn1/tasn_dec.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_enc.o" => [ ++ "crypto/asn1/tasn_enc.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_fre.o" => [ ++ "crypto/asn1/tasn_fre.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_new.o" => [ ++ "crypto/asn1/tasn_new.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_prn.o" => [ ++ "crypto/asn1/tasn_prn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_scn.o" => [ ++ "crypto/asn1/tasn_scn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_typ.o" => [ ++ "crypto/asn1/tasn_typ.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_utl.o" => [ ++ "crypto/asn1/tasn_utl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_algor.o" => [ ++ "crypto/asn1/x_algor.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_bignum.o" => [ ++ "crypto/asn1/x_bignum.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_info.o" => [ ++ "crypto/asn1/x_info.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_int64.o" => [ ++ "crypto/asn1/x_int64.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_long.o" => [ ++ "crypto/asn1/x_long.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_pkey.o" => [ ++ "crypto/asn1/x_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_sig.o" => [ ++ "crypto/asn1/x_sig.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_spki.o" => [ ++ "crypto/asn1/x_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_val.o" => [ ++ "crypto/asn1/x_val.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_null.o" => [ ++ "crypto/async/arch/async_null.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_posix.o" => [ ++ "crypto/async/arch/async_posix.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_win.o" => [ ++ "crypto/async/arch/async_win.c" ++ ], ++ "crypto/async/libcrypto-lib-async.o" => [ ++ "crypto/async/async.c" ++ ], ++ "crypto/async/libcrypto-lib-async_err.o" => [ ++ "crypto/async/async_err.c" ++ ], ++ "crypto/async/libcrypto-lib-async_wait.o" => [ ++ "crypto/async/async_wait.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_cfb64.o" => [ ++ "crypto/bf/bf_cfb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ecb.o" => [ ++ "crypto/bf/bf_ecb.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_enc.o" => [ ++ "crypto/bf/bf_enc.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ofb64.o" => [ ++ "crypto/bf/bf_ofb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_skey.o" => [ ++ "crypto/bf/bf_skey.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_buff.o" => [ ++ "crypto/bio/bf_buff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_lbuf.o" => [ ++ "crypto/bio/bf_lbuf.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_nbio.o" => [ ++ "crypto/bio/bf_nbio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_null.o" => [ ++ "crypto/bio/bf_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_prefix.o" => [ ++ "crypto/bio/bf_prefix.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_readbuff.o" => [ ++ "crypto/bio/bf_readbuff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_addr.o" => [ ++ "crypto/bio/bio_addr.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_cb.o" => [ ++ "crypto/bio/bio_cb.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_dump.o" => [ ++ "crypto/bio/bio_dump.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_err.o" => [ ++ "crypto/bio/bio_err.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_lib.o" => [ ++ "crypto/bio/bio_lib.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_meth.o" => [ ++ "crypto/bio/bio_meth.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_print.o" => [ ++ "crypto/bio/bio_print.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock.o" => [ ++ "crypto/bio/bio_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock2.o" => [ ++ "crypto/bio/bio_sock2.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_acpt.o" => [ ++ "crypto/bio/bss_acpt.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_bio.o" => [ ++ "crypto/bio/bss_bio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_conn.o" => [ ++ "crypto/bio/bss_conn.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_core.o" => [ ++ "crypto/bio/bss_core.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_dgram.o" => [ ++ "crypto/bio/bss_dgram.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_fd.o" => [ ++ "crypto/bio/bss_fd.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_file.o" => [ ++ "crypto/bio/bss_file.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_log.o" => [ ++ "crypto/bio/bss_log.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_mem.o" => [ ++ "crypto/bio/bss_mem.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_null.o" => [ ++ "crypto/bio/bss_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_sock.o" => [ ++ "crypto/bio/bss_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" => [ ++ "crypto/bio/ossl_core_bio.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/libcrypto-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_depr.o" => [ ++ "crypto/bn/bn_depr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_err.o" => [ ++ "crypto/bn/bn_err.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_print.o" => [ ++ "crypto/bn/bn_print.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_srp.o" => [ ++ "crypto/bn/bn_srp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_x931p.o" => [ ++ "crypto/bn/bn_x931p.c" ++ ], ++ "crypto/bn/libcrypto-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/bn/libfips-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/libfips-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libfips-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libfips-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libfips-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libfips-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libfips-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libfips-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libfips-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libfips-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libfips-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libfips-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libfips-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libfips-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libfips-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libfips-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/libfips-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/bn/liblegacy-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/buffer/libcrypto-lib-buf_err.o" => [ ++ "crypto/buffer/buf_err.c" ++ ], ++ "crypto/buffer/libcrypto-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/buffer/libfips-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/camellia/libcrypto-lib-camellia.o" => [ ++ "crypto/camellia/camellia.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o" => [ ++ "crypto/camellia/cmll_cbc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o" => [ ++ "crypto/camellia/cmll_cfb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o" => [ ++ "crypto/camellia/cmll_ctr.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o" => [ ++ "crypto/camellia/cmll_ecb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_misc.o" => [ ++ "crypto/camellia/cmll_misc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" => [ ++ "crypto/camellia/cmll_ofb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_cfb64.o" => [ ++ "crypto/cast/c_cfb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ecb.o" => [ ++ "crypto/cast/c_ecb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_enc.o" => [ ++ "crypto/cast/c_enc.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ofb64.o" => [ ++ "crypto/cast/c_ofb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_skey.o" => [ ++ "crypto/cast/c_skey.c" ++ ], ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" => [ ++ "crypto/chacha/chacha_enc.c" ++ ], ++ "crypto/cmac/libcrypto-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmac/libfips-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_asn.o" => [ ++ "crypto/cmp/cmp_asn.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_client.o" => [ ++ "crypto/cmp/cmp_client.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o" => [ ++ "crypto/cmp/cmp_ctx.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_err.o" => [ ++ "crypto/cmp/cmp_err.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ ++ "crypto/cmp/cmp_hdr.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_http.o" => [ ++ "crypto/cmp/cmp_http.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_msg.o" => [ ++ "crypto/cmp/cmp_msg.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_protect.o" => [ ++ "crypto/cmp/cmp_protect.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_server.o" => [ ++ "crypto/cmp/cmp_server.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_status.o" => [ ++ "crypto/cmp/cmp_status.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_util.o" => [ ++ "crypto/cmp/cmp_util.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" => [ ++ "crypto/cmp/cmp_vfy.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_asn1.o" => [ ++ "crypto/cms/cms_asn1.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_att.o" => [ ++ "crypto/cms/cms_att.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_cd.o" => [ ++ "crypto/cms/cms_cd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dd.o" => [ ++ "crypto/cms/cms_dd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dh.o" => [ ++ "crypto/cms/cms_dh.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ec.o" => [ ++ "crypto/cms/cms_ec.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_enc.o" => [ ++ "crypto/cms/cms_enc.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_env.o" => [ ++ "crypto/cms/cms_env.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_err.o" => [ ++ "crypto/cms/cms_err.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ess.o" => [ ++ "crypto/cms/cms_ess.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_io.o" => [ ++ "crypto/cms/cms_io.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_kari.o" => [ ++ "crypto/cms/cms_kari.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_lib.o" => [ ++ "crypto/cms/cms_lib.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_pwri.o" => [ ++ "crypto/cms/cms_pwri.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_rsa.o" => [ ++ "crypto/cms/cms_rsa.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_sd.o" => [ ++ "crypto/cms/cms_sd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_smime.o" => [ ++ "crypto/cms/cms_smime.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_api.o" => [ ++ "crypto/conf/conf_api.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_def.o" => [ ++ "crypto/conf/conf_def.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_err.o" => [ ++ "crypto/conf/conf_err.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_lib.o" => [ ++ "crypto/conf/conf_lib.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mall.o" => [ ++ "crypto/conf/conf_mall.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mod.o" => [ ++ "crypto/conf/conf_mod.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_sap.o" => [ ++ "crypto/conf/conf_sap.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_ssl.o" => [ ++ "crypto/conf/conf_ssl.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_asn.o" => [ ++ "crypto/crmf/crmf_asn.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_err.o" => [ ++ "crypto/crmf/crmf_err.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_lib.o" => [ ++ "crypto/crmf/crmf_lib.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" => [ ++ "crypto/crmf/crmf_pbm.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_b64.o" => [ ++ "crypto/ct/ct_b64.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_err.o" => [ ++ "crypto/ct/ct_err.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_log.o" => [ ++ "crypto/ct/ct_log.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_oct.o" => [ ++ "crypto/ct/ct_oct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_policy.o" => [ ++ "crypto/ct/ct_policy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_prn.o" => [ ++ "crypto/ct/ct_prn.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct.o" => [ ++ "crypto/ct/ct_sct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o" => [ ++ "crypto/ct/ct_sct_ctx.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_vfy.o" => [ ++ "crypto/ct/ct_vfy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" => [ ++ "crypto/ct/ct_x509v3.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_cksm.o" => [ ++ "crypto/des/cbc_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_enc.o" => [ ++ "crypto/des/cbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64ede.o" => [ ++ "crypto/des/cfb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64enc.o" => [ ++ "crypto/des/cfb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb_enc.o" => [ ++ "crypto/des/cfb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb_enc.o" => [ ++ "crypto/des/ecb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt.o" => [ ++ "crypto/des/fcrypt.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64ede.o" => [ ++ "crypto/des/ofb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64enc.o" => [ ++ "crypto/des/ofb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb_enc.o" => [ ++ "crypto/des/ofb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-pcbc_enc.o" => [ ++ "crypto/des/pcbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-qud_cksm.o" => [ ++ "crypto/des/qud_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-rand_key.o" => [ ++ "crypto/des/rand_key.c" ++ ], ++ "crypto/des/libcrypto-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/libcrypto-lib-str2key.o" => [ ++ "crypto/des/str2key.c" ++ ], ++ "crypto/des/libcrypto-lib-xcbc_enc.o" => [ ++ "crypto/des/xcbc_enc.c" ++ ], ++ "crypto/des/libfips-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libfips-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libfips-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libfips-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/liblegacy-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/liblegacy-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_ameth.o" => [ ++ "crypto/dh/dh_ameth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_asn1.o" => [ ++ "crypto/dh/dh_asn1.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_depr.o" => [ ++ "crypto/dh/dh_depr.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_err.o" => [ ++ "crypto/dh/dh_err.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_meth.o" => [ ++ "crypto/dh/dh_meth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_pmeth.o" => [ ++ "crypto/dh/dh_pmeth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_prn.o" => [ ++ "crypto/dh/dh_prn.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o" => [ ++ "crypto/dh/dh_rfc5114.c" ++ ], ++ "crypto/dh/libfips-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libfips-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libfips-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libfips-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libfips-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libfips-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libfips-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o" => [ ++ "crypto/dsa/dsa_ameth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o" => [ ++ "crypto/dsa/dsa_asn1.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_depr.o" => [ ++ "crypto/dsa/dsa_depr.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_err.o" => [ ++ "crypto/dsa/dsa_err.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_meth.o" => [ ++ "crypto/dsa/dsa_meth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o" => [ ++ "crypto/dsa/dsa_pmeth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_prn.o" => [ ++ "crypto/dsa/dsa_prn.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dl.o" => [ ++ "crypto/dso/dso_dl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o" => [ ++ "crypto/dso/dso_dlfcn.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_err.o" => [ ++ "crypto/dso/dso_err.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_lib.o" => [ ++ "crypto/dso/dso_lib.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_openssl.o" => [ ++ "crypto/dso/dso_openssl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_vms.o" => [ ++ "crypto/dso/dso_vms.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_win32.o" => [ ++ "crypto/dso/dso_win32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/libcrypto-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_ameth.o" => [ ++ "crypto/ec/ec_ameth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_deprecated.o" => [ ++ "crypto/ec/ec_deprecated.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_err.o" => [ ++ "crypto/ec/ec_err.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_pmeth.o" => [ ++ "crypto/ec/ec_pmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_print.o" => [ ++ "crypto/ec/ec_print.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libcrypto-lib-eck_prn.o" => [ ++ "crypto/ec/eck_prn.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto/ec/ecx_meth.c" ++ ], ++ "crypto/ec/libfips-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libfips-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libfips-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libfips-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libfips-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libfips-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libfips-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libfips-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libfips-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o" => [ ++ "crypto/encode_decode/decoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o" => [ ++ "crypto/encode_decode/decoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o" => [ ++ "crypto/encode_decode/decoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o" => [ ++ "crypto/encode_decode/decoder_pkey.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o" => [ ++ "crypto/encode_decode/encoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o" => [ ++ "crypto/encode_decode/encoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o" => [ ++ "crypto/encode_decode/encoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" => [ ++ "crypto/encode_decode/encoder_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_all.o" => [ ++ "crypto/engine/eng_all.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_cnf.o" => [ ++ "crypto/engine/eng_cnf.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_ctrl.o" => [ ++ "crypto/engine/eng_ctrl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_dyn.o" => [ ++ "crypto/engine/eng_dyn.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_err.o" => [ ++ "crypto/engine/eng_err.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_fat.o" => [ ++ "crypto/engine/eng_fat.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_init.o" => [ ++ "crypto/engine/eng_init.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_lib.o" => [ ++ "crypto/engine/eng_lib.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_list.o" => [ ++ "crypto/engine/eng_list.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_openssl.o" => [ ++ "crypto/engine/eng_openssl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_pkey.o" => [ ++ "crypto/engine/eng_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_rdrand.o" => [ ++ "crypto/engine/eng_rdrand.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_table.o" => [ ++ "crypto/engine/eng_table.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_asnmth.o" => [ ++ "crypto/engine/tb_asnmth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_cipher.o" => [ ++ "crypto/engine/tb_cipher.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dh.o" => [ ++ "crypto/engine/tb_dh.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_digest.o" => [ ++ "crypto/engine/tb_digest.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dsa.o" => [ ++ "crypto/engine/tb_dsa.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_eckey.o" => [ ++ "crypto/engine/tb_eckey.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o" => [ ++ "crypto/engine/tb_pkmeth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rand.o" => [ ++ "crypto/engine/tb_rand.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rsa.o" => [ ++ "crypto/engine/tb_rsa.c" ++ ], ++ "crypto/err/libcrypto-lib-err.o" => [ ++ "crypto/err/err.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all.o" => [ ++ "crypto/err/err_all.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all_legacy.o" => [ ++ "crypto/err/err_all_legacy.c" ++ ], ++ "crypto/err/libcrypto-lib-err_blocks.o" => [ ++ "crypto/err/err_blocks.c" ++ ], ++ "crypto/err/libcrypto-lib-err_prn.o" => [ ++ "crypto/err/err_prn.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_asn1.o" => [ ++ "crypto/ess/ess_asn1.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_err.o" => [ ++ "crypto/ess/ess_err.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_lib.o" => [ ++ "crypto/ess/ess_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_b64.o" => [ ++ "crypto/evp/bio_b64.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_enc.o" => [ ++ "crypto/evp/bio_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_md.o" => [ ++ "crypto/evp/bio_md.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_ok.o" => [ ++ "crypto/evp/bio_ok.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_allc.o" => [ ++ "crypto/evp/c_allc.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_alld.o" => [ ++ "crypto/evp/c_alld.c" ++ ], ++ "crypto/evp/libcrypto-lib-cmeth_lib.o" => [ ++ "crypto/evp/cmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o" => [ ++ "crypto/evp/ctrl_params_translate.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_ctrl.o" => [ ++ "crypto/evp/dh_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o" => [ ++ "crypto/evp/dsa_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto/evp/e_aes.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha256.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto/evp/e_aria.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_bf.o" => [ ++ "crypto/evp/e_bf.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto/evp/e_camellia.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_cast.o" => [ ++ "crypto/evp/e_cast.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o" => [ ++ "crypto/evp/e_chacha20_poly1305.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto/evp/e_des.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto/evp/e_des3.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_idea.o" => [ ++ "crypto/evp/e_idea.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_null.o" => [ ++ "crypto/evp/e_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_old.o" => [ ++ "crypto/evp/e_old.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc2.o" => [ ++ "crypto/evp/e_rc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4.o" => [ ++ "crypto/evp/e_rc4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o" => [ ++ "crypto/evp/e_rc4_hmac_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc5.o" => [ ++ "crypto/evp/e_rc5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_seed.o" => [ ++ "crypto/evp/e_seed.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto/evp/e_sm4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o" => [ ++ "crypto/evp/e_xcbc_d.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_ctrl.o" => [ ++ "crypto/evp/ec_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-encode.o" => [ ++ "crypto/evp/encode.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_cnf.o" => [ ++ "crypto/evp/evp_cnf.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_err.o" => [ ++ "crypto/evp/evp_err.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_key.o" => [ ++ "crypto/evp/evp_key.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pbe.o" => [ ++ "crypto/evp/evp_pbe.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pkey.o" => [ ++ "crypto/evp/evp_pkey.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libcrypto-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_blake2.o" => [ ++ "crypto/evp/legacy_blake2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md4.o" => [ ++ "crypto/evp/legacy_md4.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5.o" => [ ++ "crypto/evp/legacy_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o" => [ ++ "crypto/evp/legacy_md5_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o" => [ ++ "crypto/evp/legacy_mdc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o" => [ ++ "crypto/evp/legacy_ripemd.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_sha.o" => [ ++ "crypto/evp/legacy_sha.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_wp.o" => [ ++ "crypto/evp/legacy_wp.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_null.o" => [ ++ "crypto/evp/m_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-names.o" => [ ++ "crypto/evp/names.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt.o" => [ ++ "crypto/evp/p5_crpt.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt2.o" => [ ++ "crypto/evp/p5_crpt2.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_dec.o" => [ ++ "crypto/evp/p_dec.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_enc.o" => [ ++ "crypto/evp/p_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_legacy.o" => [ ++ "crypto/evp/p_legacy.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_open.o" => [ ++ "crypto/evp/p_open.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_seal.o" => [ ++ "crypto/evp/p_seal.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_sign.o" => [ ++ "crypto/evp/p_sign.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_verify.o" => [ ++ "crypto/evp/p_verify.c" ++ ], ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o" => [ ++ "crypto/evp/pbe_scrypt.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/evp/libfips-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libfips-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libfips-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libfips-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libfips-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libfips-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libfips-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libfips-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libfips-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libfips-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libfips-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libfips-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libfips-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libfips-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libfips-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libfips-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/hmac/libcrypto-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/hmac/libfips-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/http/libcrypto-lib-http_client.o" => [ ++ "crypto/http/http_client.c" ++ ], ++ "crypto/http/libcrypto-lib-http_err.o" => [ ++ "crypto/http/http_err.c" ++ ], ++ "crypto/http/libcrypto-lib-http_lib.o" => [ ++ "crypto/http/http_lib.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cbc.o" => [ ++ "crypto/idea/i_cbc.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cfb64.o" => [ ++ "crypto/idea/i_cfb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ecb.o" => [ ++ "crypto/idea/i_ecb.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ofb64.o" => [ ++ "crypto/idea/i_ofb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_skey.o" => [ ++ "crypto/idea/i_skey.c" ++ ], ++ "crypto/kdf/libcrypto-lib-kdf_err.o" => [ ++ "crypto/kdf/kdf_err.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lh_stats.o" => [ ++ "crypto/lhash/lh_stats.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/lhash/libfips-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/libcrypto-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libcrypto-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libcrypto-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libcrypto-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libcrypto-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libcrypto-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libcrypto-lib-cpt_err.o" => [ ++ "crypto/cpt_err.c" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libcrypto-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libcrypto-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/cversion.c" ++ ], ++ "crypto/libcrypto-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libcrypto-lib-ebcdic.o" => [ ++ "crypto/ebcdic.c" ++ ], ++ "crypto/libcrypto-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libcrypto-lib-getenv.o" => [ ++ "crypto/getenv.c" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/info.c" ++ ], ++ "crypto/libcrypto-lib-init.o" => [ ++ "crypto/init.c" ++ ], ++ "crypto/libcrypto-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libcrypto-lib-mem.o" => [ ++ "crypto/mem.c" ++ ], ++ "crypto/libcrypto-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libcrypto-lib-mem_sec.o" => [ ++ "crypto/mem_sec.c" ++ ], ++ "crypto/libcrypto-lib-o_dir.o" => [ ++ "crypto/o_dir.c" ++ ], ++ "crypto/libcrypto-lib-o_fopen.o" => [ ++ "crypto/o_fopen.c" ++ ], ++ "crypto/libcrypto-lib-o_init.o" => [ ++ "crypto/o_init.c" ++ ], ++ "crypto/libcrypto-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libcrypto-lib-o_time.o" => [ ++ "crypto/o_time.c" ++ ], ++ "crypto/libcrypto-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libcrypto-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libcrypto-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libcrypto-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libcrypto-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libcrypto-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libcrypto-lib-passphrase.o" => [ ++ "crypto/passphrase.c" ++ ], ++ "crypto/libcrypto-lib-provider.o" => [ ++ "crypto/provider.c" ++ ], ++ "crypto/libcrypto-lib-provider_child.o" => [ ++ "crypto/provider_child.c" ++ ], ++ "crypto/libcrypto-lib-provider_conf.o" => [ ++ "crypto/provider_conf.c" ++ ], ++ "crypto/libcrypto-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libcrypto-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libcrypto-lib-punycode.o" => [ ++ "crypto/punycode.c" ++ ], ++ "crypto/libcrypto-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libcrypto-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libcrypto-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libcrypto-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libcrypto-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libcrypto-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/libcrypto-lib-trace.o" => [ ++ "crypto/trace.c" ++ ], ++ "crypto/libcrypto-lib-uid.o" => [ ++ "crypto/uid.c" ++ ], ++ "crypto/libfips-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libfips-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libfips-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libfips-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libfips-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libfips-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libfips-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libfips-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libfips-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libfips-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libfips-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libfips-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libfips-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libfips-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libfips-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libfips-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libfips-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libfips-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libfips-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libfips-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libfips-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libfips-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libfips-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libfips-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libfips-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libfips-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libfips-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_dgst.o" => [ ++ "crypto/md4/md4_dgst.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_one.o" => [ ++ "crypto/md4/md4_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o" => [ ++ "crypto/mdc2/mdc2_one.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ ++ "crypto/mdc2/mdc2dgst.c" ++ ], ++ "crypto/modes/libcrypto-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cts128.o" => [ ++ "crypto/modes/cts128.c" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ocb128.o" => [ ++ "crypto/modes/ocb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-siv128.o" => [ ++ "crypto/modes/siv128.c" ++ ], ++ "crypto/modes/libcrypto-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libcrypto-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/modes/libfips-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libfips-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libfips-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libfips-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libfips-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libfips-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libfips-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/objects/libcrypto-lib-o_names.o" => [ ++ "crypto/objects/o_names.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_dat.o" => [ ++ "crypto/objects/obj_dat.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_err.o" => [ ++ "crypto/objects/obj_err.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_lib.o" => [ ++ "crypto/objects/obj_lib.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_xref.o" => [ ++ "crypto/objects/obj_xref.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o" => [ ++ "crypto/ocsp/ocsp_asn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o" => [ ++ "crypto/ocsp/ocsp_cl.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o" => [ ++ "crypto/ocsp/ocsp_err.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o" => [ ++ "crypto/ocsp/ocsp_ext.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o" => [ ++ "crypto/ocsp/ocsp_http.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o" => [ ++ "crypto/ocsp/ocsp_lib.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o" => [ ++ "crypto/ocsp/ocsp_prn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o" => [ ++ "crypto/ocsp/ocsp_srv.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o" => [ ++ "crypto/ocsp/ocsp_vfy.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ ++ "crypto/ocsp/v3_ocsp.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_all.o" => [ ++ "crypto/pem/pem_all.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_err.o" => [ ++ "crypto/pem/pem_err.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_info.o" => [ ++ "crypto/pem/pem_info.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_lib.o" => [ ++ "crypto/pem/pem_lib.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_oth.o" => [ ++ "crypto/pem/pem_oth.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pk8.o" => [ ++ "crypto/pem/pem_pk8.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pkey.o" => [ ++ "crypto/pem/pem_pkey.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_sign.o" => [ ++ "crypto/pem/pem_sign.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_x509.o" => [ ++ "crypto/pem/pem_x509.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_xaux.o" => [ ++ "crypto/pem/pem_xaux.c" ++ ], ++ "crypto/pem/libcrypto-lib-pvkfmt.o" => [ ++ "crypto/pem/pvkfmt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_add.o" => [ ++ "crypto/pkcs12/p12_add.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o" => [ ++ "crypto/pkcs12/p12_asn.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o" => [ ++ "crypto/pkcs12/p12_attr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o" => [ ++ "crypto/pkcs12/p12_crpt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o" => [ ++ "crypto/pkcs12/p12_crt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o" => [ ++ "crypto/pkcs12/p12_decr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_init.o" => [ ++ "crypto/pkcs12/p12_init.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_key.o" => [ ++ "crypto/pkcs12/p12_key.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o" => [ ++ "crypto/pkcs12/p12_kiss.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o" => [ ++ "crypto/pkcs12/p12_mutl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o" => [ ++ "crypto/pkcs12/p12_npas.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o" => [ ++ "crypto/pkcs12/p12_p8d.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o" => [ ++ "crypto/pkcs12/p12_p8e.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o" => [ ++ "crypto/pkcs12/p12_sbag.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o" => [ ++ "crypto/pkcs12/p12_utl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" => [ ++ "crypto/pkcs12/pk12err.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o" => [ ++ "crypto/pkcs7/bio_pk7.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o" => [ ++ "crypto/pkcs7/pk7_asn1.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o" => [ ++ "crypto/pkcs7/pk7_attr.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o" => [ ++ "crypto/pkcs7/pk7_doit.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o" => [ ++ "crypto/pkcs7/pk7_lib.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o" => [ ++ "crypto/pkcs7/pk7_mime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o" => [ ++ "crypto/pkcs7/pk7_smime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" => [ ++ "crypto/pkcs7/pkcs7err.c" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o" => [ ++ "crypto/poly1305/poly1305-sw_64.S" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305.o" => [ ++ "crypto/poly1305/poly1305.c" ++ ], ++ "crypto/property/libcrypto-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libcrypto-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libcrypto-lib-property_err.o" => [ ++ "crypto/property/property_err.c" ++ ], ++ "crypto/property/libcrypto-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libcrypto-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libcrypto-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/property/libfips-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libfips-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libfips-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libfips-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libfips-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/rand/libcrypto-lib-prov_seed.o" => [ ++ "crypto/rand/prov_seed.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_deprecated.o" => [ ++ "crypto/rand/rand_deprecated.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_err.o" => [ ++ "crypto/rand/rand_err.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_meth.o" => [ ++ "crypto/rand/rand_meth.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_pool.o" => [ ++ "crypto/rand/rand_pool.c" ++ ], ++ "crypto/rand/libcrypto-lib-randfile.o" => [ ++ "crypto/rand/randfile.c" ++ ], ++ "crypto/rand/libfips-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o" => [ ++ "crypto/rc2/rc2_cbc.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o" => [ ++ "crypto/rc2/rc2_ecb.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_skey.o" => [ ++ "crypto/rc2/rc2_skey.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o" => [ ++ "crypto/rc2/rc2cfb64.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" => [ ++ "crypto/rc2/rc2ofb64.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_enc.o" => [ ++ "crypto/rc4/rc4_enc.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" => [ ++ "crypto/rc4/rc4_skey.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o" => [ ++ "crypto/ripemd/rmd_dgst.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" => [ ++ "crypto/ripemd/rmd_one.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o" => [ ++ "crypto/rsa/rsa_ameth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o" => [ ++ "crypto/rsa/rsa_asn1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_depr.o" => [ ++ "crypto/rsa/rsa_depr.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_err.o" => [ ++ "crypto/rsa/rsa_err.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_meth.o" => [ ++ "crypto/rsa/rsa_meth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp.o" => [ ++ "crypto/rsa/rsa_mp.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o" => [ ++ "crypto/rsa/rsa_pmeth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_prn.o" => [ ++ "crypto/rsa/rsa_prn.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_saos.o" => [ ++ "crypto/rsa/rsa_saos.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o" => [ ++ "crypto/rsa/rsa_x931g.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o" => [ ++ "crypto/rsa/rsa_acvp_test_params.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed.o" => [ ++ "crypto/seed/seed.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cbc.o" => [ ++ "crypto/seed/seed_cbc.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cfb.o" => [ ++ "crypto/seed/seed_cfb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ecb.o" => [ ++ "crypto/seed/seed_ecb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ofb.o" => [ ++ "crypto/seed/seed_ofb.c" ++ ], ++ "crypto/sha/libcrypto-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o" => [ ++ "crypto/sha/sha1-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha1_one.o" => [ ++ "crypto/sha/sha1_one.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o" => [ ++ "crypto/sha/sha256-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o" => [ ++ "crypto/sha/sha512-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/sha/libfips-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libfips-lib-sha1-sw_64.o" => [ ++ "crypto/sha/sha1-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libfips-lib-sha256-sw_64.o" => [ ++ "crypto/sha/sha256-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libfips-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libfips-lib-sha512-sw_64.o" => [ ++ "crypto/sha/sha512-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/siphash/libcrypto-lib-siphash.o" => [ ++ "crypto/siphash/siphash.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ ++ "crypto/sm2/sm2_crypt.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_err.o" => [ ++ "crypto/sm2/sm2_err.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_key.o" => [ ++ "crypto/sm2/sm2_key.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" => [ ++ "crypto/sm2/sm2_sign.c" ++ ], ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o" => [ ++ "crypto/sm3/legacy_sm3.c" ++ ], ++ "crypto/sm3/libcrypto-lib-sm3.o" => [ ++ "crypto/sm3/sm3.c" ++ ], ++ "crypto/sm4/libcrypto-lib-sm4.o" => [ ++ "crypto/sm4/sm4.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_lib.o" => [ ++ "crypto/srp/srp_lib.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_vfy.o" => [ ++ "crypto/srp/srp_vfy.c" ++ ], ++ "crypto/stack/libcrypto-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/stack/libfips-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/store/libcrypto-lib-store_err.o" => [ ++ "crypto/store/store_err.c" ++ ], ++ "crypto/store/libcrypto-lib-store_init.o" => [ ++ "crypto/store/store_init.c" ++ ], ++ "crypto/store/libcrypto-lib-store_lib.o" => [ ++ "crypto/store/store_lib.c" ++ ], ++ "crypto/store/libcrypto-lib-store_meth.o" => [ ++ "crypto/store/store_meth.c" ++ ], ++ "crypto/store/libcrypto-lib-store_register.o" => [ ++ "crypto/store/store_register.c" ++ ], ++ "crypto/store/libcrypto-lib-store_result.o" => [ ++ "crypto/store/store_result.c" ++ ], ++ "crypto/store/libcrypto-lib-store_strings.o" => [ ++ "crypto/store/store_strings.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_asn1.o" => [ ++ "crypto/ts/ts_asn1.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_conf.o" => [ ++ "crypto/ts/ts_conf.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_err.o" => [ ++ "crypto/ts/ts_err.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_lib.o" => [ ++ "crypto/ts/ts_lib.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_print.o" => [ ++ "crypto/ts/ts_req_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_utils.o" => [ ++ "crypto/ts/ts_req_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o" => [ ++ "crypto/ts/ts_rsp_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o" => [ ++ "crypto/ts/ts_rsp_sign.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o" => [ ++ "crypto/ts/ts_rsp_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o" => [ ++ "crypto/ts/ts_rsp_verify.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" => [ ++ "crypto/ts/ts_verify_ctx.c" ++ ], ++ "crypto/txt_db/libcrypto-lib-txt_db.o" => [ ++ "crypto/txt_db/txt_db.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_err.o" => [ ++ "crypto/ui/ui_err.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_lib.o" => [ ++ "crypto/ui/ui_lib.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_null.o" => [ ++ "crypto/ui/ui_null.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_openssl.o" => [ ++ "crypto/ui/ui_openssl.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_util.o" => [ ++ "crypto/ui/ui_util.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_block.o" => [ ++ "crypto/whrlpool/wp_block.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" => [ ++ "crypto/whrlpool/wp_dgst.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_dir.o" => [ ++ "crypto/x509/by_dir.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_file.o" => [ ++ "crypto/x509/by_file.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_store.o" => [ ++ "crypto/x509/by_store.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_cache.o" => [ ++ "crypto/x509/pcy_cache.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_data.o" => [ ++ "crypto/x509/pcy_data.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_lib.o" => [ ++ "crypto/x509/pcy_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_map.o" => [ ++ "crypto/x509/pcy_map.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_node.o" => [ ++ "crypto/x509/pcy_node.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_tree.o" => [ ++ "crypto/x509/pcy_tree.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_crl.o" => [ ++ "crypto/x509/t_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_req.o" => [ ++ "crypto/x509/t_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_x509.o" => [ ++ "crypto/x509/t_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_addr.o" => [ ++ "crypto/x509/v3_addr.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_admis.o" => [ ++ "crypto/x509/v3_admis.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akeya.o" => [ ++ "crypto/x509/v3_akeya.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akid.o" => [ ++ "crypto/x509/v3_akid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_asid.o" => [ ++ "crypto/x509/v3_asid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bcons.o" => [ ++ "crypto/x509/v3_bcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bitst.o" => [ ++ "crypto/x509/v3_bitst.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_conf.o" => [ ++ "crypto/x509/v3_conf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_cpols.o" => [ ++ "crypto/x509/v3_cpols.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_crld.o" => [ ++ "crypto/x509/v3_crld.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_enum.o" => [ ++ "crypto/x509/v3_enum.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_extku.o" => [ ++ "crypto/x509/v3_extku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_genn.o" => [ ++ "crypto/x509/v3_genn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ia5.o" => [ ++ "crypto/x509/v3_ia5.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_info.o" => [ ++ "crypto/x509/v3_info.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_int.o" => [ ++ "crypto/x509/v3_int.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ist.o" => [ ++ "crypto/x509/v3_ist.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_lib.o" => [ ++ "crypto/x509/v3_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ncons.o" => [ ++ "crypto/x509/v3_ncons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pci.o" => [ ++ "crypto/x509/v3_pci.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcia.o" => [ ++ "crypto/x509/v3_pcia.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcons.o" => [ ++ "crypto/x509/v3_pcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pku.o" => [ ++ "crypto/x509/v3_pku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pmaps.o" => [ ++ "crypto/x509/v3_pmaps.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_prn.o" => [ ++ "crypto/x509/v3_prn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_purp.o" => [ ++ "crypto/x509/v3_purp.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_san.o" => [ ++ "crypto/x509/v3_san.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_skid.o" => [ ++ "crypto/x509/v3_skid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ ++ "crypto/x509/v3_sxnet.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ ++ "crypto/x509/v3_tlsf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utf8.o" => [ ++ "crypto/x509/v3_utf8.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utl.o" => [ ++ "crypto/x509/v3_utl.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3err.o" => [ ++ "crypto/x509/v3err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_att.o" => [ ++ "crypto/x509/x509_att.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_cmp.o" => [ ++ "crypto/x509/x509_cmp.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_d2.o" => [ ++ "crypto/x509/x509_d2.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_def.o" => [ ++ "crypto/x509/x509_def.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_err.o" => [ ++ "crypto/x509/x509_err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_ext.o" => [ ++ "crypto/x509/x509_ext.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_lu.o" => [ ++ "crypto/x509/x509_lu.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_meth.o" => [ ++ "crypto/x509/x509_meth.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_obj.o" => [ ++ "crypto/x509/x509_obj.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_r2x.o" => [ ++ "crypto/x509/x509_r2x.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_req.o" => [ ++ "crypto/x509/x509_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_set.o" => [ ++ "crypto/x509/x509_set.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_trust.o" => [ ++ "crypto/x509/x509_trust.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_txt.o" => [ ++ "crypto/x509/x509_txt.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_v3.o" => [ ++ "crypto/x509/x509_v3.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vfy.o" => [ ++ "crypto/x509/x509_vfy.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vpm.o" => [ ++ "crypto/x509/x509_vpm.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509cset.o" => [ ++ "crypto/x509/x509cset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509name.o" => [ ++ "crypto/x509/x509name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509rset.o" => [ ++ "crypto/x509/x509rset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509spki.o" => [ ++ "crypto/x509/x509spki.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509type.o" => [ ++ "crypto/x509/x509type.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_all.o" => [ ++ "crypto/x509/x_all.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_attrib.o" => [ ++ "crypto/x509/x_attrib.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_crl.o" => [ ++ "crypto/x509/x_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_exten.o" => [ ++ "crypto/x509/x_exten.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_name.o" => [ ++ "crypto/x509/x_name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_pubkey.o" => [ ++ "crypto/x509/x_pubkey.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_req.o" => [ ++ "crypto/x509/x_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509.o" => [ ++ "crypto/x509/x_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509a.o" => [ ++ "crypto/x509/x_x509a.c" ++ ], ++ "engines/libcrypto-lib-e_capi.o" => [ ++ "engines/e_capi.c" ++ ], ++ "engines/libcrypto-lib-e_padlock.o" => [ ++ "engines/e_padlock.c" ++ ], ++ "fuzz/asn1-test" => [ ++ "fuzz/asn1-test-bin-asn1.o", ++ "fuzz/asn1-test-bin-fuzz_rand.o", ++ "fuzz/asn1-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1-test-bin-asn1.o" => [ ++ "fuzz/asn1.c" ++ ], ++ "fuzz/asn1-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/asn1-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "fuzz/asn1parse-test-bin-asn1parse.o", ++ "fuzz/asn1parse-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1parse-test-bin-asn1parse.o" => [ ++ "fuzz/asn1parse.c" ++ ], ++ "fuzz/asn1parse-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bignum-test" => [ ++ "fuzz/bignum-test-bin-bignum.o", ++ "fuzz/bignum-test-bin-test-corpus.o" ++ ], ++ "fuzz/bignum-test-bin-bignum.o" => [ ++ "fuzz/bignum.c" ++ ], ++ "fuzz/bignum-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bndiv-test" => [ ++ "fuzz/bndiv-test-bin-bndiv.o", ++ "fuzz/bndiv-test-bin-test-corpus.o" ++ ], ++ "fuzz/bndiv-test-bin-bndiv.o" => [ ++ "fuzz/bndiv.c" ++ ], ++ "fuzz/bndiv-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/client-test" => [ ++ "fuzz/client-test-bin-client.o", ++ "fuzz/client-test-bin-fuzz_rand.o", ++ "fuzz/client-test-bin-test-corpus.o" ++ ], ++ "fuzz/client-test-bin-client.o" => [ ++ "fuzz/client.c" ++ ], ++ "fuzz/client-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/client-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cmp-test" => [ ++ "fuzz/cmp-test-bin-cmp.o", ++ "fuzz/cmp-test-bin-fuzz_rand.o", ++ "fuzz/cmp-test-bin-test-corpus.o" ++ ], ++ "fuzz/cmp-test-bin-cmp.o" => [ ++ "fuzz/cmp.c" ++ ], ++ "fuzz/cmp-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/cmp-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cms-test" => [ ++ "fuzz/cms-test-bin-cms.o", ++ "fuzz/cms-test-bin-test-corpus.o" ++ ], ++ "fuzz/cms-test-bin-cms.o" => [ ++ "fuzz/cms.c" ++ ], ++ "fuzz/cms-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/conf-test" => [ ++ "fuzz/conf-test-bin-conf.o", ++ "fuzz/conf-test-bin-test-corpus.o" ++ ], ++ "fuzz/conf-test-bin-conf.o" => [ ++ "fuzz/conf.c" ++ ], ++ "fuzz/conf-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/crl-test" => [ ++ "fuzz/crl-test-bin-crl.o", ++ "fuzz/crl-test-bin-test-corpus.o" ++ ], ++ "fuzz/crl-test-bin-crl.o" => [ ++ "fuzz/crl.c" ++ ], ++ "fuzz/crl-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/ct-test" => [ ++ "fuzz/ct-test-bin-ct.o", ++ "fuzz/ct-test-bin-test-corpus.o" ++ ], ++ "fuzz/ct-test-bin-ct.o" => [ ++ "fuzz/ct.c" ++ ], ++ "fuzz/ct-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/server-test" => [ ++ "fuzz/server-test-bin-fuzz_rand.o", ++ "fuzz/server-test-bin-server.o", ++ "fuzz/server-test-bin-test-corpus.o" ++ ], ++ "fuzz/server-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/server-test-bin-server.o" => [ ++ "fuzz/server.c" ++ ], ++ "fuzz/server-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test" => [ ++ "fuzz/x509-test-bin-fuzz_rand.o", ++ "fuzz/x509-test-bin-test-corpus.o", ++ "fuzz/x509-test-bin-x509.o" ++ ], ++ "fuzz/x509-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/x509-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test-bin-x509.o" => [ ++ "fuzz/x509.c" ++ ], ++ "libcrypto" => [ ++ "crypto/aes/libcrypto-lib-aes-sw_64.o", ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aria/libcrypto-lib-aria.o", ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o", ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o", ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o", ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o", ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o", ++ "crypto/bn/libcrypto-lib-bn-sw_64.o", ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/bn/libcrypto-lib-sw_64-mont.o", ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o", ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o", ++ "crypto/chacha/libcrypto-lib-chacha_enc.o", ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o", ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o", ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o", ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o", ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o", ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o", ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o", ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o", ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o", ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o", ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o", ++ "crypto/kdf/libcrypto-lib-kdf_err.o", ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o", ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o", ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o", ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o", ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o", ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o", ++ "crypto/poly1305/libcrypto-lib-poly1305.o", ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o", ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o", ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o", ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o", ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/siphash/libcrypto-lib-siphash.o", ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o", ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o", ++ "crypto/sm4/libcrypto-lib-sm4.o", ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o", ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o", ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o", ++ "crypto/txt_db/libcrypto-lib-txt_db.o", ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o", ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o", ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o", ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o", ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "libssl" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/der/der_digests_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/der/der_dsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/der/der_dsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/der/der_dsa_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/der/der_ec_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/der/der_ec_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/der/der_ec_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/der/der_ecx_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/der/der_ecx_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/der/der_rsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/der/der_rsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/der/der_wrap_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/der/der_sm2_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/der/der_sm2_key.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/der/der_sm2_sig.c" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/libcommon-lib-provider_ctx.o" => [ ++ "providers/common/provider_ctx.c" ++ ], ++ "providers/common/libcommon-lib-provider_err.o" => [ ++ "providers/common/provider_err.c" ++ ], ++ "providers/common/libdefault-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libdefault-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libdefault-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libdefault-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libdefault-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck_default.o" => [ ++ "providers/common/securitycheck_default.c" ++ ], ++ "providers/common/libfips-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libfips-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libfips-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libfips-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libfips-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libfips-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libfips-lib-securitycheck_fips.o" => [ ++ "providers/common/securitycheck_fips.c" ++ ], ++ "providers/fips" => [ ++ "providers/fips.ld", ++ "providers/fips/fips-dso-fips_entry.o" ++ ], ++ "providers/fips/fips-dso-fips_entry.o" => [ ++ "providers/fips/fips_entry.c" ++ ], ++ "providers/fips/libfips-lib-fipsprov.o" => [ ++ "providers/fips/fipsprov.c" ++ ], ++ "providers/fips/libfips-lib-self_test.o" => [ ++ "providers/fips/self_test.c" ++ ], ++ "providers/fips/libfips-lib-self_test_kats.o" => [ ++ "providers/fips/self_test_kats.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o" => [ ++ "providers/implementations/asymciphers/sm2_enc.c" ++ ], ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o" => [ ++ "providers/implementations/ciphers/ciphercommon.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o" => [ ++ "providers/implementations/ciphers/ciphercommon_block.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o" => [ ++ "providers/implementations/ciphers/cipher_aria.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o" => [ ++ "providers/implementations/ciphers/cipher_camellia.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o" => [ ++ "providers/implementations/ciphers/cipher_camellia_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o" => [ ++ "providers/implementations/ciphers/cipher_null.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ ++ "providers/implementations/ciphers/cipher_sm4.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_sm4_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o" => [ ++ "providers/implementations/ciphers/cipher_cast5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_cast5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o" => [ ++ "providers/implementations/ciphers/cipher_des.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o" => [ ++ "providers/implementations/ciphers/cipher_des_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o" => [ ++ "providers/implementations/ciphers/cipher_desx.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o" => [ ++ "providers/implementations/ciphers/cipher_desx_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o" => [ ++ "providers/implementations/ciphers/cipher_idea.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o" => [ ++ "providers/implementations/ciphers/cipher_idea_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o" => [ ++ "providers/implementations/ciphers/cipher_rc2.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc2_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o" => [ ++ "providers/implementations/ciphers/cipher_rc4.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o" => [ ++ "providers/implementations/ciphers/cipher_seed.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o" => [ ++ "providers/implementations/ciphers/cipher_seed_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/digests/libcommon-lib-digestcommon.o" => [ ++ "providers/implementations/digests/digestcommon.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o" => [ ++ "providers/implementations/digests/blake2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o" => [ ++ "providers/implementations/digests/blake2b_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o" => [ ++ "providers/implementations/digests/blake2s_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_prov.o" => [ ++ "providers/implementations/digests/md5_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o" => [ ++ "providers/implementations/digests/md5_sha1_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-null_prov.o" => [ ++ "providers/implementations/digests/null_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o" => [ ++ "providers/implementations/digests/sm3_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o" => [ ++ "providers/implementations/digests/md4_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o" => [ ++ "providers/implementations/digests/mdc2_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o" => [ ++ "providers/implementations/digests/ripemd_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" => [ ++ "providers/implementations/digests/wp_prov.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o" => [ ++ "providers/implementations/encode_decode/decode_der2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o" => [ ++ "providers/implementations/encode_decode/decode_epki2pki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o" => [ ++ "providers/implementations/encode_decode/decode_msblob2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o" => [ ++ "providers/implementations/encode_decode/decode_pem2der.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o" => [ ++ "providers/implementations/encode_decode/decode_pvk2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o" => [ ++ "providers/implementations/encode_decode/decode_spki2typespki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/implementations/encode_decode/encode_key2any.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o" => [ ++ "providers/implementations/encode_decode/encode_key2blob.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o" => [ ++ "providers/implementations/encode_decode/encode_key2ms.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o" => [ ++ "providers/implementations/encode_decode/encode_key2text.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ ++ "providers/implementations/encode_decode/endecoder_common.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o" => [ ++ "providers/implementations/kdfs/krb5kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o" => [ ++ "providers/implementations/kdfs/pkcs12kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o" => [ ++ "providers/implementations/kdfs/scrypt.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ ++ "providers/implementations/kdfs/pbkdf1.c" ++ ], ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ ++ "providers/implementations/macs/blake2b_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o" => [ ++ "providers/implementations/macs/blake2s_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o" => [ ++ "providers/implementations/macs/poly1305_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o" => [ ++ "providers/implementations/macs/siphash_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-seed_src.o" => [ ++ "providers/implementations/rands/seed_src.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/libfips-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libfips-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o" => [ ++ "providers/implementations/rands/seeding/rand_cpu_x86.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o" => [ ++ "providers/implementations/rands/seeding/rand_tsc.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o" => [ ++ "providers/implementations/rands/seeding/rand_unix.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" => [ ++ "providers/implementations/rands/seeding/rand_win.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/implementations/signature/sm2_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ ++ "providers/implementations/storemgmt/file_store.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ ++ "providers/implementations/storemgmt/file_store_any2obj.c" ++ ], ++ "providers/legacy" => [ ++ "providers/legacy-dso-legacyprov.o", ++ "providers/legacy.ld" ++ ], ++ "providers/legacy-dso-legacyprov.o" => [ ++ "providers/legacyprov.c" ++ ], ++ "providers/libcommon.a" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "providers/libcrypto-lib-baseprov.o" => [ ++ "providers/baseprov.c" ++ ], ++ "providers/libcrypto-lib-defltprov.o" => [ ++ "providers/defltprov.c" ++ ], ++ "providers/libcrypto-lib-nullprov.o" => [ ++ "providers/nullprov.c" ++ ], ++ "providers/libcrypto-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o", ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", ++ "ssl/libdefault-lib-s3_cbc.o" ++ ], ++ "providers/libfips.a" => [ ++ "crypto/aes/libfips-lib-aes-sw_64.o", ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o", ++ "crypto/bn/libfips-lib-bn-sw_64.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/bn/libfips-lib-sw_64-mont.o", ++ "crypto/buffer/libfips-lib-buffer.o", ++ "crypto/cmac/libfips-lib-cmac.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o", ++ "crypto/hmac/libfips-lib-hmac.o", ++ "crypto/lhash/libfips-lib-lhash.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o", ++ "crypto/rand/libfips-lib-rand_lib.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1-sw_64.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256-sw_64.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512-sw_64.o", ++ "crypto/sha/libfips-lib-sha512.o", ++ "crypto/stack/libfips-lib-stack.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o", ++ "providers/libcommon.a", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "providers/liblegacy-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/liblegacy.a" => [ ++ "crypto/bn/liblegacy-lib-bn-sw_64.o", ++ "crypto/bn/liblegacy-lib-sw_64-mont.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", ++ "providers/liblegacy-lib-prov_running.o" ++ ], ++ "ssl/libdefault-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libfips-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libssl-lib-bio_ssl.o" => [ ++ "ssl/bio_ssl.c" ++ ], ++ "ssl/libssl-lib-d1_lib.o" => [ ++ "ssl/d1_lib.c" ++ ], ++ "ssl/libssl-lib-d1_msg.o" => [ ++ "ssl/d1_msg.c" ++ ], ++ "ssl/libssl-lib-d1_srtp.o" => [ ++ "ssl/d1_srtp.c" ++ ], ++ "ssl/libssl-lib-methods.o" => [ ++ "ssl/methods.c" ++ ], ++ "ssl/libssl-lib-pqueue.o" => [ ++ "ssl/pqueue.c" ++ ], ++ "ssl/libssl-lib-s3_enc.o" => [ ++ "ssl/s3_enc.c" ++ ], ++ "ssl/libssl-lib-s3_lib.o" => [ ++ "ssl/s3_lib.c" ++ ], ++ "ssl/libssl-lib-s3_msg.o" => [ ++ "ssl/s3_msg.c" ++ ], ++ "ssl/libssl-lib-ssl_asn1.o" => [ ++ "ssl/ssl_asn1.c" ++ ], ++ "ssl/libssl-lib-ssl_cert.o" => [ ++ "ssl/ssl_cert.c" ++ ], ++ "ssl/libssl-lib-ssl_ciph.o" => [ ++ "ssl/ssl_ciph.c" ++ ], ++ "ssl/libssl-lib-ssl_conf.o" => [ ++ "ssl/ssl_conf.c" ++ ], ++ "ssl/libssl-lib-ssl_err.o" => [ ++ "ssl/ssl_err.c" ++ ], ++ "ssl/libssl-lib-ssl_err_legacy.o" => [ ++ "ssl/ssl_err_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_init.o" => [ ++ "ssl/ssl_init.c" ++ ], ++ "ssl/libssl-lib-ssl_lib.o" => [ ++ "ssl/ssl_lib.c" ++ ], ++ "ssl/libssl-lib-ssl_mcnf.o" => [ ++ "ssl/ssl_mcnf.c" ++ ], ++ "ssl/libssl-lib-ssl_quic.o" => [ ++ "ssl/ssl_quic.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa.o" => [ ++ "ssl/ssl_rsa.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa_legacy.o" => [ ++ "ssl/ssl_rsa_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_sess.o" => [ ++ "ssl/ssl_sess.c" ++ ], ++ "ssl/libssl-lib-ssl_stat.o" => [ ++ "ssl/ssl_stat.c" ++ ], ++ "ssl/libssl-lib-ssl_txt.o" => [ ++ "ssl/ssl_txt.c" ++ ], ++ "ssl/libssl-lib-ssl_utst.o" => [ ++ "ssl/ssl_utst.c" ++ ], ++ "ssl/libssl-lib-t1_enc.o" => [ ++ "ssl/t1_enc.c" ++ ], ++ "ssl/libssl-lib-t1_lib.o" => [ ++ "ssl/t1_lib.c" ++ ], ++ "ssl/libssl-lib-t1_trce.o" => [ ++ "ssl/t1_trce.c" ++ ], ++ "ssl/libssl-lib-tls13_enc.o" => [ ++ "ssl/tls13_enc.c" ++ ], ++ "ssl/libssl-lib-tls_depr.o" => [ ++ "ssl/tls_depr.c" ++ ], ++ "ssl/libssl-lib-tls_srp.o" => [ ++ "ssl/tls_srp.c" ++ ], ++ "ssl/record/libcommon-lib-tls_pad.o" => [ ++ "ssl/record/tls_pad.c" ++ ], ++ "ssl/record/libssl-lib-dtls1_bitmap.o" => [ ++ "ssl/record/dtls1_bitmap.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_d1.o" => [ ++ "ssl/record/rec_layer_d1.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_s3.o" => [ ++ "ssl/record/rec_layer_s3.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_buffer.o" => [ ++ "ssl/record/ssl3_buffer.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record.o" => [ ++ "ssl/record/ssl3_record.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ ++ "ssl/record/ssl3_record_tls13.c" ++ ], ++ "ssl/statem/libssl-lib-extensions.o" => [ ++ "ssl/statem/extensions.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_clnt.o" => [ ++ "ssl/statem/extensions_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_cust.o" => [ ++ "ssl/statem/extensions_cust.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_srvr.o" => [ ++ "ssl/statem/extensions_srvr.c" ++ ], ++ "ssl/statem/libssl-lib-statem.o" => [ ++ "ssl/statem/statem.c" ++ ], ++ "ssl/statem/libssl-lib-statem_clnt.o" => [ ++ "ssl/statem/statem_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-statem_dtls.o" => [ ++ "ssl/statem/statem_dtls.c" ++ ], ++ "ssl/statem/libssl-lib-statem_lib.o" => [ ++ "ssl/statem/statem_lib.c" ++ ], ++ "ssl/statem/libssl-lib-statem_quic.o" => [ ++ "ssl/statem/statem_quic.c" ++ ], ++ "ssl/statem/libssl-lib-statem_srvr.o" => [ ++ "ssl/statem/statem_srvr.c" ++ ], ++ "test/aborttest" => [ ++ "test/aborttest-bin-aborttest.o" ++ ], ++ "test/aborttest-bin-aborttest.o" => [ ++ "test/aborttest.c" ++ ], ++ "test/acvp_test" => [ ++ "test/acvp_test-bin-acvp_test.o" ++ ], ++ "test/acvp_test-bin-acvp_test.o" => [ ++ "test/acvp_test.c" ++ ], ++ "test/aesgcmtest" => [ ++ "test/aesgcmtest-bin-aesgcmtest.o" ++ ], ++ "test/aesgcmtest-bin-aesgcmtest.o" => [ ++ "test/aesgcmtest.c" ++ ], ++ "test/afalgtest" => [ ++ "test/afalgtest-bin-afalgtest.o" ++ ], ++ "test/afalgtest-bin-afalgtest.o" => [ ++ "test/afalgtest.c" ++ ], ++ "test/algorithmid_test" => [ ++ "test/algorithmid_test-bin-algorithmid_test.o" ++ ], ++ "test/algorithmid_test-bin-algorithmid_test.o" => [ ++ "test/algorithmid_test.c" ++ ], ++ "test/asn1_decode_test" => [ ++ "test/asn1_decode_test-bin-asn1_decode_test.o" ++ ], ++ "test/asn1_decode_test-bin-asn1_decode_test.o" => [ ++ "test/asn1_decode_test.c" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" ++ ], ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" => [ ++ "test/asn1_dsa_internal_test.c" ++ ], ++ "test/asn1_encode_test" => [ ++ "test/asn1_encode_test-bin-asn1_encode_test.o" ++ ], ++ "test/asn1_encode_test-bin-asn1_encode_test.o" => [ ++ "test/asn1_encode_test.c" ++ ], ++ "test/asn1_internal_test" => [ ++ "test/asn1_internal_test-bin-asn1_internal_test.o" ++ ], ++ "test/asn1_internal_test-bin-asn1_internal_test.o" => [ ++ "test/asn1_internal_test.c" ++ ], ++ "test/asn1_string_table_test" => [ ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" ++ ], ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" => [ ++ "test/asn1_string_table_test.c" ++ ], ++ "test/asn1_time_test" => [ ++ "test/asn1_time_test-bin-asn1_time_test.o" ++ ], ++ "test/asn1_time_test-bin-asn1_time_test.o" => [ ++ "test/asn1_time_test.c" ++ ], ++ "test/asynciotest" => [ ++ "test/asynciotest-bin-asynciotest.o", ++ "test/helpers/asynciotest-bin-ssltestlib.o" ++ ], ++ "test/asynciotest-bin-asynciotest.o" => [ ++ "test/asynciotest.c" ++ ], ++ "test/asynctest" => [ ++ "test/asynctest-bin-asynctest.o" ++ ], ++ "test/asynctest-bin-asynctest.o" => [ ++ "test/asynctest.c" ++ ], ++ "test/bad_dtls_test" => [ ++ "test/bad_dtls_test-bin-bad_dtls_test.o" ++ ], ++ "test/bad_dtls_test-bin-bad_dtls_test.o" => [ ++ "test/bad_dtls_test.c" ++ ], ++ "test/bftest" => [ ++ "test/bftest-bin-bftest.o" ++ ], ++ "test/bftest-bin-bftest.o" => [ ++ "test/bftest.c" ++ ], ++ "test/bio_callback_test" => [ ++ "test/bio_callback_test-bin-bio_callback_test.o" ++ ], ++ "test/bio_callback_test-bin-bio_callback_test.o" => [ ++ "test/bio_callback_test.c" ++ ], ++ "test/bio_core_test" => [ ++ "test/bio_core_test-bin-bio_core_test.o" ++ ], ++ "test/bio_core_test-bin-bio_core_test.o" => [ ++ "test/bio_core_test.c" ++ ], ++ "test/bio_enc_test" => [ ++ "test/bio_enc_test-bin-bio_enc_test.o" ++ ], ++ "test/bio_enc_test-bin-bio_enc_test.o" => [ ++ "test/bio_enc_test.c" ++ ], ++ "test/bio_memleak_test" => [ ++ "test/bio_memleak_test-bin-bio_memleak_test.o" ++ ], ++ "test/bio_memleak_test-bin-bio_memleak_test.o" => [ ++ "test/bio_memleak_test.c" ++ ], ++ "test/bio_prefix_text" => [ ++ "test/bio_prefix_text-bin-bio_prefix_text.o" ++ ], ++ "test/bio_prefix_text-bin-bio_prefix_text.o" => [ ++ "test/bio_prefix_text.c" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" ++ ], ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ ++ "test/bio_readbuffer_test.c" ++ ], ++ "test/bioprinttest" => [ ++ "test/bioprinttest-bin-bioprinttest.o" ++ ], ++ "test/bioprinttest-bin-bioprinttest.o" => [ ++ "test/bioprinttest.c" ++ ], ++ "test/bn_internal_test" => [ ++ "test/bn_internal_test-bin-bn_internal_test.o" ++ ], ++ "test/bn_internal_test-bin-bn_internal_test.o" => [ ++ "test/bn_internal_test.c" ++ ], ++ "test/bntest" => [ ++ "test/bntest-bin-bntest.o" ++ ], ++ "test/bntest-bin-bntest.o" => [ ++ "test/bntest.c" ++ ], ++ "test/buildtest_c_aes" => [ ++ "test/buildtest_c_aes-bin-buildtest_aes.o" ++ ], ++ "test/buildtest_c_aes-bin-buildtest_aes.o" => [ ++ "test/buildtest_aes.c" ++ ], ++ "test/buildtest_c_async" => [ ++ "test/buildtest_c_async-bin-buildtest_async.o" ++ ], ++ "test/buildtest_c_async-bin-buildtest_async.o" => [ ++ "test/buildtest_async.c" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" ++ ], ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" => [ ++ "test/buildtest_blowfish.c" ++ ], ++ "test/buildtest_c_bn" => [ ++ "test/buildtest_c_bn-bin-buildtest_bn.o" ++ ], ++ "test/buildtest_c_bn-bin-buildtest_bn.o" => [ ++ "test/buildtest_bn.c" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" ++ ], ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ ++ "test/buildtest_buffer.c" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ++ ], ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" => [ ++ "test/buildtest_camellia.c" ++ ], ++ "test/buildtest_c_cast" => [ ++ "test/buildtest_c_cast-bin-buildtest_cast.o" ++ ], ++ "test/buildtest_c_cast-bin-buildtest_cast.o" => [ ++ "test/buildtest_cast.c" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" ++ ], ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" => [ ++ "test/buildtest_cmac.c" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" ++ ], ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" => [ ++ "test/buildtest_cmp_util.c" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" ++ ], ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" => [ ++ "test/buildtest_conf_api.c" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" ++ ], ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" => [ ++ "test/buildtest_conftypes.c" ++ ], ++ "test/buildtest_c_core" => [ ++ "test/buildtest_c_core-bin-buildtest_core.o" ++ ], ++ "test/buildtest_c_core-bin-buildtest_core.o" => [ ++ "test/buildtest_core.c" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" ++ ], ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ ++ "test/buildtest_core_dispatch.c" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" ++ ], ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ ++ "test/buildtest_core_names.c" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ++ ], ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" => [ ++ "test/buildtest_core_object.c" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" ++ ], ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" => [ ++ "test/buildtest_cryptoerr_legacy.c" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" ++ ], ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" => [ ++ "test/buildtest_decoder.c" ++ ], ++ "test/buildtest_c_des" => [ ++ "test/buildtest_c_des-bin-buildtest_des.o" ++ ], ++ "test/buildtest_c_des-bin-buildtest_des.o" => [ ++ "test/buildtest_des.c" ++ ], ++ "test/buildtest_c_dh" => [ ++ "test/buildtest_c_dh-bin-buildtest_dh.o" ++ ], ++ "test/buildtest_c_dh-bin-buildtest_dh.o" => [ ++ "test/buildtest_dh.c" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" ++ ], ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" => [ ++ "test/buildtest_dsa.c" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" ++ ], ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" => [ ++ "test/buildtest_dtls1.c" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" ++ ], ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ ++ "test/buildtest_e_os2.c" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ++ ], ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" => [ ++ "test/buildtest_ebcdic.c" ++ ], ++ "test/buildtest_c_ec" => [ ++ "test/buildtest_c_ec-bin-buildtest_ec.o" ++ ], ++ "test/buildtest_c_ec-bin-buildtest_ec.o" => [ ++ "test/buildtest_ec.c" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" ++ ], ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" => [ ++ "test/buildtest_ecdh.c" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" ++ ], ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" => [ ++ "test/buildtest_ecdsa.c" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" ++ ], ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" => [ ++ "test/buildtest_encoder.c" ++ ], ++ "test/buildtest_c_engine" => [ ++ "test/buildtest_c_engine-bin-buildtest_engine.o" ++ ], ++ "test/buildtest_c_engine-bin-buildtest_engine.o" => [ ++ "test/buildtest_engine.c" ++ ], ++ "test/buildtest_c_evp" => [ ++ "test/buildtest_c_evp-bin-buildtest_evp.o" ++ ], ++ "test/buildtest_c_evp-bin-buildtest_evp.o" => [ ++ "test/buildtest_evp.c" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" ++ ], ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" => [ ++ "test/buildtest_fips_names.c" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" ++ ], ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ ++ "test/buildtest_hmac.c" ++ ], ++ "test/buildtest_c_http" => [ ++ "test/buildtest_c_http-bin-buildtest_http.o" ++ ], ++ "test/buildtest_c_http-bin-buildtest_http.o" => [ ++ "test/buildtest_http.c" ++ ], ++ "test/buildtest_c_idea" => [ ++ "test/buildtest_c_idea-bin-buildtest_idea.o" ++ ], ++ "test/buildtest_c_idea-bin-buildtest_idea.o" => [ ++ "test/buildtest_idea.c" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ++ ], ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" => [ ++ "test/buildtest_kdf.c" ++ ], ++ "test/buildtest_c_macros" => [ ++ "test/buildtest_c_macros-bin-buildtest_macros.o" ++ ], ++ "test/buildtest_c_macros-bin-buildtest_macros.o" => [ ++ "test/buildtest_macros.c" ++ ], ++ "test/buildtest_c_md4" => [ ++ "test/buildtest_c_md4-bin-buildtest_md4.o" ++ ], ++ "test/buildtest_c_md4-bin-buildtest_md4.o" => [ ++ "test/buildtest_md4.c" ++ ], ++ "test/buildtest_c_md5" => [ ++ "test/buildtest_c_md5-bin-buildtest_md5.o" ++ ], ++ "test/buildtest_c_md5-bin-buildtest_md5.o" => [ ++ "test/buildtest_md5.c" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" ++ ], ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ ++ "test/buildtest_mdc2.c" ++ ], ++ "test/buildtest_c_modes" => [ ++ "test/buildtest_c_modes-bin-buildtest_modes.o" ++ ], ++ "test/buildtest_c_modes-bin-buildtest_modes.o" => [ ++ "test/buildtest_modes.c" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" ++ ], ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" => [ ++ "test/buildtest_obj_mac.c" ++ ], ++ "test/buildtest_c_objects" => [ ++ "test/buildtest_c_objects-bin-buildtest_objects.o" ++ ], ++ "test/buildtest_c_objects-bin-buildtest_objects.o" => [ ++ "test/buildtest_objects.c" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" ++ ], ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" => [ ++ "test/buildtest_ossl_typ.c" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" ++ ], ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" => [ ++ "test/buildtest_param_build.c" ++ ], ++ "test/buildtest_c_params" => [ ++ "test/buildtest_c_params-bin-buildtest_params.o" ++ ], ++ "test/buildtest_c_params-bin-buildtest_params.o" => [ ++ "test/buildtest_params.c" ++ ], ++ "test/buildtest_c_pem" => [ ++ "test/buildtest_c_pem-bin-buildtest_pem.o" ++ ], ++ "test/buildtest_c_pem-bin-buildtest_pem.o" => [ ++ "test/buildtest_pem.c" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" ++ ], ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" => [ ++ "test/buildtest_pem2.c" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" ++ ], ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" => [ ++ "test/buildtest_prov_ssl.c" ++ ], ++ "test/buildtest_c_provider" => [ ++ "test/buildtest_c_provider-bin-buildtest_provider.o" ++ ], ++ "test/buildtest_c_provider-bin-buildtest_provider.o" => [ ++ "test/buildtest_provider.c" ++ ], ++ "test/buildtest_c_quic" => [ ++ "test/buildtest_c_quic-bin-buildtest_quic.o" ++ ], ++ "test/buildtest_c_quic-bin-buildtest_quic.o" => [ ++ "test/buildtest_quic.c" ++ ], ++ "test/buildtest_c_rand" => [ ++ "test/buildtest_c_rand-bin-buildtest_rand.o" ++ ], ++ "test/buildtest_c_rand-bin-buildtest_rand.o" => [ ++ "test/buildtest_rand.c" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" ++ ], ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" => [ ++ "test/buildtest_rc2.c" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" ++ ], ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" => [ ++ "test/buildtest_rc4.c" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" ++ ], ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" => [ ++ "test/buildtest_ripemd.c" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" ++ ], ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" => [ ++ "test/buildtest_rsa.c" ++ ], ++ "test/buildtest_c_seed" => [ ++ "test/buildtest_c_seed-bin-buildtest_seed.o" ++ ], ++ "test/buildtest_c_seed-bin-buildtest_seed.o" => [ ++ "test/buildtest_seed.c" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" ++ ], ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" => [ ++ "test/buildtest_self_test.c" ++ ], ++ "test/buildtest_c_sha" => [ ++ "test/buildtest_c_sha-bin-buildtest_sha.o" ++ ], ++ "test/buildtest_c_sha-bin-buildtest_sha.o" => [ ++ "test/buildtest_sha.c" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" ++ ], ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" => [ ++ "test/buildtest_srtp.c" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" ++ ], ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" => [ ++ "test/buildtest_ssl2.c" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" ++ ], ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" => [ ++ "test/buildtest_sslerr_legacy.c" ++ ], ++ "test/buildtest_c_stack" => [ ++ "test/buildtest_c_stack-bin-buildtest_stack.o" ++ ], ++ "test/buildtest_c_stack-bin-buildtest_stack.o" => [ ++ "test/buildtest_stack.c" ++ ], ++ "test/buildtest_c_store" => [ ++ "test/buildtest_c_store-bin-buildtest_store.o" ++ ], ++ "test/buildtest_c_store-bin-buildtest_store.o" => [ ++ "test/buildtest_store.c" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" ++ ], ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ ++ "test/buildtest_symhacks.c" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ++ ], ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" => [ ++ "test/buildtest_tls1.c" ++ ], ++ "test/buildtest_c_ts" => [ ++ "test/buildtest_c_ts-bin-buildtest_ts.o" ++ ], ++ "test/buildtest_c_ts-bin-buildtest_ts.o" => [ ++ "test/buildtest_ts.c" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" ++ ], ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" => [ ++ "test/buildtest_txt_db.c" ++ ], ++ "test/buildtest_c_types" => [ ++ "test/buildtest_c_types-bin-buildtest_types.o" ++ ], ++ "test/buildtest_c_types-bin-buildtest_types.o" => [ ++ "test/buildtest_types.c" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" ++ ], ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ ++ "test/buildtest_whrlpool.c" ++ ], ++ "test/casttest" => [ ++ "test/casttest-bin-casttest.o" ++ ], ++ "test/casttest-bin-casttest.o" => [ ++ "test/casttest.c" ++ ], ++ "test/chacha_internal_test" => [ ++ "test/chacha_internal_test-bin-chacha_internal_test.o" ++ ], ++ "test/chacha_internal_test-bin-chacha_internal_test.o" => [ ++ "test/chacha_internal_test.c" ++ ], ++ "test/cipher_overhead_test" => [ ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" ++ ], ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" => [ ++ "test/cipher_overhead_test.c" ++ ], ++ "test/cipherbytes_test" => [ ++ "test/cipherbytes_test-bin-cipherbytes_test.o" ++ ], ++ "test/cipherbytes_test-bin-cipherbytes_test.o" => [ ++ "test/cipherbytes_test.c" ++ ], ++ "test/cipherlist_test" => [ ++ "test/cipherlist_test-bin-cipherlist_test.o" ++ ], ++ "test/cipherlist_test-bin-cipherlist_test.o" => [ ++ "test/cipherlist_test.c" ++ ], ++ "test/ciphername_test" => [ ++ "test/ciphername_test-bin-ciphername_test.o" ++ ], ++ "test/ciphername_test-bin-ciphername_test.o" => [ ++ "test/ciphername_test.c" ++ ], ++ "test/clienthellotest" => [ ++ "test/clienthellotest-bin-clienthellotest.o" ++ ], ++ "test/clienthellotest-bin-clienthellotest.o" => [ ++ "test/clienthellotest.c" ++ ], ++ "test/cmactest" => [ ++ "test/cmactest-bin-cmactest.o" ++ ], ++ "test/cmactest-bin-cmactest.o" => [ ++ "test/cmactest.c" ++ ], ++ "test/cmp_asn_test" => [ ++ "test/cmp_asn_test-bin-cmp_asn_test.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_asn_test-bin-cmp_asn_test.o" => [ ++ "test/cmp_asn_test.c" ++ ], ++ "test/cmp_client_test" => [ ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "test/cmp_client_test-bin-cmp_client_test.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_client_test-bin-cmp_client_test.o" => [ ++ "test/cmp_client_test.c" ++ ], ++ "test/cmp_ctx_test" => [ ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o" => [ ++ "test/cmp_ctx_test.c" ++ ], ++ "test/cmp_hdr_test" => [ ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o" => [ ++ "test/cmp_hdr_test.c" ++ ], ++ "test/cmp_msg_test" => [ ++ "test/cmp_msg_test-bin-cmp_msg_test.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_msg_test-bin-cmp_msg_test.o" => [ ++ "test/cmp_msg_test.c" ++ ], ++ "test/cmp_protect_test" => [ ++ "test/cmp_protect_test-bin-cmp_protect_test.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_protect_test-bin-cmp_protect_test.o" => [ ++ "test/cmp_protect_test.c" ++ ], ++ "test/cmp_server_test" => [ ++ "test/cmp_server_test-bin-cmp_server_test.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_server_test-bin-cmp_server_test.o" => [ ++ "test/cmp_server_test.c" ++ ], ++ "test/cmp_status_test" => [ ++ "test/cmp_status_test-bin-cmp_status_test.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_status_test-bin-cmp_status_test.o" => [ ++ "test/cmp_status_test.c" ++ ], ++ "test/cmp_vfy_test" => [ ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o" => [ ++ "test/cmp_vfy_test.c" ++ ], ++ "test/cmsapitest" => [ ++ "test/cmsapitest-bin-cmsapitest.o" ++ ], ++ "test/cmsapitest-bin-cmsapitest.o" => [ ++ "test/cmsapitest.c" ++ ], ++ "test/conf_include_test" => [ ++ "test/conf_include_test-bin-conf_include_test.o" ++ ], ++ "test/conf_include_test-bin-conf_include_test.o" => [ ++ "test/conf_include_test.c" ++ ], ++ "test/confdump" => [ ++ "test/confdump-bin-confdump.o" ++ ], ++ "test/confdump-bin-confdump.o" => [ ++ "test/confdump.c" ++ ], ++ "test/constant_time_test" => [ ++ "test/constant_time_test-bin-constant_time_test.o" ++ ], ++ "test/constant_time_test-bin-constant_time_test.o" => [ ++ "test/constant_time_test.c" ++ ], ++ "test/context_internal_test" => [ ++ "test/context_internal_test-bin-context_internal_test.o" ++ ], ++ "test/context_internal_test-bin-context_internal_test.o" => [ ++ "test/context_internal_test.c" ++ ], ++ "test/crltest" => [ ++ "test/crltest-bin-crltest.o" ++ ], ++ "test/crltest-bin-crltest.o" => [ ++ "test/crltest.c" ++ ], ++ "test/ct_test" => [ ++ "test/ct_test-bin-ct_test.o" ++ ], ++ "test/ct_test-bin-ct_test.o" => [ ++ "test/ct_test.c" ++ ], ++ "test/ctype_internal_test" => [ ++ "test/ctype_internal_test-bin-ctype_internal_test.o" ++ ], ++ "test/ctype_internal_test-bin-ctype_internal_test.o" => [ ++ "test/ctype_internal_test.c" ++ ], ++ "test/curve448_internal_test" => [ ++ "test/curve448_internal_test-bin-curve448_internal_test.o" ++ ], ++ "test/curve448_internal_test-bin-curve448_internal_test.o" => [ ++ "test/curve448_internal_test.c" ++ ], ++ "test/d2i_test" => [ ++ "test/d2i_test-bin-d2i_test.o" ++ ], ++ "test/d2i_test-bin-d2i_test.o" => [ ++ "test/d2i_test.c" ++ ], ++ "test/danetest" => [ ++ "test/danetest-bin-danetest.o" ++ ], ++ "test/danetest-bin-danetest.o" => [ ++ "test/danetest.c" ++ ], ++ "test/defltfips_test" => [ ++ "test/defltfips_test-bin-defltfips_test.o" ++ ], ++ "test/defltfips_test-bin-defltfips_test.o" => [ ++ "test/defltfips_test.c" ++ ], ++ "test/destest" => [ ++ "test/destest-bin-destest.o" ++ ], ++ "test/destest-bin-destest.o" => [ ++ "test/destest.c" ++ ], ++ "test/dhtest" => [ ++ "test/dhtest-bin-dhtest.o" ++ ], ++ "test/dhtest-bin-dhtest.o" => [ ++ "test/dhtest.c" ++ ], ++ "test/drbgtest" => [ ++ "test/drbgtest-bin-drbgtest.o" ++ ], ++ "test/drbgtest-bin-drbgtest.o" => [ ++ "test/drbgtest.c" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" ++ ], ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" => [ ++ "test/dsa_no_digest_size_test.c" ++ ], ++ "test/dsatest" => [ ++ "test/dsatest-bin-dsatest.o" ++ ], ++ "test/dsatest-bin-dsatest.o" => [ ++ "test/dsatest.c" ++ ], ++ "test/dtls_mtu_test" => [ ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" ++ ], ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o" => [ ++ "test/dtls_mtu_test.c" ++ ], ++ "test/dtlstest" => [ ++ "test/dtlstest-bin-dtlstest.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o" ++ ], ++ "test/dtlstest-bin-dtlstest.o" => [ ++ "test/dtlstest.c" ++ ], ++ "test/dtlsv1listentest" => [ ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" ++ ], ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" => [ ++ "test/dtlsv1listentest.c" ++ ], ++ "test/ec_internal_test" => [ ++ "test/ec_internal_test-bin-ec_internal_test.o" ++ ], ++ "test/ec_internal_test-bin-ec_internal_test.o" => [ ++ "test/ec_internal_test.c" ++ ], ++ "test/ecdsatest" => [ ++ "test/ecdsatest-bin-ecdsatest.o" ++ ], ++ "test/ecdsatest-bin-ecdsatest.o" => [ ++ "test/ecdsatest.c" ++ ], ++ "test/ecstresstest" => [ ++ "test/ecstresstest-bin-ecstresstest.o" ++ ], ++ "test/ecstresstest-bin-ecstresstest.o" => [ ++ "test/ecstresstest.c" ++ ], ++ "test/ectest" => [ ++ "test/ectest-bin-ectest.o" ++ ], ++ "test/ectest-bin-ectest.o" => [ ++ "test/ectest.c" ++ ], ++ "test/endecode_test" => [ ++ "test/endecode_test-bin-endecode_test.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" ++ ], ++ "test/endecode_test-bin-endecode_test.o" => [ ++ "test/endecode_test.c" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" ++ ], ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" => [ ++ "test/endecoder_legacy_test.c" ++ ], ++ "test/enginetest" => [ ++ "test/enginetest-bin-enginetest.o" ++ ], ++ "test/enginetest-bin-enginetest.o" => [ ++ "test/enginetest.c" ++ ], ++ "test/errtest" => [ ++ "test/errtest-bin-errtest.o" ++ ], ++ "test/errtest-bin-errtest.o" => [ ++ "test/errtest.c" ++ ], ++ "test/evp_extra_test" => [ ++ "test/evp_extra_test-bin-evp_extra_test.o" ++ ], ++ "test/evp_extra_test-bin-evp_extra_test.o" => [ ++ "test/evp_extra_test.c" ++ ], ++ "test/evp_extra_test2" => [ ++ "test/evp_extra_test2-bin-evp_extra_test2.o" ++ ], ++ "test/evp_extra_test2-bin-evp_extra_test2.o" => [ ++ "test/evp_extra_test2.c" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ++ ], ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" => [ ++ "test/evp_fetch_prov_test.c" ++ ], ++ "test/evp_kdf_test" => [ ++ "test/evp_kdf_test-bin-evp_kdf_test.o" ++ ], ++ "test/evp_kdf_test-bin-evp_kdf_test.o" => [ ++ "test/evp_kdf_test.c" ++ ], ++ "test/evp_libctx_test" => [ ++ "test/evp_libctx_test-bin-evp_libctx_test.o" ++ ], ++ "test/evp_libctx_test-bin-evp_libctx_test.o" => [ ++ "test/evp_libctx_test.c" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" ++ ], ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ ++ "test/evp_pkey_ctx_new_from_name.c" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ++ ], ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" => [ ++ "test/evp_pkey_dparams_test.c" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" ++ ], ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ ++ "test/evp_pkey_provided_test.c" ++ ], ++ "test/evp_test" => [ ++ "test/evp_test-bin-evp_test.o" ++ ], ++ "test/evp_test-bin-evp_test.o" => [ ++ "test/evp_test.c" ++ ], ++ "test/exdatatest" => [ ++ "test/exdatatest-bin-exdatatest.o" ++ ], ++ "test/exdatatest-bin-exdatatest.o" => [ ++ "test/exdatatest.c" ++ ], ++ "test/exptest" => [ ++ "test/exptest-bin-exptest.o" ++ ], ++ "test/exptest-bin-exptest.o" => [ ++ "test/exptest.c" ++ ], ++ "test/fatalerrtest" => [ ++ "test/fatalerrtest-bin-fatalerrtest.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" ++ ], ++ "test/fatalerrtest-bin-fatalerrtest.o" => [ ++ "test/fatalerrtest.c" ++ ], ++ "test/ffc_internal_test" => [ ++ "test/ffc_internal_test-bin-ffc_internal_test.o" ++ ], ++ "test/ffc_internal_test-bin-ffc_internal_test.o" => [ ++ "test/ffc_internal_test.c" ++ ], ++ "test/gmdifftest" => [ ++ "test/gmdifftest-bin-gmdifftest.o" ++ ], ++ "test/gmdifftest-bin-gmdifftest.o" => [ ++ "test/gmdifftest.c" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ "test/helpers/pkcs12.c" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ "test/helpers/handshake.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake_srp.o" => [ ++ "test/helpers/handshake_srp.c" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/hexstr_test" => [ ++ "test/hexstr_test-bin-hexstr_test.o" ++ ], ++ "test/hexstr_test-bin-hexstr_test.o" => [ ++ "test/hexstr_test.c" ++ ], ++ "test/hmactest" => [ ++ "test/hmactest-bin-hmactest.o" ++ ], ++ "test/hmactest-bin-hmactest.o" => [ ++ "test/hmactest.c" ++ ], ++ "test/http_test" => [ ++ "test/http_test-bin-http_test.o" ++ ], ++ "test/http_test-bin-http_test.o" => [ ++ "test/http_test.c" ++ ], ++ "test/ideatest" => [ ++ "test/ideatest-bin-ideatest.o" ++ ], ++ "test/ideatest-bin-ideatest.o" => [ ++ "test/ideatest.c" ++ ], ++ "test/igetest" => [ ++ "test/igetest-bin-igetest.o" ++ ], ++ "test/igetest-bin-igetest.o" => [ ++ "test/igetest.c" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ++ ], ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" => [ ++ "test/keymgmt_internal_test.c" ++ ], ++ "test/lhash_test" => [ ++ "test/lhash_test-bin-lhash_test.o" ++ ], ++ "test/lhash_test-bin-lhash_test.o" => [ ++ "test/lhash_test.c" ++ ], ++ "test/libtestutil.a" => [ ++ "apps/lib/libtestutil-lib-opt.o", ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "test/localetest" => [ ++ "test/localetest-bin-localetest.o" ++ ], ++ "test/localetest-bin-localetest.o" => [ ++ "test/localetest.c" ++ ], ++ "test/mdc2_internal_test" => [ ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" ++ ], ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" => [ ++ "test/mdc2_internal_test.c" ++ ], ++ "test/mdc2test" => [ ++ "test/mdc2test-bin-mdc2test.o" ++ ], ++ "test/mdc2test-bin-mdc2test.o" => [ ++ "test/mdc2test.c" ++ ], ++ "test/memleaktest" => [ ++ "test/memleaktest-bin-memleaktest.o" ++ ], ++ "test/memleaktest-bin-memleaktest.o" => [ ++ "test/memleaktest.c" ++ ], ++ "test/modes_internal_test" => [ ++ "test/modes_internal_test-bin-modes_internal_test.o" ++ ], ++ "test/modes_internal_test-bin-modes_internal_test.o" => [ ++ "test/modes_internal_test.c" ++ ], ++ "test/namemap_internal_test" => [ ++ "test/namemap_internal_test-bin-namemap_internal_test.o" ++ ], ++ "test/namemap_internal_test-bin-namemap_internal_test.o" => [ ++ "test/namemap_internal_test.c" ++ ], ++ "test/ocspapitest" => [ ++ "test/ocspapitest-bin-ocspapitest.o" ++ ], ++ "test/ocspapitest-bin-ocspapitest.o" => [ ++ "test/ocspapitest.c" ++ ], ++ "test/ossl_store_test" => [ ++ "test/ossl_store_test-bin-ossl_store_test.o" ++ ], ++ "test/ossl_store_test-bin-ossl_store_test.o" => [ ++ "test/ossl_store_test.c" ++ ], ++ "test/p_test" => [ ++ "test/p_test-dso-p_test.o", ++ "test/p_test.ld" ++ ], ++ "test/p_test-dso-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/packettest" => [ ++ "test/packettest-bin-packettest.o" ++ ], ++ "test/packettest-bin-packettest.o" => [ ++ "test/packettest.c" ++ ], ++ "test/param_build_test" => [ ++ "test/param_build_test-bin-param_build_test.o" ++ ], ++ "test/param_build_test-bin-param_build_test.o" => [ ++ "test/param_build_test.c" ++ ], ++ "test/params_api_test" => [ ++ "test/params_api_test-bin-params_api_test.o" ++ ], ++ "test/params_api_test-bin-params_api_test.o" => [ ++ "test/params_api_test.c" ++ ], ++ "test/params_conversion_test" => [ ++ "test/params_conversion_test-bin-params_conversion_test.o" ++ ], ++ "test/params_conversion_test-bin-params_conversion_test.o" => [ ++ "test/params_conversion_test.c" ++ ], ++ "test/params_test" => [ ++ "test/params_test-bin-params_test.o" ++ ], ++ "test/params_test-bin-params_test.o" => [ ++ "test/params_test.c" ++ ], ++ "test/pbelutest" => [ ++ "test/pbelutest-bin-pbelutest.o" ++ ], ++ "test/pbelutest-bin-pbelutest.o" => [ ++ "test/pbelutest.c" ++ ], ++ "test/pbetest" => [ ++ "test/pbetest-bin-pbetest.o" ++ ], ++ "test/pbetest-bin-pbetest.o" => [ ++ "test/pbetest.c" ++ ], ++ "test/pem_read_depr_test" => [ ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" ++ ], ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" => [ ++ "test/pem_read_depr_test.c" ++ ], ++ "test/pemtest" => [ ++ "test/pemtest-bin-pemtest.o" ++ ], ++ "test/pemtest-bin-pemtest.o" => [ ++ "test/pemtest.c" ++ ], ++ "test/pkcs12_format_test" => [ ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" ++ ], ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" => [ ++ "test/pkcs12_format_test.c" ++ ], ++ "test/pkcs7_test" => [ ++ "test/pkcs7_test-bin-pkcs7_test.o" ++ ], ++ "test/pkcs7_test-bin-pkcs7_test.o" => [ ++ "test/pkcs7_test.c" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" ++ ], ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" => [ ++ "test/pkey_meth_kdf_test.c" ++ ], ++ "test/pkey_meth_test" => [ ++ "test/pkey_meth_test-bin-pkey_meth_test.o" ++ ], ++ "test/pkey_meth_test-bin-pkey_meth_test.o" => [ ++ "test/pkey_meth_test.c" ++ ], ++ "test/poly1305_internal_test" => [ ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" ++ ], ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ ++ "test/poly1305_internal_test.c" ++ ], ++ "test/property_test" => [ ++ "test/property_test-bin-property_test.o" ++ ], ++ "test/property_test-bin-property_test.o" => [ ++ "test/property_test.c" ++ ], ++ "test/prov_config_test" => [ ++ "test/prov_config_test-bin-prov_config_test.o" ++ ], ++ "test/prov_config_test-bin-prov_config_test.o" => [ ++ "test/prov_config_test.c" ++ ], ++ "test/provfetchtest" => [ ++ "test/provfetchtest-bin-provfetchtest.o" ++ ], ++ "test/provfetchtest-bin-provfetchtest.o" => [ ++ "test/provfetchtest.c" ++ ], ++ "test/provider_fallback_test" => [ ++ "test/provider_fallback_test-bin-provider_fallback_test.o" ++ ], ++ "test/provider_fallback_test-bin-provider_fallback_test.o" => [ ++ "test/provider_fallback_test.c" ++ ], ++ "test/provider_internal_test" => [ ++ "test/provider_internal_test-bin-p_test.o", ++ "test/provider_internal_test-bin-provider_internal_test.o" ++ ], ++ "test/provider_internal_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_internal_test-bin-provider_internal_test.o" => [ ++ "test/provider_internal_test.c" ++ ], ++ "test/provider_pkey_test" => [ ++ "test/provider_pkey_test-bin-fake_rsaprov.o", ++ "test/provider_pkey_test-bin-provider_pkey_test.o" ++ ], ++ "test/provider_pkey_test-bin-fake_rsaprov.o" => [ ++ "test/fake_rsaprov.c" ++ ], ++ "test/provider_pkey_test-bin-provider_pkey_test.o" => [ ++ "test/provider_pkey_test.c" ++ ], ++ "test/provider_status_test" => [ ++ "test/provider_status_test-bin-provider_status_test.o" ++ ], ++ "test/provider_status_test-bin-provider_status_test.o" => [ ++ "test/provider_status_test.c" ++ ], ++ "test/provider_test" => [ ++ "test/provider_test-bin-p_test.o", ++ "test/provider_test-bin-provider_test.o" ++ ], ++ "test/provider_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_test-bin-provider_test.o" => [ ++ "test/provider_test.c" ++ ], ++ "test/rand_status_test" => [ ++ "test/rand_status_test-bin-rand_status_test.o" ++ ], ++ "test/rand_status_test-bin-rand_status_test.o" => [ ++ "test/rand_status_test.c" ++ ], ++ "test/rand_test" => [ ++ "test/rand_test-bin-rand_test.o" ++ ], ++ "test/rand_test-bin-rand_test.o" => [ ++ "test/rand_test.c" ++ ], ++ "test/rc2test" => [ ++ "test/rc2test-bin-rc2test.o" ++ ], ++ "test/rc2test-bin-rc2test.o" => [ ++ "test/rc2test.c" ++ ], ++ "test/rc4test" => [ ++ "test/rc4test-bin-rc4test.o" ++ ], ++ "test/rc4test-bin-rc4test.o" => [ ++ "test/rc4test.c" ++ ], ++ "test/rc5test" => [ ++ "test/rc5test-bin-rc5test.o" ++ ], ++ "test/rc5test-bin-rc5test.o" => [ ++ "test/rc5test.c" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" ++ ], ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ ++ "test/rdrand_sanitytest.c" ++ ], ++ "test/recordlentest" => [ ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/recordlentest-bin-recordlentest.o" ++ ], ++ "test/recordlentest-bin-recordlentest.o" => [ ++ "test/recordlentest.c" ++ ], ++ "test/rsa_complex" => [ ++ "test/rsa_complex-bin-rsa_complex.o" ++ ], ++ "test/rsa_complex-bin-rsa_complex.o" => [ ++ "test/rsa_complex.c" ++ ], ++ "test/rsa_mp_test" => [ ++ "test/rsa_mp_test-bin-rsa_mp_test.o" ++ ], ++ "test/rsa_mp_test-bin-rsa_mp_test.o" => [ ++ "test/rsa_mp_test.c" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" ++ ], ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" => [ ++ "test/rsa_sp800_56b_test.c" ++ ], ++ "test/rsa_test" => [ ++ "test/rsa_test-bin-rsa_test.o" ++ ], ++ "test/rsa_test-bin-rsa_test.o" => [ ++ "test/rsa_test.c" ++ ], ++ "test/sanitytest" => [ ++ "test/sanitytest-bin-sanitytest.o" ++ ], ++ "test/sanitytest-bin-sanitytest.o" => [ ++ "test/sanitytest.c" ++ ], ++ "test/secmemtest" => [ ++ "test/secmemtest-bin-secmemtest.o" ++ ], ++ "test/secmemtest-bin-secmemtest.o" => [ ++ "test/secmemtest.c" ++ ], ++ "test/servername_test" => [ ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/servername_test-bin-servername_test.o" ++ ], ++ "test/servername_test-bin-servername_test.o" => [ ++ "test/servername_test.c" ++ ], ++ "test/sha_test" => [ ++ "test/sha_test-bin-sha_test.o" ++ ], ++ "test/sha_test-bin-sha_test.o" => [ ++ "test/sha_test.c" ++ ], ++ "test/siphash_internal_test" => [ ++ "test/siphash_internal_test-bin-siphash_internal_test.o" ++ ], ++ "test/siphash_internal_test-bin-siphash_internal_test.o" => [ ++ "test/siphash_internal_test.c" ++ ], ++ "test/sm2_internal_test" => [ ++ "test/sm2_internal_test-bin-sm2_internal_test.o" ++ ], ++ "test/sm2_internal_test-bin-sm2_internal_test.o" => [ ++ "test/sm2_internal_test.c" ++ ], ++ "test/sm3_internal_test" => [ ++ "test/sm3_internal_test-bin-sm3_internal_test.o" ++ ], ++ "test/sm3_internal_test-bin-sm3_internal_test.o" => [ ++ "test/sm3_internal_test.c" ++ ], ++ "test/sm4_internal_test" => [ ++ "test/sm4_internal_test-bin-sm4_internal_test.o" ++ ], ++ "test/sm4_internal_test-bin-sm4_internal_test.o" => [ ++ "test/sm4_internal_test.c" ++ ], ++ "test/sparse_array_test" => [ ++ "test/sparse_array_test-bin-sparse_array_test.o" ++ ], ++ "test/sparse_array_test-bin-sparse_array_test.o" => [ ++ "test/sparse_array_test.c" ++ ], ++ "test/srptest" => [ ++ "test/srptest-bin-srptest.o" ++ ], ++ "test/srptest-bin-srptest.o" => [ ++ "test/srptest.c" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" ++ ], ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" => [ ++ "test/ssl_cert_table_internal_test.c" ++ ], ++ "test/ssl_ctx_test" => [ ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" ++ ], ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ ++ "test/ssl_ctx_test.c" ++ ], ++ "test/ssl_old_test" => [ ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/ssl_old_test-bin-ssl_old_test.o" ++ ], ++ "test/ssl_old_test-bin-ssl_old_test.o" => [ ++ "test/ssl_old_test.c" ++ ], ++ "test/ssl_test" => [ ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/ssl_test-bin-ssl_test.o" ++ ], ++ "test/ssl_test-bin-ssl_test.o" => [ ++ "test/ssl_test.c" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" ++ ], ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" => [ ++ "test/ssl_test_ctx_test.c" ++ ], ++ "test/sslapitest" => [ ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/sslapitest-bin-filterprov.o", ++ "test/sslapitest-bin-sslapitest.o", ++ "test/sslapitest-bin-tls-provider.o" ++ ], ++ "test/sslapitest-bin-filterprov.o" => [ ++ "test/filterprov.c" ++ ], ++ "test/sslapitest-bin-sslapitest.o" => [ ++ "test/sslapitest.c" ++ ], ++ "test/sslapitest-bin-tls-provider.o" => [ ++ "test/tls-provider.c" ++ ], ++ "test/sslbuffertest" => [ ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/sslbuffertest-bin-sslbuffertest.o" ++ ], ++ "test/sslbuffertest-bin-sslbuffertest.o" => [ ++ "test/sslbuffertest.c" ++ ], ++ "test/sslcorrupttest" => [ ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/sslcorrupttest-bin-sslcorrupttest.o" ++ ], ++ "test/sslcorrupttest-bin-sslcorrupttest.o" => [ ++ "test/sslcorrupttest.c" ++ ], ++ "test/stack_test" => [ ++ "test/stack_test-bin-stack_test.o" ++ ], ++ "test/stack_test-bin-stack_test.o" => [ ++ "test/stack_test.c" ++ ], ++ "test/sysdefaulttest" => [ ++ "test/sysdefaulttest-bin-sysdefaulttest.o" ++ ], ++ "test/sysdefaulttest-bin-sysdefaulttest.o" => [ ++ "test/sysdefaulttest.c" ++ ], ++ "test/test_test" => [ ++ "test/test_test-bin-test_test.o" ++ ], ++ "test/test_test-bin-test_test.o" => [ ++ "test/test_test.c" ++ ], ++ "test/testutil/libtestutil-lib-apps_shims.o" => [ ++ "test/testutil/apps_shims.c" ++ ], ++ "test/testutil/libtestutil-lib-basic_output.o" => [ ++ "test/testutil/basic_output.c" ++ ], ++ "test/testutil/libtestutil-lib-cb.o" => [ ++ "test/testutil/cb.c" ++ ], ++ "test/testutil/libtestutil-lib-driver.o" => [ ++ "test/testutil/driver.c" ++ ], ++ "test/testutil/libtestutil-lib-fake_random.o" => [ ++ "test/testutil/fake_random.c" ++ ], ++ "test/testutil/libtestutil-lib-format_output.o" => [ ++ "test/testutil/format_output.c" ++ ], ++ "test/testutil/libtestutil-lib-load.o" => [ ++ "test/testutil/load.c" ++ ], ++ "test/testutil/libtestutil-lib-main.o" => [ ++ "test/testutil/main.c" ++ ], ++ "test/testutil/libtestutil-lib-options.o" => [ ++ "test/testutil/options.c" ++ ], ++ "test/testutil/libtestutil-lib-output.o" => [ ++ "test/testutil/output.c" ++ ], ++ "test/testutil/libtestutil-lib-provider.o" => [ ++ "test/testutil/provider.c" ++ ], ++ "test/testutil/libtestutil-lib-random.o" => [ ++ "test/testutil/random.c" ++ ], ++ "test/testutil/libtestutil-lib-stanza.o" => [ ++ "test/testutil/stanza.c" ++ ], ++ "test/testutil/libtestutil-lib-test_cleanup.o" => [ ++ "test/testutil/test_cleanup.c" ++ ], ++ "test/testutil/libtestutil-lib-test_options.o" => [ ++ "test/testutil/test_options.c" ++ ], ++ "test/testutil/libtestutil-lib-tests.o" => [ ++ "test/testutil/tests.c" ++ ], ++ "test/testutil/libtestutil-lib-testutil_init.o" => [ ++ "test/testutil/testutil_init.c" ++ ], ++ "test/threadstest" => [ ++ "test/threadstest-bin-threadstest.o" ++ ], ++ "test/threadstest-bin-threadstest.o" => [ ++ "test/threadstest.c" ++ ], ++ "test/threadstest_fips" => [ ++ "test/threadstest_fips-bin-threadstest_fips.o" ++ ], ++ "test/threadstest_fips-bin-threadstest_fips.o" => [ ++ "test/threadstest_fips.c" ++ ], ++ "test/time_offset_test" => [ ++ "test/time_offset_test-bin-time_offset_test.o" ++ ], ++ "test/time_offset_test-bin-time_offset_test.o" => [ ++ "test/time_offset_test.c" ++ ], ++ "test/tls13ccstest" => [ ++ "test/helpers/tls13ccstest-bin-ssltestlib.o", ++ "test/tls13ccstest-bin-tls13ccstest.o" ++ ], ++ "test/tls13ccstest-bin-tls13ccstest.o" => [ ++ "test/tls13ccstest.c" ++ ], ++ "test/tls13encryptiontest" => [ ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" ++ ], ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ ++ "test/tls13encryptiontest.c" ++ ], ++ "test/uitest" => [ ++ "apps/lib/uitest-bin-apps_ui.o", ++ "test/uitest-bin-uitest.o" ++ ], ++ "test/uitest-bin-uitest.o" => [ ++ "test/uitest.c" ++ ], ++ "test/upcallstest" => [ ++ "test/upcallstest-bin-upcallstest.o" ++ ], ++ "test/upcallstest-bin-upcallstest.o" => [ ++ "test/upcallstest.c" ++ ], ++ "test/user_property_test" => [ ++ "test/user_property_test-bin-user_property_test.o" ++ ], ++ "test/user_property_test-bin-user_property_test.o" => [ ++ "test/user_property_test.c" ++ ], ++ "test/v3ext" => [ ++ "test/v3ext-bin-v3ext.o" ++ ], ++ "test/v3ext-bin-v3ext.o" => [ ++ "test/v3ext.c" ++ ], ++ "test/v3nametest" => [ ++ "test/v3nametest-bin-v3nametest.o" ++ ], ++ "test/v3nametest-bin-v3nametest.o" => [ ++ "test/v3nametest.c" ++ ], ++ "test/verify_extra_test" => [ ++ "test/verify_extra_test-bin-verify_extra_test.o" ++ ], ++ "test/verify_extra_test-bin-verify_extra_test.o" => [ ++ "test/verify_extra_test.c" ++ ], ++ "test/versions" => [ ++ "test/versions-bin-versions.o" ++ ], ++ "test/versions-bin-versions.o" => [ ++ "test/versions.c" ++ ], ++ "test/wpackettest" => [ ++ "test/wpackettest-bin-wpackettest.o" ++ ], ++ "test/wpackettest-bin-wpackettest.o" => [ ++ "test/wpackettest.c" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ++ ], ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" => [ ++ "test/x509_check_cert_pkey_test.c" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" ++ ], ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" => [ ++ "test/x509_dup_cert_test.c" ++ ], ++ "test/x509_internal_test" => [ ++ "test/x509_internal_test-bin-x509_internal_test.o" ++ ], ++ "test/x509_internal_test-bin-x509_internal_test.o" => [ ++ "test/x509_internal_test.c" ++ ], ++ "test/x509_time_test" => [ ++ "test/x509_time_test-bin-x509_time_test.o" ++ ], ++ "test/x509_time_test-bin-x509_time_test.o" => [ ++ "test/x509_time_test.c" ++ ], ++ "test/x509aux" => [ ++ "test/x509aux-bin-x509aux.o" ++ ], ++ "test/x509aux-bin-x509aux.o" => [ ++ "test/x509aux.c" ++ ], ++ "tools/c_rehash" => [ ++ "tools/c_rehash.in" ++ ], ++ "util/shlib_wrap.sh" => [ ++ "util/shlib_wrap.sh.in" ++ ], ++ "util/wrap.pl" => [ ++ "util/wrap.pl.in" ++ ] ++ }, ++ "targets" => [ ++ "build_modules_nodep" ++ ] ++); ++ ++# Unexported, only used by OpenSSL::Test::Utils::available_protocols() ++our %available_protocols = ( ++ tls => [ ++ "ssl3", ++ "tls1", ++ "tls1_1", ++ "tls1_2", ++ "tls1_3" ++], ++ dtls => [ ++ "dtls1", ++ "dtls1_2" ++], ++); ++ ++# The following data is only used when this files is use as a script ++my @makevars = ( ++ "AR", ++ "ARFLAGS", ++ "AS", ++ "ASFLAGS", ++ "CC", ++ "CFLAGS", ++ "CPP", ++ "CPPDEFINES", ++ "CPPFLAGS", ++ "CPPINCLUDES", ++ "CROSS_COMPILE", ++ "CXX", ++ "CXXFLAGS", ++ "HASHBANGPERL", ++ "LD", ++ "LDFLAGS", ++ "LDLIBS", ++ "MT", ++ "MTFLAGS", ++ "PERL", ++ "RANLIB", ++ "RC", ++ "RCFLAGS", ++ "RM" ++); ++my %disabled_info = ( ++ "afalgeng" => { ++ "macro" => "OPENSSL_NO_AFALGENG" ++ }, ++ "asan" => { ++ "macro" => "OPENSSL_NO_ASAN" ++ }, ++ "comp" => { ++ "macro" => "OPENSSL_NO_COMP", ++ "skipped" => [ ++ "crypto/comp" ++ ] ++ }, ++ "crypto-mdebug" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG" ++ }, ++ "crypto-mdebug-backtrace" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" ++ }, ++ "devcryptoeng" => { ++ "macro" => "OPENSSL_NO_DEVCRYPTOENG" ++ }, ++ "ec_nistp_64_gcc_128" => { ++ "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" ++ }, ++ "egd" => { ++ "macro" => "OPENSSL_NO_EGD" ++ }, ++ "external-tests" => { ++ "macro" => "OPENSSL_NO_EXTERNAL_TESTS" ++ }, ++ "fuzz-afl" => { ++ "macro" => "OPENSSL_NO_FUZZ_AFL" ++ }, ++ "fuzz-libfuzzer" => { ++ "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" ++ }, ++ "ktls" => { ++ "macro" => "OPENSSL_NO_KTLS" ++ }, ++ "loadereng" => { ++ "macro" => "OPENSSL_NO_LOADERENG" ++ }, ++ "md2" => { ++ "macro" => "OPENSSL_NO_MD2", ++ "skipped" => [ ++ "crypto/md2" ++ ] ++ }, ++ "msan" => { ++ "macro" => "OPENSSL_NO_MSAN" ++ }, ++ "rc5" => { ++ "macro" => "OPENSSL_NO_RC5", ++ "skipped" => [ ++ "crypto/rc5" ++ ] ++ }, ++ "sctp" => { ++ "macro" => "OPENSSL_NO_SCTP" ++ }, ++ "ssl3" => { ++ "macro" => "OPENSSL_NO_SSL3" ++ }, ++ "ssl3-method" => { ++ "macro" => "OPENSSL_NO_SSL3_METHOD" ++ }, ++ "trace" => { ++ "macro" => "OPENSSL_NO_TRACE" ++ }, ++ "ubsan" => { ++ "macro" => "OPENSSL_NO_UBSAN" ++ }, ++ "unit-test" => { ++ "macro" => "OPENSSL_NO_UNIT_TEST" ++ }, ++ "uplink" => { ++ "macro" => "OPENSSL_NO_UPLINK" ++ }, ++ "weak-ssl-ciphers" => { ++ "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" ++ } ++); ++my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); ++ ++# If run directly, we can give some answers, and even reconfigure ++unless (caller) { ++ use Getopt::Long; ++ use File::Spec::Functions; ++ use File::Basename; ++ use File::Compare qw(compare_text); ++ use File::Copy; ++ use Pod::Usage; ++ ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++ use OpenSSL::fallback '/home/rafaelgss/repos/os/node/deps/openssl/openssl/external/perl/MODULES.txt'; ++ ++ my $here = dirname($0); ++ ++ if (scalar @ARGV == 0) { ++ # With no arguments, re-create the build file ++ # We do that in two steps, where the first step emits perl ++ # snipets. ++ ++ my $buildfile = $target{build_file}; ++ my $buildfile_template = "$buildfile.in"; ++ my @autowarntext = ( ++ 'WARNING: do not edit!', ++ "Generated by configdata.pm from " ++ .join(", ", @{$config{build_file_templates}}), ++ "via $buildfile_template" ++ ); ++ my %gendata = ( ++ config => \%config, ++ target => \%target, ++ disabled => \%disabled, ++ withargs => \%withargs, ++ unified_info => \%unified_info, ++ autowarntext => \@autowarntext, ++ ); ++ ++ use lib '.'; ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++ use gentemplate; ++ ++ open my $buildfile_template_fh, ">$buildfile_template" ++ or die "Trying to create $buildfile_template: $!"; ++ foreach (@{$config{build_file_templates}}) { ++ copy($_, $buildfile_template_fh) ++ or die "Trying to copy $_ into $buildfile_template: $!"; ++ } ++ gentemplate(output => $buildfile_template_fh, %gendata); ++ close $buildfile_template_fh; ++ print 'Created ',$buildfile_template,"\n"; ++ ++ use OpenSSL::Template; ++ ++ my $prepend = <<'_____'; ++use File::Spec::Functions; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++use lib '.'; ++use platform; ++_____ ++ ++ my $tmpl; ++ open BUILDFILE, ">$buildfile.new" ++ or die "Trying to create $buildfile.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $buildfile_template); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*BUILDFILE, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close BUILDFILE; ++ rename("$buildfile.new", $buildfile) ++ or die "Trying to rename $buildfile.new to $buildfile: $!"; ++ print 'Created ',$buildfile,"\n"; ++ ++ my $configuration_h = ++ catfile('include', 'openssl', 'configuration.h'); ++ my $configuration_h_in = ++ catfile($config{sourcedir}, 'include', 'openssl', 'configuration.h.in'); ++ open CONFIGURATION_H, ">${configuration_h}.new" ++ or die "Trying to create ${configuration_h}.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $configuration_h_in); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*CONFIGURATION_H, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close CONFIGURATION_H; ++ ++ # When using stat() on Windows, we can get it to perform better by ++ # avoid some data. This doesn't affect the mtime field, so we're not ++ # losing anything... ++ ${^WIN32_SLOPPY_STAT} = 1; ++ ++ my $update_configuration_h = 0; ++ if (-f $configuration_h) { ++ my $configuration_h_mtime = (stat($configuration_h))[9]; ++ my $configuration_h_in_mtime = (stat($configuration_h_in))[9]; ++ ++ # If configuration.h.in was updated after the last configuration.h, ++ # or if configuration.h.new differs configuration.h, we update ++ # configuration.h ++ if ($configuration_h_mtime < $configuration_h_in_mtime ++ || compare_text("${configuration_h}.new", $configuration_h) != 0) { ++ $update_configuration_h = 1; ++ } else { ++ # If nothing has changed, let's just drop the new one and ++ # pretend like nothing happened ++ unlink "${configuration_h}.new" ++ } ++ } else { ++ $update_configuration_h = 1; ++ } ++ ++ if ($update_configuration_h) { ++ rename("${configuration_h}.new", $configuration_h) ++ or die "Trying to rename ${configuration_h}.new to $configuration_h: $!"; ++ print 'Created ',$configuration_h,"\n"; ++ } ++ ++ exit(0); ++ } ++ ++ my $dump = undef; ++ my $cmdline = undef; ++ my $options = undef; ++ my $target = undef; ++ my $envvars = undef; ++ my $makevars = undef; ++ my $buildparams = undef; ++ my $reconf = undef; ++ my $verbose = undef; ++ my $query = undef; ++ my $help = undef; ++ my $man = undef; ++ GetOptions('dump|d' => \$dump, ++ 'command-line|c' => \$cmdline, ++ 'options|o' => \$options, ++ 'target|t' => \$target, ++ 'environment|e' => \$envvars, ++ 'make-variables|m' => \$makevars, ++ 'build-parameters|b' => \$buildparams, ++ 'reconfigure|reconf|r' => \$reconf, ++ 'verbose|v' => \$verbose, ++ 'query|q=s' => \$query, ++ 'help' => \$help, ++ 'man' => \$man) ++ or die "Errors in command line arguments\n"; ++ ++ # We allow extra arguments with --query. That allows constructs like ++ # this: ++ # ./configdata.pm --query 'get_sources(@ARGV)' file1 file2 file3 ++ if (!$query && scalar @ARGV > 0) { ++ print STDERR <<"_____"; ++Unrecognised arguments. ++For more information, do '$0 --help' ++_____ ++ exit(2); ++ } ++ ++ if ($help) { ++ pod2usage(-exitval => 0, ++ -verbose => 1); ++ } ++ if ($man) { ++ pod2usage(-exitval => 0, ++ -verbose => 2); ++ } ++ if ($dump || $cmdline) { ++ print "\nCommand line (with current working directory = $here):\n\n"; ++ print ' ',join(' ', ++ $config{PERL}, ++ catfile($config{sourcedir}, 'Configure'), ++ @{$config{perlargv}}), "\n"; ++ print "\nPerl information:\n\n"; ++ print ' ',$config{perl_cmd},"\n"; ++ print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; ++ } ++ if ($dump || $options) { ++ my $longest = 0; ++ my $longest2 = 0; ++ foreach my $what (@disablables) { ++ $longest = length($what) if $longest < length($what); ++ $longest2 = length($disabled{$what}) ++ if $disabled{$what} && $longest2 < length($disabled{$what}); ++ } ++ print "\nEnabled features:\n\n"; ++ foreach my $what (@disablables) { ++ print " $what\n" unless $disabled{$what}; ++ } ++ print "\nDisabled features:\n\n"; ++ foreach my $what (@disablables) { ++ if ($disabled{$what}) { ++ print " $what", ' ' x ($longest - length($what) + 1), ++ "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); ++ print $disabled_info{$what}->{macro} ++ if $disabled_info{$what}->{macro}; ++ print ' (skip ', ++ join(', ', @{$disabled_info{$what}->{skipped}}), ++ ')' ++ if $disabled_info{$what}->{skipped}; ++ print "\n"; ++ } ++ } ++ } ++ if ($dump || $target) { ++ print "\nConfig target attributes:\n\n"; ++ foreach (sort keys %target) { ++ next if $_ =~ m|^_| || $_ eq 'template'; ++ my $quotify = sub { ++ map { ++ if (defined $_) { ++ (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\"" ++ } else { ++ "undef"; ++ } ++ } @_; ++ }; ++ print ' ', $_, ' => '; ++ if (ref($target{$_}) eq "ARRAY") { ++ print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; ++ } else { ++ print $quotify->($target{$_}), ",\n" ++ } ++ } ++ } ++ if ($dump || $envvars) { ++ print "\nRecorded environment:\n\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; ++ } ++ } ++ if ($dump || $makevars) { ++ print "\nMakevars:\n\n"; ++ foreach my $var (@makevars) { ++ my $prefix = ''; ++ $prefix = $config{CROSS_COMPILE} ++ if grep { $var eq $_ } @user_crossable; ++ $prefix //= ''; ++ print ' ',$var,' ' x (16 - length $var),'= ', ++ (ref $config{$var} eq 'ARRAY' ++ ? join(' ', @{$config{$var}}) ++ : $prefix.$config{$var}), ++ "\n" ++ if defined $config{$var}; ++ } ++ ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ my $buildfile = canonpath(catdir(@buildfile)); ++ print <<"_____"; ++ ++NOTE: These variables only represent the configuration view. The build file ++template may have processed these variables further, please have a look at the ++build file for more exact data: ++ $buildfile ++_____ ++ } ++ if ($dump || $buildparams) { ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ print "\nbuild file:\n\n"; ++ print " ", canonpath(catfile(@buildfile)),"\n"; ++ ++ print "\nbuild file templates:\n\n"; ++ foreach (@{$config{build_file_templates}}) { ++ my @tmpl = ($_); ++ unshift @tmpl, $here ++ unless file_name_is_absolute($config{sourcedir}); ++ print ' ',canonpath(catfile(@tmpl)),"\n"; ++ } ++ } ++ if ($reconf) { ++ if ($verbose) { ++ print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; ++ } ++ } ++ ++ chdir $here; ++ exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; ++ } ++ if ($query) { ++ use OpenSSL::Config::Query; ++ ++ my $confquery = OpenSSL::Config::Query->new(info => \%unified_info, ++ config => \%config); ++ my $result = eval "\$confquery->$query"; ++ ++ # We may need a result class with a printing function at some point. ++ # Until then, we assume that we get a scalar, or a list or a hash table ++ # with scalar values and simply print them in some orderly fashion. ++ if (ref $result eq 'ARRAY') { ++ print "$_\n" foreach @$result; ++ } elsif (ref $result eq 'HASH') { ++ print "$_ : \\\n ", join(" \\\n ", @{$result->{$_}}), "\n" ++ foreach sort keys %$result; ++ } elsif (ref $result eq 'SCALAR') { ++ print "$$result\n"; ++ } ++ } ++} ++ ++1; ++ ++__END__ ++ ++=head1 NAME ++ ++configdata.pm - configuration data for OpenSSL builds ++ ++=head1 SYNOPSIS ++ ++Interactive: ++ ++ perl configdata.pm [options] ++ ++As data bank module: ++ ++ use configdata; ++ ++=head1 DESCRIPTION ++ ++This module can be used in two modes, interactively and as a module containing ++all the data recorded by OpenSSL's Configure script. ++ ++When used interactively, simply run it as any perl script. ++If run with no arguments, it will rebuild the build file (Makefile or ++corresponding). ++With at least one option, it will instead get the information you ask for, or ++re-run the configuration process. ++See L below for more information. ++ ++When loaded as a module, you get a few databanks with useful information to ++perform build related tasks. The databanks are: ++ ++ %config Configured things. ++ %target The OpenSSL config target with all inheritances ++ resolved. ++ %disabled The features that are disabled. ++ @disablables The list of features that can be disabled. ++ %withargs All data given through --with-THING options. ++ %unified_info All information that was computed from the build.info ++ files. ++ ++=head1 OPTIONS ++ ++=over 4 ++ ++=item B<--help> ++ ++Print a brief help message and exit. ++ ++=item B<--man> ++ ++Print the manual page and exit. ++ ++=item B<--dump> | B<-d> ++ ++Print all relevant configuration data. This is equivalent to B<--command-line> ++B<--options> B<--target> B<--environment> B<--make-variables> ++B<--build-parameters>. ++ ++=item B<--command-line> | B<-c> ++ ++Print the current configuration command line. ++ ++=item B<--options> | B<-o> ++ ++Print the features, both enabled and disabled, and display defined macro and ++skipped directories where applicable. ++ ++=item B<--target> | B<-t> ++ ++Print the config attributes for this config target. ++ ++=item B<--environment> | B<-e> ++ ++Print the environment variables and their values at the time of configuration. ++ ++=item B<--make-variables> | B<-m> ++ ++Print the main make variables generated in the current configuration ++ ++=item B<--build-parameters> | B<-b> ++ ++Print the build parameters, i.e. build file and build file templates. ++ ++=item B<--reconfigure> | B<--reconf> | B<-r> ++ ++Re-run the configuration process. ++ ++=item B<--verbose> | B<-v> ++ ++Verbose output. ++ ++=back ++ ++=cut ++ ++EOF +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/aes/aesv8-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/aes/aesv8-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/aes/vpaes-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/aes/vpaes-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-sw_64/asm/crypto/buildinf.h +new file mode 100755 +index 00000000..db4cf33a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/crypto/buildinf.h +@@ -0,0 +1,38 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by util/mkbuildinf.pl ++ * ++ * Copyright 2014-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 ++ */ ++ ++#define PLATFORM "platform: linux-sw_64" ++#define DATE "built on: Thu Apr 25 21:36:46 2019 UTC" ++ ++/* ++ * Generate compiler_flags as an array of individual characters. This is a ++ * workaround for the situation where CFLAGS gets too long for a C90 string ++ * literal ++ */ ++static const char compiler_flags[] = { ++ 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', ++ 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a', ++ ',','-','-','n','o','e','x','e','c','s','t','a','c','k',' ','-', ++ 'W','a','l','l',' ','-','O','3',' ','-','D','O','P','E','N','S', ++ 'S','L','_','U','S','E','_','N','O','D','E','L','E','T','E',' ', ++ '-','D','O','P','E','N','S','S','L','_','P','I','C',' ','-','D', ++ 'O','P','E','N','S','S','L','_','C','P','U','I','D','_','O','B', ++ 'J',' ','-','D','O','P','E','N','S','S','L','_','B','N','_','A', ++ 'S','M','_','M','O','N','T',' ','-','D','S','H','A','1','_','A', ++ 'S','M',' ','-','D','S','H','A','2','5','6','_','A','S','M',' ', ++ '-','D','S','H','A','5','1','2','_','A','S','M',' ','-','D','K', ++ 'E','C','C','A','K','1','6','0','0','_','A','S','M',' ','-','D', ++ 'V','P','A','E','S','_','A','S','M',' ','-','D','E','C','P','_', ++ 'N','I','S','T','Z','2','5','6','_','A','S','M',' ','-','D','P', ++ 'O','L','Y','1','3','0','5','_','A','S','M',' ','-','D','N','D', ++ 'E','B','U','G','\0' ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/chacha/chacha-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/chacha/chacha-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/ec/ecp_nistz256-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/ec/ecp_nistz256-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/bn_conf.h +new file mode 100755 +index 00000000..34bd8b78 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/bn_conf.h +@@ -0,0 +1,28 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */ ++/* ++ * 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 HEADER_BN_CONF_H ++# define HEADER_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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/dso_conf.h +new file mode 100755 +index 00000000..18f6ac3b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/crypto/include/internal/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */ ++/* ++ * 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_DSO_CONF_H ++# define HEADER_DSO_CONF_H ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/modes/ghashv8-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/modes/ghashv8-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/poly1305/poly1305-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/poly1305/poly1305-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/keccak1600-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/keccak1600-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha1-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha1-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha256-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha256-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha512-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/sha/sha512-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/crypto/sw_64cpuid.S b/deps/openssl/config/archs/linux-sw_64/asm/crypto/sw_64cpuid.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/bn_conf.h +new file mode 100644 +index 00000000..0347a6dd +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/bn_conf.h +@@ -0,0 +1,29 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/bn_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++/* ++ * 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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/dso_conf.h +new file mode 100644 +index 00000000..795dfa0f +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/crypto/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/dso_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1.h +new file mode 100644 +index 00000000..21ff58e3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1.h +@@ -0,0 +1,1128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1_H ++# define OPENSSL_ASN1_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# include ++# include ++ ++# 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 ++ ++/* Stacks for types not otherwise defined in this header */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) ++#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) ++#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) ++#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) ++#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) ++#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) ++#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) ++#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) ++#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) ++#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) ++#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) ++#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) ++ ++ ++ ++# 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) ++ ++struct asn1_string_table_st { ++ int nid; ++ long minsize; ++ long maxsize; ++ unsigned long mask; ++ unsigned long flags; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) ++#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) ++#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) ++#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) ++#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) ++#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++ ++ ++/* 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 */ ++ ++/* ++ * The mysterious 'extern' that's passed to some macros is innocuous, ++ * and is there to quiet pre-C99 compilers that may complain about empty ++ * arguments in macro calls. ++ */ ++ ++# define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_FUNCTIONS(type) \ ++ DECLARE_ASN1_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) ++# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ DECLARE_ASN1_ITEM_attr(attr, itname) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ attr type *d2i_##name(type **a, const unsigned char **in, long len); \ ++ attr int i2d_##name(const type *a, unsigned char **out); ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) ++ ++# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ ++ attr int i2d_##name##_NDEF(const name *a, unsigned char **out); ++# define DECLARE_ASN1_NDEF_FUNCTION(name) \ ++ DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ attr type *name##_new(void); \ ++ attr void name##_free(type *a); ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) ++# define DECLARE_ASN1_DUP_FUNCTION(type) \ ++ DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ ++ attr type *name##_dup(const type *a); ++# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) ++# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ ++ attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx); ++# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) ++ ++# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) ++# define I2D_OF(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(const type *,unsigned char **) ++# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) ++ ++typedef void *d2i_of_void(void **, const unsigned char **, long); ++typedef int i2d_of_void(const void *, unsigned char **); ++ ++/*- ++ * 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. ++ * ++ */ ++ ++ ++/* ++ * 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_attr(attr, name) \ ++ attr const ASN1_ITEM * name##_it(void); ++# define DECLARE_ASN1_ITEM(name) \ ++ DECLARE_ASN1_ITEM_attr(extern, name) ++ ++/* 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 ++ ++/* Lower 8 bits are reserved as an output type specifier */ ++# define ASN1_DTFLGS_TYPE_MASK 0x0FUL ++# define ASN1_DTFLGS_RFC822 0x00UL ++# define ASN1_DTFLGS_ISO8601 0x01UL ++ ++/* ++ * 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) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) ++#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) ++#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) ++#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) ++#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) ++#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) ++#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) ++#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) ++#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) ++#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; ++ ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(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_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) ++DECLARE_ASN1_ENCODE_FUNCTIONS(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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) ++#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) ++#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) ++#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) ++#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) ++#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) ++#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) ++#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) ++#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) ++#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(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); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); ++# endif ++int ASN1_STRING_type(const ASN1_STRING *x); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); ++# endif ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) ++#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) ++#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) ++#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) ++#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) ++#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) ++#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) ++#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) ++#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) ++#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++ ++ ++ ++DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) ++ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, ++ long length); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) ++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) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) ++#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) ++#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) ++#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) ++#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) ++#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) ++#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) ++#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) ++#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++ ++ ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) ++#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) ++#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) ++#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) ++#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) ++#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) ++#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) ++#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) ++#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++ ++ ++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_DUP_FUNCTION(ASN1_TIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) ++ ++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, const 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(const type, x))) ++ ++void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); ++int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, const ASN1_OCTET_STRING *id, ++ EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* 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_ex(const ASN1_ITEM *it, FILE *in, void *x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); ++int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); ++ ++# define ASN1_i2d_fp_of(type,i2d,out,x) \ ++ (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const 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_ex(const ASN1_ITEM *it, BIO *in, void *pval, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); ++int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); ++ ++# define ASN1_i2d_bio_of(type,i2d,out,x) \ ++ (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); ++BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); ++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 *bp, const ASN1_TIME *tm); ++int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); ++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); ++ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, ++ const char *propq); ++void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); ++ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it); ++int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); ++int ASN1_item_ndef_i2d(const 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, const 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); ++ ++/* cannot constify val because of CMS_stream() */ ++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); ++/* cannot constify val because of CMS_dataFinal() */ ++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); ++int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, ++ int ctype_nid, int econt_nid, ++ STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); ++ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, ++ const ASN1_ITEM *it, ASN1_VALUE **x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++ ++/* Legacy compatibility */ ++# 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_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) ++# define I2D_OF_const(type) I2D_OF(type) ++# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x) ++# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x) ++# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x) ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1t.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1t.h +new file mode 100644 +index 00000000..74ba47d0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/asn1t.h +@@ -0,0 +1,946 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1t.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1T_H ++# define OPENSSL_ASN1T_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1T_H ++# endif ++ ++# 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 ++ ++/*- ++ * These are the possible values for the itype field of the ++ * ASN1_ITEM structure and determine how it 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 ++ * data and 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 ++/* unused value 0x3 */ ++# define ASN1_ITYPE_EXTERN 0x4 ++# define ASN1_ITYPE_MSTRING 0x5 ++# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 ++ ++/* 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; \ ++ } ++ ++/* 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, NULL}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_const_cb(tname, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \ ++ 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, NULL}; \ ++ 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), NULL}; \ ++ 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_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, NULL}; \ ++ 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 */ ++ ++# 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 } ++ ++/* 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[] ++ ++# 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) ++ ++# 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; /* further data and type-specific functions */ ++ /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ ++ long size; /* Structure size (usually) */ ++ const char *sname; /* Structure name */ ++}; ++ ++/* ++ * 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_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, ++ const ASN1_ITEM *it, int tag, int aclass, char opt, ++ ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int ASN1_ex_i2d(const 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 int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); ++ ++typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, ++ int indent, const char *fname, ++ const ASN1_PCTX *pctx); ++ ++typedef int ASN1_primitive_i2c(const 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, const 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_ex_new_ex_func *asn1_ex_new_ex; ++ ASN1_ex_d2i_ex *asn1_ex_d2i_ex; ++} 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. ++ * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and ++ * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter ++ * 'in' is provided to make clear statically that its input is not modified. If ++ * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. ++ */ ++ ++typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, ++ void *exarg); ++typedef int ASN1_aux_const_cb(int operation, const 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; /* Offset of lock value */ ++ ASN1_aux_cb *asn1_cb; ++ int enc_offset; /* Offset of ASN1_ENCODING structure */ ++ ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ ++} 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 ++/* Use the new asn1_const_cb */ ++# define ASN1_AFLG_CONST_CB 8 ++ ++/* 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 ++# define ASN1_OP_DUP_PRE 14 ++# define ASN1_OP_DUP_POST 15 ++# define ASN1_OP_GET0_LIBCTX 16 ++# define ASN1_OP_GET0_PROPQ 17 ++ ++/* 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ ++ } ++ ++# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ ++ int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_ndef_i2d((const 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ ++ ASN1_ITEM_rptr(stname)); \ ++ } ++ ++# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ ++ stname * stname##_dup(const 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, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx) \ ++ { \ ++ return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ ++ ASN1_ITEM_rptr(itname), pctx); \ ++ } ++ ++/* 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* ++ * 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) ++#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) ++#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) ++#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) ++#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) ++#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) ++#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) ++#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) ++#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) ++#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++ ++ ++ ++/* 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(const ASN1_VALUE **pval, unsigned char **out, ++ const ASN1_ITEM *it, int tag, int aclass); ++ ++/* Legacy compatibility */ ++# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) ++# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ ++ IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) ++ ++#ifdef __cplusplus ++} ++#endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/bio.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/bio.h +new file mode 100644 +index 00000000..7e527184 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/bio.h +@@ -0,0 +1,886 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/bio.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_BIO_H ++# define OPENSSL_BIO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_BIO_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++# include ++ ++# 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_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) ++ ++#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 timed 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 ++ ++/* ++ * internal BIO: ++ * # define BIO_CTRL_SET_KTLS_SEND 72 ++ * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 ++ * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 ++ */ ++ ++# define BIO_CTRL_GET_KTLS_SEND 73 ++# define BIO_CTRL_GET_KTLS_RECV 76 ++ ++# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 ++# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 ++ ++/* BIO_f_prefix controls */ ++# define BIO_CTRL_SET_PREFIX 79 ++# define BIO_CTRL_SET_INDENT 80 ++# define BIO_CTRL_GET_INDENT 81 ++ ++# ifndef OPENSSL_NO_KTLS ++# define BIO_get_ktls_send(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) ++# define BIO_get_ktls_recv(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) ++# else ++# define BIO_get_ktls_send(b) (0) ++# define BIO_get_ktls_recv(b) (0) ++# endif ++ ++/* modifiers */ ++# define BIO_FP_READ 0x02 ++# define BIO_FP_WRITE 0x04 ++# define BIO_FP_APPEND 0x08 ++# define BIO_FP_TEXT 0x10 ++ ++# define BIO_FLAGS_READ 0x01 ++# define BIO_FLAGS_WRITE 0x02 ++# define BIO_FLAGS_IO_SPECIAL 0x04 ++# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) ++# define BIO_FLAGS_SHOULD_RETRY 0x08 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* This #define was replaced by an internal constant and should not be used. */ ++# 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 ++ ++/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ ++ ++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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, ++ long argl, long ret); ++OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); ++OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); ++OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, ++ const char *argp, int argi, ++ long argl, long ret); ++# endif ++ ++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_ex BIO_get_callback_ex(const BIO *b); ++void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); ++long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, ++ int argi, long argl, int ret, size_t *processed); ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) ++#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) ++#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) ++#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) ++#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) ++#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) ++#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) ++#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) ++#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) ++#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) ++#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) ++#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) ++#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) ++#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) ++#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) ++ ++ ++ ++/* Prefix and suffix callback in ASN1 BIO */ ++typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, ++ void *parg); ++ ++typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b, ++ void *context, ++ void *buf); ++# 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) ++# endif /* OPENSSL_NO_SOCK */ ++ ++# define BIO_do_connect(b) BIO_do_handshake(b) ++# define BIO_do_accept(b) BIO_do_handshake(b) ++ ++# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) ++ ++/* BIO_s_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) ++ ++/* ctrl macros for BIO_f_prefix */ ++# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) ++# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) ++# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 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(const 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); ++BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); ++# ifndef OPENSSL_NO_STDIO ++BIO *BIO_new_fp(FILE *stream, int close_flag); ++# endif ++BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); ++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_get_line(BIO *bio, 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); ++ ++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_readbuffer(void); ++const BIO_METHOD *BIO_f_linebuffer(void); ++const BIO_METHOD *BIO_f_nbio_test(void); ++const BIO_METHOD *BIO_f_prefix(void); ++const BIO_METHOD *BIO_s_core(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, ++ BIO_dgram_sctp_notification_handler_fn handle_notifications, ++ 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); ++int BIO_socket_wait(int fd, int for_read, time_t max_time); ++# endif ++int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); ++int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); ++ ++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 void *s, int len); ++int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), ++ void *u, const void *s, int len, int indent); ++int BIO_dump(BIO *b, const void *bytes, int len); ++int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); ++# ifndef OPENSSL_NO_STDIO ++int BIO_dump_fp(FILE *fp, const void *s, int len); ++int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); ++# endif ++int BIO_hex_string(BIO *out, int indent, int width, const void *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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define BIO_sock_cleanup() while(0) continue ++# endif ++int BIO_set_tcp_ndelay(int sock, int turn_on); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); ++# endif ++ ++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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cmp.h +new file mode 100644 +index 00000000..0d184394 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cmp.h +@@ -0,0 +1,592 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cmp.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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_CMP_H ++# define OPENSSL_CMP_H ++ ++# include ++# ifndef OPENSSL_NO_CMP ++ ++# include ++# include ++# include ++# include ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CMP_PVNO 2 ++ ++/*- ++ * PKIFailureInfo ::= BIT STRING { ++ * -- since we can fail in more than one way! ++ * -- More codes may be added in the future if/when required. ++ * badAlg (0), ++ * -- unrecognized or unsupported Algorithm Identifier ++ * badMessageCheck (1), ++ * -- integrity check failed (e.g., signature did not verify) ++ * badRequest (2), ++ * -- transaction not permitted or supported ++ * badTime (3), ++ * -- messageTime was not sufficiently close to the system time, ++ * -- as defined by local policy ++ * badCertId (4), ++ * -- no certificate could be found matching the provided criteria ++ * badDataFormat (5), ++ * -- the data submitted has the wrong format ++ * wrongAuthority (6), ++ * -- the authority indicated in the request is different from the ++ * -- one creating the response token ++ * incorrectData (7), ++ * -- the requester's data is incorrect (for notary services) ++ * missingTimeStamp (8), ++ * -- when the timestamp is missing but should be there ++ * -- (by policy) ++ * badPOP (9), ++ * -- the proof-of-possession failed ++ * certRevoked (10), ++ * -- the certificate has already been revoked ++ * certConfirmed (11), ++ * -- the certificate has already been confirmed ++ * wrongIntegrity (12), ++ * -- invalid integrity, password based instead of signature or ++ * -- vice versa ++ * badRecipientNonce (13), ++ * -- invalid recipient nonce, either missing or wrong value ++ * timeNotAvailable (14), ++ * -- the TSA's time source is not available ++ * unacceptedPolicy (15), ++ * -- the requested TSA policy is not supported by the TSA. ++ * unacceptedExtension (16), ++ * -- the requested extension is not supported by the TSA. ++ * addInfoNotAvailable (17), ++ * -- the additional information requested could not be ++ * -- understood or is not available ++ * badSenderNonce (18), ++ * -- invalid sender nonce, either missing or wrong size ++ * badCertTemplate (19), ++ * -- invalid cert. template or missing mandatory information ++ * signerNotTrusted (20), ++ * -- signer of the message unknown or not trusted ++ * transactionIdInUse (21), ++ * -- the transaction identifier is already in use ++ * unsupportedVersion (22), ++ * -- the version of the message is not supported ++ * notAuthorized (23), ++ * -- the sender was not authorized to make the preceding ++ * -- request or perform the preceding action ++ * systemUnavail (24), ++ * -- the request cannot be handled due to system unavailability ++ * systemFailure (25), ++ * -- the request cannot be handled due to system failure ++ * duplicateCertReq (26) ++ * -- certificate cannot be issued because a duplicate ++ * -- certificate already exists ++ * } ++ */ ++# define OSSL_CMP_PKIFAILUREINFO_badAlg 0 ++# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 ++# define OSSL_CMP_PKIFAILUREINFO_badRequest 2 ++# define OSSL_CMP_PKIFAILUREINFO_badTime 3 ++# define OSSL_CMP_PKIFAILUREINFO_badCertId 4 ++# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 ++# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 ++# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 ++# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 ++# define OSSL_CMP_PKIFAILUREINFO_badPOP 9 ++# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 ++# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 ++# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 ++# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 ++# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 ++# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 ++# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 ++# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 ++# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 ++# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 ++# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 ++# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 ++# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 ++# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 ++# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ ++ ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) ++# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX ++# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int ++# endif ++ ++typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; ++ ++# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) ++# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) ++# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) ++# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) ++# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) ++# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) ++# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) ++# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) ++# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) ++# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) ++# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) ++# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) ++# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) ++# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) ++# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) ++# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) ++# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) ++# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) ++# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) ++# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) ++# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) ++# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) ++# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) ++# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) ++# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) ++ ++/*- ++ * PKIStatus ::= INTEGER { ++ * accepted (0), ++ * -- you got exactly what you asked for ++ * grantedWithMods (1), ++ * -- you got something like what you asked for; the ++ * -- requester is responsible for ascertaining the differences ++ * rejection (2), ++ * -- you don't get it, more information elsewhere in the message ++ * waiting (3), ++ * -- the request body part has not yet been processed; expect to ++ * -- hear more later (note: proper handling of this status ++ * -- response MAY use the polling req/rep PKIMessages specified ++ * -- in Section 5.3.22; alternatively, polling in the underlying ++ * -- transport layer MAY have some utility in this regard) ++ * revocationWarning (4), ++ * -- this message contains a warning that a revocation is ++ * -- imminent ++ * revocationNotification (5), ++ * -- notification that a revocation has occurred ++ * keyUpdateWarning (6) ++ * -- update already done for the oldCertId specified in ++ * -- CertReqMsg ++ * } ++ */ ++# define OSSL_CMP_PKISTATUS_accepted 0 ++# define OSSL_CMP_PKISTATUS_grantedWithMods 1 ++# define OSSL_CMP_PKISTATUS_rejection 2 ++# define OSSL_CMP_PKISTATUS_waiting 3 ++# define OSSL_CMP_PKISTATUS_revocationWarning 4 ++# define OSSL_CMP_PKISTATUS_revocationNotification 5 ++# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 ++ ++typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; ++DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) ++ ++# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 ++# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 ++ ++/* data type declarations */ ++typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; ++typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) ++typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) ++DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) ++typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) ++#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) ++#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) ++#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) ++#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) ++#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) ++#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; ++typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) ++#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) ++#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) ++#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) ++#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) ++#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) ++#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; ++typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; ++typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) ++#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++ ++typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; ++ ++/* ++ * function DECLARATIONS ++ */ ++ ++/* from cmp_asn.c */ ++OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); ++void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ++ ASN1_TYPE *value); ++ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ++ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); ++int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, ++ OSSL_CMP_ITAV *itav); ++void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); ++void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); ++ ++/* from cmp_ctx.c */ ++OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); ++/* CMP general options: */ ++# define OSSL_CMP_OPT_LOG_VERBOSITY 0 ++/* CMP transfer options: */ ++# define OSSL_CMP_OPT_KEEP_ALIVE 10 ++# define OSSL_CMP_OPT_MSG_TIMEOUT 11 ++# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 ++/* CMP request options: */ ++# define OSSL_CMP_OPT_VALIDITY_DAYS 20 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 ++# define OSSL_CMP_OPT_POLICIES_CRITICAL 23 ++# define OSSL_CMP_OPT_POPO_METHOD 24 ++# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 ++# define OSSL_CMP_OPT_DISABLE_CONFIRM 26 ++# define OSSL_CMP_OPT_REVOCATION_REASON 27 ++/* CMP protection options: */ ++# define OSSL_CMP_OPT_UNPROTECTED_SEND 30 ++# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 ++# define OSSL_CMP_OPT_OWF_ALGNID 32 ++# define OSSL_CMP_OPT_MAC_ALGNID 33 ++# define OSSL_CMP_OPT_DIGEST_ALGNID 34 ++# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 ++# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 ++int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); ++int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); ++/* CMP-specific callback for logging and outputting the error queue: */ ++int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); ++# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ ++ OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) ++void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); ++/* message transfer: */ ++int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); ++int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); ++int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); ++int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); ++int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); ++int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); ++int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); ++typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); ++int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); ++/* server authentication: */ ++int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); ++X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); ++STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); ++/* client authentication: */ ++int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, ++ STACK_OF(X509) *candidates); ++int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); ++int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, ++ const unsigned char *ref, int len); ++int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, const unsigned char *sec, ++ const int len); ++/* CMP message header and extra certificates: */ ++int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, ++ STACK_OF(X509) *extraCertsOut); ++/* certificate template: */ ++int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); ++EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); ++int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, ++ const GENERAL_NAME *name); ++int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); ++int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); ++int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); ++/* misc body contents: */ ++int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++/* certificate confirmation: */ ++typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert, ++ int fail_info, const char **txt); ++int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, ++ const char **text); ++int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); ++int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); ++/* result fetching: */ ++int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); ++OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); ++# define OSSL_CMP_PKISI_BUFLEN 1024 ++X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *id); ++int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *nonce); ++ ++/* from cmp_status.c */ ++char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, ++ size_t bufsize); ++char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, ++ char *buf, size_t bufsize); ++OSSL_CMP_PKISI * ++OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ++ ++/* from cmp_hdr.c */ ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const ++ OSSL_CMP_PKIHEADER *hdr); ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); ++ ++/* from cmp_msg.c */ ++OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); ++OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); ++OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); ++OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); ++int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); ++ ++/* from cmp_vfy.c */ ++int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); ++int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, ++ X509_STORE *trusted_store, X509 *cert); ++ ++/* from cmp_http.c */ ++OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++ ++/* from cmp_server.c */ ++typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; ++OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t) ++ (OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, ++ const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, ++ X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const STACK_OF(OSSL_CMP_ITAV) *in, ++ STACK_OF(OSSL_CMP_ITAV) **out); ++typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const OSSL_CMP_PKISI *statusInfo, ++ const ASN1_INTEGER *errorCode, ++ const OSSL_CMP_PKIFREETEXT *errDetails); ++typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ int certReqId, ++ const ASN1_OCTET_STRING *certHash, ++ const OSSL_CMP_PKISI *si); ++typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, int certReqId, ++ OSSL_CMP_MSG **certReq, ++ int64_t *check_after); ++int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, ++ OSSL_CMP_SRV_cert_request_cb_t process_cert_request, ++ OSSL_CMP_SRV_rr_cb_t process_rr, ++ OSSL_CMP_SRV_genm_cb_t process_genm, ++ OSSL_CMP_SRV_error_cb_t process_error, ++ OSSL_CMP_SRV_certConf_cb_t process_certConf, ++ OSSL_CMP_SRV_pollReq_cb_t process_pollReq); ++OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++ ++/* from cmp_client.c */ ++X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm); ++# define OSSL_CMP_IR 0 ++# define OSSL_CMP_CR 2 ++# define OSSL_CMP_P10CR 4 ++# define OSSL_CMP_KUR 7 ++# define OSSL_CMP_exec_IR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) ++# define OSSL_CMP_exec_CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) ++# define OSSL_CMP_exec_P10CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) ++# define OSSL_CMP_exec_KUR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) ++int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm, int *checkAfter); ++int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); ++STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CMP) */ ++#endif /* !defined(OPENSSL_CMP_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cms.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cms.h +new file mode 100644 +index 00000000..3b453e6a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/cms.h +@@ -0,0 +1,493 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cms.h.in ++ * ++ * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CMS_H ++# define OPENSSL_CMS_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CMS_H ++# endif ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) ++#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) ++#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) ++#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) ++#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) ++#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) ++#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) ++#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) ++#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) ++#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) ++#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) ++#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) ++#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) ++#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) ++#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) ++#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) ++#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) ++#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) ++#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) ++#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) ++#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) ++#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) ++#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) ++#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) ++#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) ++#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) ++#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) ++#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) ++#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) ++#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) ++#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) ++#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) ++#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) ++#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) ++DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) ++DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) ++ ++CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++# 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 ++# define CMS_CADES 0x100000 ++# define CMS_USE_ORIGINATOR_KEYID 0x200000 ++ ++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 OPENSSL_PEM_H ++DECLARE_PEM_rw(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); ++CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); ++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_ex(X509 *signcert, EVP_PKEY *pkey, ++ STACK_OF(X509) *certs, BIO *data, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, ++ const unsigned char *key, ++ size_t keylen, unsigned int flags, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, ++ X509 *cert, X509 *peer); ++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_AuthEnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo * ++CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, ++ const char *propq); ++CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, ++ X509 *recip, unsigned int flags); ++CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, ++ EVP_PKEY *originatorPrivKey, X509 * originator, 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(const 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(const 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); ++CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( ++ unsigned char *id, int idlen, int allorfirst, ++ STACK_OF(GENERAL_NAMES) *receiptList, ++ STACK_OF(GENERAL_NAMES) *receiptsTo, ++ OSSL_LIB_CTX *ctx); ++ ++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); ++int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); ++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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/conf.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/conf.h +new file mode 100644 +index 00000000..44989929 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/conf.h +@@ -0,0 +1,211 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/conf.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONF_H ++# define OPENSSL_CONF_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CONF_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct { ++ char *section; ++ char *name; ++ char *value; ++} CONF_VALUE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) ++#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) ++#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) ++#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) ++#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) ++#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) ++#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) ++#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) ++#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) ++#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) ++#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) ++DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); ++#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) ++#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) ++#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) ++ ++ ++struct conf_st; ++struct conf_method_st; ++typedef struct conf_method_st CONF_METHOD; ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include ++# endif ++ ++/* Module definitions */ ++typedef struct conf_imodule_st CONF_IMODULE; ++typedef struct conf_module_st CONF_MODULE; ++ ++STACK_OF(CONF_MODULE); ++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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); ++#endif ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ */ ++ ++CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); ++OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); ++CONF *NCONF_new(CONF_METHOD *meth); ++CONF_METHOD *NCONF_default(void); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); ++#endif ++void NCONF_free(CONF *conf); ++void NCONF_free_data(CONF *conf); ++ ++int NCONF_load(CONF *conf, const char *file, long *eline); ++# ifndef OPENSSL_NO_STDIO ++int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); ++# endif ++int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); ++STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); ++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_ex(OSSL_LIB_CTX *libctx, const char *filename, ++ 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/configuration.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/configuration.h +new file mode 100644 +index 00000000..7e98fd63 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/configuration.h +@@ -0,0 +1,134 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl ++ * via Makefile.in ++ * ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONFIGURATION_H ++# define OPENSSL_CONFIGURATION_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifdef OPENSSL_ALGORITHM_DEFINES ++# error OPENSSL_ALGORITHM_DEFINES no longer supported ++# endif ++ ++/* ++ * OpenSSL was configured with the following options: ++ */ ++ ++# define OPENSSL_CONFIGURED_API 30000 ++# ifndef OPENSSL_RAND_SEED_OS ++# define OPENSSL_RAND_SEED_OS ++# endif ++# ifndef OPENSSL_THREADS ++# define OPENSSL_THREADS ++# endif ++# ifndef OPENSSL_NO_AFALGENG ++# define OPENSSL_NO_AFALGENG ++# endif ++# ifndef OPENSSL_NO_ASAN ++# define OPENSSL_NO_ASAN ++# endif ++# ifndef OPENSSL_NO_COMP ++# define OPENSSL_NO_COMP ++# 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_KTLS ++# define OPENSSL_NO_KTLS ++# endif ++# ifndef OPENSSL_NO_LOADERENG ++# define OPENSSL_NO_LOADERENG ++# endif ++# ifndef OPENSSL_NO_MD2 ++# define OPENSSL_NO_MD2 ++# endif ++# ifndef OPENSSL_NO_MSAN ++# define OPENSSL_NO_MSAN ++# endif ++# ifndef OPENSSL_NO_RC5 ++# define OPENSSL_NO_RC5 ++# endif ++# ifndef OPENSSL_NO_SCTP ++# define OPENSSL_NO_SCTP ++# endif ++# ifndef OPENSSL_NO_SSL3 ++# define OPENSSL_NO_SSL3 ++# endif ++# ifndef OPENSSL_NO_SSL3_METHOD ++# define OPENSSL_NO_SSL3_METHOD ++# endif ++# ifndef OPENSSL_NO_TRACE ++# define OPENSSL_NO_TRACE ++# endif ++# ifndef OPENSSL_NO_UBSAN ++# define OPENSSL_NO_UBSAN ++# endif ++# ifndef OPENSSL_NO_UNIT_TEST ++# define OPENSSL_NO_UNIT_TEST ++# endif ++# ifndef OPENSSL_NO_UPLINK ++# define OPENSSL_NO_UPLINK ++# endif ++# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS ++# define OPENSSL_NO_WEAK_SSL_CIPHERS ++# endif ++# ifndef OPENSSL_NO_DYNAMIC_ENGINE ++# define OPENSSL_NO_DYNAMIC_ENGINE ++# endif ++ ++ ++/* Generate 80386 code? */ ++# undef I386_ONLY ++ ++/* ++ * 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 char ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif /* OPENSSL_CONFIGURATION_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crmf.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crmf.h +new file mode 100644 +index 00000000..71b747ed +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crmf.h +@@ -0,0 +1,227 @@ ++/*- ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crmf.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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 ++ * ++ * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. ++ */ ++ ++ ++ ++#ifndef OPENSSL_CRMF_H ++# define OPENSSL_CRMF_H ++ ++# include ++ ++# ifndef OPENSSL_NO_CRMF ++# include ++# include ++# include ++# include /* for GENERAL_NAME etc. */ ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 ++# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 ++# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 ++# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 ++# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 ++ ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 ++ ++typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) ++typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) ++#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) ++#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) ++#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++ ++typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; ++typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) ++typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; ++typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; ++typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) ++#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) ++#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) ++#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++ ++ ++typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) ++typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) ++typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) ++typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) ++ ++typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; ++ ++/* crmf_pbm.c */ ++OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, ++ int owfnid, size_t itercnt, ++ int macnid); ++int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, ++ const OSSL_CRMF_PBMPARAMETER *pbmp, ++ const unsigned char *msg, size_t msglen, ++ const unsigned char *sec, size_t seclen, ++ unsigned char **mac, size_t *maclen); ++ ++/* crmf_lib.c */ ++int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *tok); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *auth); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); ++int ++OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ OSSL_CRMF_SINGLEPUBINFO *spi); ++# define OSSL_CRMF_PUB_METHOD_DONTCARE 0 ++# define OSSL_CRMF_PUB_METHOD_X500 1 ++# define OSSL_CRMF_PUB_METHOD_WEB 2 ++# define OSSL_CRMF_PUB_METHOD_LDAP 3 ++int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, ++ int method, GENERAL_NAME *nm); ++# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 ++# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 ++int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ int action); ++int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_PKIPUBLICATIONINFO *pi); ++OSSL_CRMF_PKIPUBLICATIONINFO ++*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, ++ const X509_PUBKEY *pubkey); ++X509_PUBKEY ++*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTID *cid); ++OSSL_CRMF_CERTID ++*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); ++OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++ ++int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *utf8pairs); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTREQUEST *cr); ++OSSL_CRMF_CERTREQUEST ++*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); ++ ++int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, ++ ASN1_TIME *notBefore, ASN1_TIME *notAfter); ++int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); ++int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); ++int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); ++ ++int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); ++# define OSSL_CRMF_POPO_NONE -1 ++# define OSSL_CRMF_POPO_RAVERIFIED 0 ++# define OSSL_CRMF_POPO_SIGNATURE 1 ++# define OSSL_CRMF_POPO_KEYENC 2 ++# define OSSL_CRMF_POPO_KEYAGREE 3 ++int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, ++ EVP_PKEY *pkey, const EVP_MD *digest, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, ++ int rid, int acceptRAVerified, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++X509_EXTENSIONS ++*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); ++int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, ++ EVP_PKEY *pubkey, ++ const X509_NAME *subject, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++X509 ++*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, ++ OSSL_LIB_CTX *libctx, const char *propq, ++ EVP_PKEY *pkey); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CRMF) */ ++#endif /* !defined(OPENSSL_CRMF_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crypto.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crypto.h +new file mode 100644 +index 00000000..3f40be6d +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/crypto.h +@@ -0,0 +1,558 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crypto.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_CRYPTO_H ++# define OPENSSL_CRYPTO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CRYPTO_H ++# endif ++ ++# include ++# include ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++ ++# include ++# 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void CRYPTO_RWLOCK; ++ ++CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); ++__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); ++__owur 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); ++int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, ++ CRYPTO_RWLOCK *lock); ++int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); ++ ++/* No longer needed, so this is a no-op */ ++#define OPENSSL_malloc_init() while(0) continue ++ ++# 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); ++int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, ++ const unsigned char *buf, size_t buflen, ++ const char sep); ++char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); ++int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, ++ const char *str, const char sep); ++unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); ++int OPENSSL_hexchar2int(unsigned char c); ++int OPENSSL_strcasecmp(const char *s1, const char *s2); ++int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); ++ ++# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) ++ ++/* ++ * These functions return the values of OPENSSL_VERSION_MAJOR, ++ * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE ++ * and OPENSSL_VERSION_BUILD_METADATA, respectively. ++ */ ++unsigned int OPENSSL_version_major(void); ++unsigned int OPENSSL_version_minor(void); ++unsigned int OPENSSL_version_patch(void); ++const char *OPENSSL_version_pre_release(void); ++const char *OPENSSL_version_build_metadata(void); ++ ++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 ++# define OPENSSL_VERSION_STRING 6 ++# define OPENSSL_FULL_VERSION_STRING 7 ++# define OPENSSL_MODULES_DIR 8 ++# define OPENSSL_CPU_INFO 9 ++ ++const char *OPENSSL_info(int type); ++/* ++ * The series starts at 1001 to avoid confusion with the OpenSSL_version ++ * types. ++ */ ++# define OPENSSL_INFO_CONFIG_DIR 1001 ++# define OPENSSL_INFO_ENGINES_DIR 1002 ++# define OPENSSL_INFO_MODULES_DIR 1003 ++# define OPENSSL_INFO_DSO_EXTENSION 1004 ++# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 ++# define OPENSSL_INFO_LIST_SEPARATOR 1006 ++# define OPENSSL_INFO_SEED_SOURCE 1007 ++# define OPENSSL_INFO_CPU_SETTINGS 1008 ++ ++int OPENSSL_issetugid(void); ++ ++struct crypto_ex_data_st { ++ OSSL_LIB_CTX *ctx; ++ STACK_OF(void) *sk; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) ++#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) ++#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) ++#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) ++#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) ++#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) ++#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) ++#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) ++#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) ++#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) ++#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) ++#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) ++#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) ++#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) ++#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) ++#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) ++#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) ++#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) ++#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) ++#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) ++#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) ++#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) ++ ++ ++ ++/* ++ * 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_RAND_DRBG 15 ++# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG ++# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 ++# define CRYPTO_EX_INDEX_EVP_PKEY 17 ++# define CRYPTO_EX_INDEX__COUNT 18 ++ ++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); ++ ++/* Allocate a single item in the CRYPTO_EX_DATA variable */ ++int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, ++ int idx); ++ ++/* ++ * 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* ++ * 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++# define CRYPTO_set_id_callback(func) ++# define CRYPTO_get_id_callback() (NULL) ++# define CRYPTO_thread_id() (0UL) ++# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ ++ ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); ++typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, ++ int line); ++typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); ++int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, ++ CRYPTO_realloc_fn realloc_fn, ++ CRYPTO_free_fn free_fn); ++void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, ++ CRYPTO_realloc_fn *realloc_fn, ++ CRYPTO_free_fn *free_fn); ++ ++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, size_t 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 ++/* ++ * 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 */ ++ ++void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define OPENSSL_mem_debug_push(info) \ ++ CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) ++# define OPENSSL_mem_debug_pop() \ ++ CRYPTO_mem_debug_pop() ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, ++ int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, ++ size_t num, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 ++int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), ++ void *u); ++# endif ++# ifndef OPENSSL_NO_STDIO ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); ++# endif ++# endif /* OPENSSL_NO_CRYPTO_MDEBUG */ ++ ++/* die if we have to */ ++ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++void OPENSSL_init(void); ++# ifdef OPENSSL_SYS_UNIX ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); ++# endif ++# 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 ++/* FREE: 0x00010000L */ ++# define OPENSSL_INIT_ATFORK 0x00020000L ++/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ ++# define OPENSSL_INIT_NO_ATEXIT 0x00080000L ++/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ ++/* FREE: 0x04000000L */ ++/* FREE: 0x08000000L */ ++/* FREE: 0x10000000L */ ++/* FREE: 0x20000000L */ ++/* FREE: 0x40000000L */ ++/* FREE: 0x80000000L */ ++/* 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); ++void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); ++ ++/* 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 ++# if defined(__TANDEM) && defined(_SPT_MODEL_) ++# define SPT_THREAD_SIGNAL 1 ++# define SPT_THREAD_AWARE 1 ++# include ++# else ++# include ++# endif ++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); ++ ++OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); ++void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); ++OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ct.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ct.h +new file mode 100644 +index 00000000..b6dd8c35 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ct.h +@@ -0,0 +1,573 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ct.h.in ++ * ++ * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CT_H ++# define OPENSSL_CT_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CT_H ++# endif ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) ++#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) ++#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) ++#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) ++#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) ++#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) ++#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) ++#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) ++#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) ++#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) ++#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) ++#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) ++#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) ++#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) ++#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) ++#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) ++#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) ++#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) ++#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) ++#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) ++#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) ++#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) ++#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) ++#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) ++#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) ++#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) ++#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) ++ ++ ++ ++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; ++ ++/****************************************** ++ * CT policy evaluation context functions * ++ ******************************************/ ++ ++/* ++ * Creates a new, empty policy evaluation context associated with the given ++ * library context and property query string. ++ * 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_ex(OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library ++ * context and property query string is used. ++ */ ++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 serialization * ++ *********************************/ ++ ++/* ++ * 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| and ++ * associates it with the give library context |libctx| and property query ++ * string |propq|. ++ * 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_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_ex except that the default library context and ++ * property query string are used. ++ */ ++CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); ++ ++/* ++ * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER ++ * in |pkey_base64| and associated with the given library context |libctx| and ++ * property query string |propq|. 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_ex(CTLOG **ct_log, const char *pkey_base64, ++ const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_from_base64_ex() except that the default ++ * library context and property query string are used. ++ * Returns 1 on success, 0 on failure. ++ */ ++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 and associates it with the given libctx and ++ * property query string. ++ * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. ++ */ ++CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* ++ * Same as CTLOG_STORE_new_ex except that the default libctx and ++ * property query string are used. ++ * 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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/err.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/err.h +new file mode 100644 +index 00000000..3c7299db +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/err.h +@@ -0,0 +1,492 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ERR_H ++# define OPENSSL_ERR_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ERR_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# include ++# endif ++ ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_FILENAMES ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,fn,ln) ++# else ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,NULL,0) ++# endif ++# endif ++ ++# include ++# include ++ ++# define ERR_TXT_MALLOCED 0x01 ++# define ERR_TXT_STRING 0x02 ++ ++# if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) ++# define ERR_FLAG_MARK 0x01 ++# define ERR_FLAG_CLEAR 0x02 ++ ++# define ERR_NUM_ERRORS 16 ++struct err_state_st { ++ int err_flags[ERR_NUM_ERRORS]; ++ int err_marks[ERR_NUM_ERRORS]; ++ unsigned long err_buffer[ERR_NUM_ERRORS]; ++ char *err_data[ERR_NUM_ERRORS]; ++ size_t err_data_size[ERR_NUM_ERRORS]; ++ int err_data_flags[ERR_NUM_ERRORS]; ++ char *err_file[ERR_NUM_ERRORS]; ++ int err_line[ERR_NUM_ERRORS]; ++ char *err_func[ERR_NUM_ERRORS]; ++ int top, bottom; ++}; ++# endif ++ ++/* 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_ESS 54 ++# define ERR_LIB_PROP 55 ++# define ERR_LIB_CRMF 56 ++# define ERR_LIB_PROV 57 ++# define ERR_LIB_CMP 58 ++# define ERR_LIB_OSSL_ENCODER 59 ++# define ERR_LIB_OSSL_DECODER 60 ++# define ERR_LIB_HTTP 61 ++ ++# define ERR_LIB_USER 128 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) ++# define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) ++# define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) ++# define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) ++# define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) ++# define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) ++# define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) ++# define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) ++# define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) ++# define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) ++# define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) ++# define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) ++# define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) ++# define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) ++# define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) ++# define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) ++# define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) ++# define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) ++# define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) ++# define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) ++# define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) ++# define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) ++# define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) ++# define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) ++# define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) ++# define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) ++# define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) ++# define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) ++# define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) ++# define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) ++# define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) ++# define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) ++# define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) ++# define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) ++# define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) ++# define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) ++# define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) ++# define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) ++# define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) ++# endif ++ ++/*- ++ * The error code packs differently depending on if it records a system ++ * error or an OpenSSL error. ++ * ++ * A system error packs like this (we follow POSIX and only allow positive ++ * numbers that fit in an |int|): ++ * ++ * +-+-------------------------------------------------------------+ ++ * |1| system error number | ++ * +-+-------------------------------------------------------------+ ++ * ++ * An OpenSSL error packs like this: ++ * ++ * <---------------------------- 32 bits --------------------------> ++ * <--- 8 bits ---><------------------ 23 bits -----------------> ++ * +-+---------------+---------------------------------------------+ ++ * |0| library | reason | ++ * +-+---------------+---------------------------------------------+ ++ * ++ * A few of the reason bits are reserved as flags with special meaning: ++ * ++ * <5 bits-<>--------- 19 bits -----------------> ++ * +-------+-+-----------------------------------+ ++ * | rflags| | reason | ++ * +-------+-+-----------------------------------+ ++ * ^ ++ * | ++ * ERR_RFLAG_FATAL = ERR_R_FATAL ++ * ++ * The reason flags are part of the overall reason code for practical ++ * reasons, as they provide an easy way to place different types of ++ * reason codes in different numeric ranges. ++ * ++ * The currently known reason flags are: ++ * ++ * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. ++ * For backward compatibility reasons, this flag ++ * is also the code for ERR_R_FATAL (that reason ++ * code served the dual purpose of flag and reason ++ * code in one in pre-3.0 OpenSSL). ++ * ERR_RFLAG_COMMON Flags that the reason code is common to all ++ * libraries. All ERR_R_ macros must use this flag, ++ * and no other _R_ macro is allowed to use it. ++ */ ++ ++/* Macros to help decode recorded system errors */ ++# define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) ++# define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) ++ ++/* ++ * Macros to help decode recorded OpenSSL errors ++ * As expressed above, RFLAGS and REASON overlap by one bit to allow ++ * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. ++ */ ++# define ERR_LIB_OFFSET 23L ++# define ERR_LIB_MASK 0xFF ++# define ERR_RFLAGS_OFFSET 18L ++# define ERR_RFLAGS_MASK 0x1F ++# define ERR_REASON_MASK 0X7FFFFF ++ ++/* ++ * Reason flags are defined pre-shifted to easily combine with the reason ++ * number. ++ */ ++# define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) ++# define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) ++ ++# define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) ++ ++static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return ERR_LIB_SYS; ++ return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return 0; ++ return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); ++} ++ ++static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return errcode & ERR_SYSTEM_MASK; ++ return errcode & ERR_REASON_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; ++} ++ ++static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; ++} ++ ++/* ++ * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may ++ * only be used for that purpose. System errors are packed internally. ++ * ERR_PACK takes reason flags and reason code combined in |reason|. ++ * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. ++ */ ++# define ERR_PACK(lib,func,reason) \ ++ ( (((unsigned long)(lib) & ERR_LIB_MASK ) << ERR_LIB_OFFSET) | \ ++ (((unsigned long)(reason) & ERR_REASON_MASK)) ) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SYS_F_FOPEN 0 ++# define SYS_F_CONNECT 0 ++# define SYS_F_GETSERVBYNAME 0 ++# define SYS_F_SOCKET 0 ++# define SYS_F_IOCTLSOCKET 0 ++# define SYS_F_BIND 0 ++# define SYS_F_LISTEN 0 ++# define SYS_F_ACCEPT 0 ++# define SYS_F_WSASTARTUP 0 ++# define SYS_F_OPENDIR 0 ++# define SYS_F_FREAD 0 ++# define SYS_F_GETADDRINFO 0 ++# define SYS_F_GETNAMEINFO 0 ++# define SYS_F_SETSOCKOPT 0 ++# define SYS_F_GETSOCKOPT 0 ++# define SYS_F_GETSOCKNAME 0 ++# define SYS_F_GETHOSTBYNAME 0 ++# define SYS_F_FFLUSH 0 ++# define SYS_F_OPEN 0 ++# define SYS_F_CLOSE 0 ++# define SYS_F_IOCTL 0 ++# define SYS_F_STAT 0 ++# define SYS_F_FCNTL 0 ++# define SYS_F_FSTAT 0 ++# define SYS_F_SENDFILE 0 ++# endif ++ ++/* ++ * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. ++ */ ++ ++/* "we came from here" global reason codes, range 1..255 */ ++# define ERR_R_SYS_LIB (ERR_LIB_SYS/* 2 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BN_LIB (ERR_LIB_BN/* 3 */ | ERR_RFLAG_COMMON) ++# define ERR_R_RSA_LIB (ERR_LIB_RSA/* 4 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DH_LIB (ERR_LIB_DH/* 5 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EVP_LIB (ERR_LIB_EVP/* 6 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BUF_LIB (ERR_LIB_BUF/* 7 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OBJ_LIB (ERR_LIB_OBJ/* 8 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PEM_LIB (ERR_LIB_PEM/* 9 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DSA_LIB (ERR_LIB_DSA/* 10 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509_LIB (ERR_LIB_X509/* 11 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ASN1_LIB (ERR_LIB_ASN1/* 13 */ | ERR_RFLAG_COMMON) ++# define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO/* 15 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EC_LIB (ERR_LIB_EC/* 16 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BIO_LIB (ERR_LIB_BIO/* 32 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7/* 33 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509V3_LIB (ERR_LIB_X509V3/* 34 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE/* 38 */ | ERR_RFLAG_COMMON) ++# define ERR_R_UI_LIB (ERR_LIB_UI/* 40 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA/* 42 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE/* 44 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER/* 60 */ | ERR_RFLAG_COMMON) ++ ++/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ ++# define ERR_R_FATAL (ERR_RFLAG_FATAL|ERR_RFLAG_COMMON) ++# define ERR_R_MALLOC_FAILURE (256|ERR_R_FATAL) ++# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257|ERR_R_FATAL) ++# define ERR_R_PASSED_NULL_PARAMETER (258|ERR_R_FATAL) ++# define ERR_R_INTERNAL_ERROR (259|ERR_R_FATAL) ++# define ERR_R_DISABLED (260|ERR_R_FATAL) ++# define ERR_R_INIT_FAIL (261|ERR_R_FATAL) ++# define ERR_R_PASSED_INVALID_ARGUMENT (262|ERR_RFLAG_COMMON) ++# define ERR_R_OPERATION_FAIL (263|ERR_R_FATAL) ++# define ERR_R_INVALID_PROVIDER_FUNCTIONS (264|ERR_R_FATAL) ++# define ERR_R_INTERRUPTED_OR_CANCELLED (265|ERR_RFLAG_COMMON) ++# define ERR_R_NESTED_ASN1_ERROR (266|ERR_RFLAG_COMMON) ++# define ERR_R_MISSING_ASN1_EOS (267|ERR_RFLAG_COMMON) ++# define ERR_R_UNSUPPORTED (268|ERR_RFLAG_COMMON) ++# define ERR_R_FETCH_FAILED (269|ERR_RFLAG_COMMON) ++# define ERR_R_INVALID_PROPERTY_DEFINITION (270|ERR_RFLAG_COMMON) ++# define ERR_R_UNABLE_TO_GET_READ_LOCK (271|ERR_R_FATAL) ++# define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272|ERR_R_FATAL) ++ ++typedef struct ERR_string_data_st { ++ unsigned long error; ++ const char *string; ++} ERR_STRING_DATA; ++ ++DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); ++#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) ++#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) ++#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) ++ ++ ++/* 12 lines and some on an 80 column terminal */ ++#define ERR_MAX_DATA_SIZE 1024 ++ ++/* Building blocks */ ++void ERR_new(void); ++void ERR_set_debug(const char *file, int line, const char *func); ++void ERR_set_error(int lib, int reason, const char *fmt, ...); ++void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); ++ ++/* Main error raising functions */ ++# define ERR_raise(lib, reason) ERR_raise_data((lib),(reason),NULL) ++# define ERR_raise_data \ ++ (ERR_new(), \ ++ ERR_set_debug(OPENSSL_FILE,OPENSSL_LINE,OPENSSL_FUNC), \ ++ ERR_set_error) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* Backward compatibility */ ++# define ERR_put_error(lib, func, reason, file, line) \ ++ (ERR_new(), \ ++ ERR_set_debug((file), (line), OPENSSL_FUNC), \ ++ ERR_set_error((lib), (reason), NULL)) ++# endif ++ ++void ERR_set_error_data(char *data, int flags); ++ ++unsigned long ERR_get_error(void); ++unsigned long ERR_get_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line(const char **file, int *line); ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++#endif ++unsigned long ERR_peek_error(void); ++unsigned long ERR_peek_error_line(const char **file, int *line); ++unsigned long ERR_peek_error_func(const char **func); ++unsigned long ERR_peek_error_data(const char **data, int *flags); ++unsigned long ERR_peek_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++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_func(const char **func); ++unsigned long ERR_peek_last_error_data(const char **data, int *flags); ++unsigned long ERR_peek_last_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_last_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++ ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); ++# endif ++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); ++void ERR_add_error_txt(const char *sepr, const char *txt); ++void ERR_add_error_mem_bio(const char *sep, BIO *bio); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define ERR_load_crypto_strings() \ ++ OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) ++# define ERR_free_strings() while(0) continue ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); ++#endif ++ ++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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ess.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ess.h +new file mode 100644 +index 00000000..4055bebb +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ess.h +@@ -0,0 +1,128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ess.h.in ++ * ++ * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ESS_H ++# define OPENSSL_ESS_H ++# pragma once ++ ++# include ++ ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++ ++typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; ++typedef struct ESS_cert_id ESS_CERT_ID; ++typedef struct ESS_signing_cert ESS_SIGNING_CERT; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) ++#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) ++#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; ++typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) ++#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) ++DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) ++ ++ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, ++ const STACK_OF(X509) *certs, ++ int set_issuer_serial); ++ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, ++ const X509 *signcert, ++ const ++ STACK_OF(X509) *certs, ++ int set_issuer_serial); ++int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, ++ const ESS_SIGNING_CERT_V2 *ssv2, ++ const STACK_OF(X509) *chain, ++ int require_signing_cert); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/fipskey.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/fipskey.h +new file mode 100644 +index 00000000..42ba014b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/fipskey.h +@@ -0,0 +1,36 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/fipskey.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_FIPSKEY_H ++# define OPENSSL_FIPSKEY_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * The FIPS validation HMAC key, usable as an array initializer. ++ */ ++#define FIPS_KEY_ELEMENTS \ ++ 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 ++ ++/* ++ * The FIPS validation key, as a string. ++ */ ++#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/lhash.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/lhash.h +new file mode 100644 +index 00000000..39dd6254 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/lhash.h +@@ -0,0 +1,288 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_LHASH_H ++# define OPENSSL_LHASH_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_LHASH_H ++# endif ++ ++# 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_flush(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ ++/* Helper macro for internal use */ ++# define DEFINE_LHASH_OF_INTERNAL(type) \ ++ LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ ++ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ ++ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ ++ typedef void (*lh_##type##_doallfunc)(type *a); \ ++ static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ ++ { \ ++ return (const OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ ++ { \ ++ return (OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_LH_COMPFUNC)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ ++ { \ ++ return (OPENSSL_LH_HASHFUNC)hfn; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ ++ { \ ++ return (OPENSSL_LH_DOALL_FUNC)dfn; \ ++ } \ ++ LHASH_OF(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 void lh_##type##_flush(LHASH_OF(type) *lh) \ ++ { \ ++ OPENSSL_LH_flush((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); \ ++ } \ ++ static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ ++ void (*doallarg)(type *, void *), \ ++ void *arg) \ ++ { \ ++ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ ++ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ ++ } \ ++ 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_INTERNAL(OPENSSL_STRING); ++#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) ++#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) ++DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); ++#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) ++#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ocsp.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ocsp.h +new file mode 100644 +index 00000000..142b1831 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ocsp.h +@@ -0,0 +1,483 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ocsp.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OCSP_H ++# define OPENSSL_OCSP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OCSP_H ++# endif ++ ++# include ++# include ++# 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), ++ * -- value 7 is not used ++ * removeFromCRL (8), ++ * privilegeWithdrawn (9), ++ * aACompromise (10) } ++ */ ++# 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 ++# define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 ++# define OCSP_REVOKED_STATUS_AACOMPROMISE 10 ++ ++ ++# ifndef OPENSSL_NO_OCSP ++ ++# 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 ++# define OCSP_PARTIAL_CHAIN 0x1000 ++ ++typedef struct ocsp_cert_id_st OCSP_CERTID; ++typedef struct ocsp_one_request_st OCSP_ONEREQ; ++typedef struct ocsp_req_info_st OCSP_REQINFO; ++typedef struct ocsp_signature_st OCSP_SIGNATURE; ++typedef struct ocsp_request_st OCSP_REQUEST; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) ++#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) ++#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) ++#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) ++#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) ++#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) ++#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) ++#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) ++#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) ++#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) ++#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) ++#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) ++#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) ++#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) ++#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) ++#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) ++#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) ++#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) ++#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++ ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) ++#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) ++#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) ++#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) ++#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) ++#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) ++#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) ++#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) ++#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) ++#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++ ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) ++#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) ++#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) ++#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) ++#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) ++#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) ++#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) ++#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) ++#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) ++#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++ ++ ++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((i2d_of_void *)i2d_OCSP_CERTSTATUS,\ ++ (d2i_of_void *)d2i_OCSP_CERTSTATUS,(char *)(cs)) ++ ++DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) ++ ++OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, ++ const OCSP_REQUEST *req, int buf_size); ++OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; ++# define OCSP_REQ_CTX_new(io, buf_size) \ ++ OSSL_HTTP_REQ_CTX_new(io, io, buf_size) ++# define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free ++# define OCSP_REQ_CTX_http(rctx, op, path) \ ++ (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && \ ++ OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, \ ++ NULL, NULL, path)) ++# define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header ++# define OCSP_REQ_CTX_i2d(r, it, req) \ ++ OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) ++# define OCSP_REQ_CTX_set1_req(r, req) \ ++ OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) ++# define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio ++# define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i ++# define OCSP_sendreq_nbio(p, r) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ ++ ASN1_ITEM_rptr(OCSP_RESPONSE)) ++# define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio ++# define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length ++# endif ++ ++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, const 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); ++ ++# define OCSP_parse_url(url, host, port, path, ssl) \ ++ OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) ++ ++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_ex(OCSP_RESPID *respid, X509 *cert, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); ++int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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(const 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 /* !defined(OPENSSL_NO_OCSP) */ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/opensslv.h +new file mode 100644 +index 00000000..4af88bb2 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/opensslv.h +@@ -0,0 +1,114 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/opensslv.h.in ++ * ++ * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OPENSSLV_H ++# define OPENSSL_OPENSSLV_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * SECTION 1: VERSION DATA. These will change for each release ++ */ ++ ++/* ++ * Base version macros ++ * ++ * These macros express version number MAJOR.MINOR.PATCH exactly ++ */ ++# define OPENSSL_VERSION_MAJOR 3 ++# define OPENSSL_VERSION_MINOR 0 ++# define OPENSSL_VERSION_PATCH 5 ++ ++/* ++ * Additional version information ++ * ++ * These are also part of the new version scheme, but aren't part ++ * of the version number itself. ++ */ ++ ++/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ ++# define OPENSSL_VERSION_PRE_RELEASE "" ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ ++# define OPENSSL_VERSION_BUILD_METADATA "+quic" ++ ++/* ++ * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA ++ * to be anything but the empty string. Its use is entirely reserved for ++ * others ++ */ ++ ++/* ++ * Shared library version ++ * ++ * This is strictly to express ABI version, which may or may not ++ * be related to the API version expressed with the macros above. ++ * This is defined in free form. ++ */ ++# define OPENSSL_SHLIB_VERSION 81.3 ++ ++/* ++ * SECTION 2: USEFUL MACROS ++ */ ++ ++/* For checking general API compatibility when preprocessing */ ++# define OPENSSL_VERSION_PREREQ(maj,min) \ ++ ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) ++ ++/* ++ * Macros to get the version in easily digested string form, both the short ++ * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced ++ * with the values from the corresponding OPENSSL_VERSION_ macros) and the ++ * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and ++ * OPENSSL_VERSION_BUILD_METADATA_STR appended. ++ */ ++# define OPENSSL_VERSION_STR "3.0.5" ++# define OPENSSL_FULL_VERSION_STR "3.0.5+quic" ++ ++/* ++ * SECTION 3: ADDITIONAL METADATA ++ * ++ * These strings are defined separately to allow them to be parsable. ++ */ ++# define OPENSSL_RELEASE_DATE "5 Jul 2022" ++ ++/* ++ * SECTION 4: BACKWARD COMPATIBILITY ++ */ ++ ++# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.5+quic 5 Jul 2022" ++ ++/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ ++# ifdef OPENSSL_VERSION_PRE_RELEASE ++# define _OPENSSL_VERSION_PRE_RELEASE 0x0L ++# else ++# define _OPENSSL_VERSION_PRE_RELEASE 0xfL ++# endif ++# define OPENSSL_VERSION_NUMBER \ ++ ( (OPENSSL_VERSION_MAJOR<<28) \ ++ |(OPENSSL_VERSION_MINOR<<20) \ ++ |(OPENSSL_VERSION_PATCH<<4) \ ++ |_OPENSSL_VERSION_PRE_RELEASE ) ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OPENSSLV_H ++# endif ++ ++#endif /* OPENSSL_OPENSSLV_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs12.h +new file mode 100644 +index 00000000..c5e0cab0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs12.h +@@ -0,0 +1,350 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs12.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS12_H ++# define OPENSSL_PKCS12_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS12_H ++# endif ++ ++# include ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) ++#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) ++#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) ++#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) ++#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) ++#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) ++#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) ++#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) ++#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) ++#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) ++#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++ ++ ++typedef struct pkcs12_bag_st PKCS12_BAGS; ++ ++# define PKCS12_ERROR 0 ++# define PKCS12_OK 1 ++ ++/* Compatibility macros */ ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++ ++# 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 ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, ++ int attr_nid); ++#endif ++ ++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); ++const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); ++const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(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_create_secret(int type, int vtype, const unsigned char *value, int len); ++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_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, ++ const char *pass, ++ int passlen, ++ unsigned char *salt, ++ int saltlen, int iter, ++ PKCS8_PRIV_KEY_INFO *p8inf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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 *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, ++ int passlen, OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++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_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, ++ const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, ++ OSSL_LIB_CTX *ctx, const char *propq); ++X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); ++X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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); ++PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, ++ unsigned char *salt, int saltlen, int iter, ++ STACK_OF(PKCS12_SAFEBAG) *bags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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 PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, ++ const unsigned char *bytes, int len); ++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); ++unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, ++ const char *pass, int passlen, ++ const unsigned char *in, int inlen, ++ unsigned char **data, int *datalen, ++ int en_de, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ const ASN1_OCTET_STRING *oct, int zbuf, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS12 *PKCS12_init(int mode); ++PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_asc_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ++ ASN1_TYPE *param, const EVP_CIPHER *cipher, ++ const EVP_MD *md_type, int en_de, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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 *PKCS12_create_ex(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, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ EVP_PKEY *key, int key_usage, int iter, ++ int key_nid, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ int nid_type, const unsigned char *value, int len); ++int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass); ++int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); ++PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); ++# ifndef OPENSSL_NO_STDIO ++int i2d_PKCS12_fp(FILE *fp, const 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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs7.h +new file mode 100644 +index 00000000..557a0a72 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/pkcs7.h +@@ -0,0 +1,427 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs7.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS7_H ++# define OPENSSL_PKCS7_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS7_H ++# endif ++ ++# 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_CTX_st { ++ OSSL_LIB_CTX *libctx; ++ char *propq; ++} PKCS7_CTX; ++ ++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; ++ const PKCS7_CTX *ctx; ++} PKCS7_SIGNER_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) ++#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) ++#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) ++#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++ ++ ++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 */ ++ const PKCS7_CTX *ctx; ++} PKCS7_RECIP_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) ++#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) ++#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) ++#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++ ++ ++ ++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; ++ const PKCS7_CTX *ctx; ++} 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_CTX ctx; ++} PKCS7; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) ++#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) ++#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) ++#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) ++#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) ++#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) ++#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) ++#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) ++#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) ++#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) ++#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) ++#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) ++ ++ ++ ++# 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, const PKCS7 *p7); ++# endif ++DECLARE_ASN1_DUP_FUNCTION(PKCS7) ++PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); ++int i2d_PKCS7_bio(BIO *bp, const 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) ++PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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_type_is_other(PKCS7 *p7); ++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_get_octet_string(PKCS7 *p7); ++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(const PKCS7_SIGNER_INFO *si, int nid); ++ASN1_TYPE *PKCS7_get_signed_attribute(const 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 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, ++ BIO *data, int flags, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++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); ++PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, int flags, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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_ex(BIO *bio, BIO **bcont, PKCS7 **p7); ++PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); ++ ++BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/safestack.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/safestack.h +new file mode 100644 +index 00000000..0499700b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/safestack.h +@@ -0,0 +1,297 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/safestack.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_SAFESTACK_H ++# define OPENSSL_SAFESTACK_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SAFESTACK_H ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# define STACK_OF(type) struct stack_st_##type ++ ++/* Helper macro for internal use */ ++# define SKM_DEFINE_STACK_OF_INTERNAL(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 t2 *ossl_check_##t1##_type(t2 *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ ++ { \ ++ return (const OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ ++ { \ ++ return (OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_sk_compfunc)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ ++ { \ ++ return (OPENSSL_sk_copyfunc)cpy; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ ++ { \ ++ return (OPENSSL_sk_freefunc)fr; \ ++ } ++ ++# 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 int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ ++ { \ ++ return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ ++ } \ ++ 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_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) ++# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) ++# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) ++# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ ++ SKM_DEFINE_STACK_OF(t1, const t2, t2) ++ ++/*- ++ * 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. ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) ++#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) ++#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) ++#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) ++#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) ++#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) ++#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) ++#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) ++#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) ++#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) ++#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++ ++ ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) ++/* ++ * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. ++ * These should also be distinguished from "normal" stacks. ++ */ ++typedef void *OPENSSL_BLOCK; ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) ++#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) ++#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) ++#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) ++#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) ++#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) ++#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) ++#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) ++#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++ ++#endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/srp.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/srp.h +new file mode 100644 +index 00000000..a48766c6 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/srp.h +@@ -0,0 +1,285 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/srp.h.in ++ * ++ * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2004, EdelKey Project. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_SRP_H ++# define OPENSSL_SRP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SRP_H ++# endif ++ ++#include ++ ++#ifndef OPENSSL_NO_SRP ++# include ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++ ++typedef struct SRP_gN_cache_st { ++ char *b64_bn; ++ BIGNUM *bn; ++} SRP_gN_cache; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) ++#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) ++#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) ++#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) ++#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) ++#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) ++#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) ++#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) ++#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++ ++ ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) ++#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) ++#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) ++#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) ++#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) ++#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) ++#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) ++#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) ++#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) ++#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) ++#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_user_pwd_new(void); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_free(SRP_user_pwd *user_pwd); ++ ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, ++ const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, ++ const char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) ++#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) ++#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) ++#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) ++#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) ++#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) ++#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) ++#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) ++#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) ++#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) ++ ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_VBASE *SRP_VBASE_new(char *seed_key); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_VBASE_free(SRP_VBASE *vb); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); ++ ++/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); ++ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, ++ BIGNUM **verifier, const BIGNUM *N, ++ const BIGNUM *g, OSSL_LIB_CTX *libctx, ++ const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++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 */ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++SRP_gN *SRP_get_default_gN(const char *id); ++ ++/* server side .... */ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, ++ const BIGNUM *b, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); ++ ++/* client side .... */ ++ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); ++ ++# define SRP_MINIMAL_N 1024 ++ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++/* This method ignores the configured seed and fails for an unknown user. */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ++SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ssl.h +new file mode 100644 +index 00000000..0f191575 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ssl.h +@@ -0,0 +1,2668 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ssl.h.in ++ * ++ * 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 Apache License 2.0 (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_SSL_H ++# define OPENSSL_SSL_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SSL_H ++# endif ++ ++# include ++# include ++# include ++# include ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++# include ++# 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 ++/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ ++ ++/* 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_kGOST18 "kGOST18" ++# 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_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" ++# define SSL_TXT_CBC "CBC" ++ ++# 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. ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() ++ * Update both macro and function simultaneously ++ */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" ++/* ++ * This is the default set of TLSv1.3 ciphersuites ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() ++ * Update both macro and function simultaneously ++ */ ++# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ ++ "TLS_CHACHA20_POLY1305_SHA256:" \ ++ "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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) ++#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) ++#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) ++#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) ++#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) ++#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) ++#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) ++#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) ++#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) ++#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) ++#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++ ++ ++ ++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); ++ ++/* Typedef for SSL async callback */ ++typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); ++ ++#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) ++ ++/* ++ * SSL/TLS connection options. ++ */ ++ /* Disable Extended master secret */ ++# define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) ++ /* Cleanse plaintext copies of data delivered to the application */ ++# define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) ++ /* Allow initial connection to servers that don't support RI */ ++# define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) ++ /* Enable support for Kernel TLS */ ++# define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) ++# define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) ++# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) ++# define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) ++# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) ++# define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) ++ /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ ++# define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) ++ /* ++ * 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 SSL_OP_BIT(11) ++ /* DTLS options */ ++# define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) ++ /* Turn on Cookie Exchange (on relevant for servers) */ ++# define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) ++ /* Don't use RFC4507 ticket extension */ ++# define SSL_OP_NO_TICKET SSL_OP_BIT(14) ++# ifndef OPENSSL_NO_DTLS1_METHOD ++ /* ++ * Use Cisco's version identifier of DTLS_BAD_VER ++ * (only with deprecated DTLSv1_client_method()) ++ */ ++# define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) ++# endif ++ /* As server, disallow session resumption on renegotiation */ ++# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) ++ /* Don't use compression even if supported */ ++# define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) ++ /* Permit unsafe legacy renegotiation */ ++# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) ++ /* Disable encrypt-then-mac */ ++# define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) ++ /* ++ * 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 SSL_OP_BIT(20) ++ /* ++ * Prioritize Chacha20Poly1305 when client does. ++ * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE ++ */ ++# define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) ++ /* ++ * Set on servers to choose the cipher according to server's preferences. ++ */ ++# define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) ++ /* ++ * 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 SSL_OP_BIT(23) ++ /* ++ * 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 SSL_OP_BIT(24) ++# define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) ++# define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) ++# define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) ++# define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) ++# define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) ++ /* Disallow all renegotiation */ ++# define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) ++ /* ++ * 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 SSL_OP_BIT(31) ++ ++/* ++ * Option "collections." ++ */ ++# 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 ) ++ ++/* Various bug workarounds that should be rather harmless. */ ++# define SSL_OP_ALL \ ++ ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ ++ | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG ) ++ ++/* ++ * OBSOLETE OPTIONS retained for compatibility ++ */ ++ ++# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 ++# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 ++# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 ++# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 ++# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 ++# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 ++# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 ++# define SSL_OP_TLS_D5_BUG 0x0 ++# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 ++# define SSL_OP_SINGLE_ECDH_USE 0x0 ++# define SSL_OP_SINGLE_DH_USE 0x0 ++# define SSL_OP_EPHEMERAL_RSA 0x0 ++# define SSL_OP_NO_SSLv2 0x0 ++# define SSL_OP_PKCS1_CHECK_1 0x0 ++# define SSL_OP_PKCS1_CHECK_2 0x0 ++# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 ++# 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 ++# define SSL_CONF_TYPE_STORE 0x5 ++ ++/* 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. ++ */ ++ ++uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); ++uint64_t SSL_get_options(const SSL *s); ++uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_clear_options(SSL *s, uint64_t op); ++uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_set_options(SSL *s, uint64_t 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) ++ ++# 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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, ++ int *ad); ++OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); ++# endif ++# 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) ++# define SSL_SESS_CACHE_UPDATE_TIME 0x0400 ++ ++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 256 ++# define PSK_MAX_PSK_LEN 512 ++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 ++# define SSL_RETRY_VERIFY 8 ++ ++/* 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_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) ++# 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 ++# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 ++# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 ++ ++/* ++ * 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 ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) ++#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) ++#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) ++#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) ++#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) ++#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) ++#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) ++#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) ++#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) ++#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) ++#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) ++#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) ++#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) ++#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) ++#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) ++#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) ++#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) ++#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) ++#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) ++#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) ++#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) ++#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) ++ ++ ++/* 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))) ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); ++# endif ++ ++/* 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_ERROR_WANT_RETRY_VERIFY 12 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TMP_DH 3 ++# define SSL_CTRL_SET_TMP_ECDH 4 ++# define SSL_CTRL_SET_TMP_DH_CB 6 ++# endif ++ ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 ++# endif ++# 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 ++# 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_NEGOTIATED_GROUP 134 ++# define SSL_CTRL_SET_RETRY_VERIFY 136 ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_dh(ctx,dh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_set_tmp_dh(ssl,dh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# define SSL_set_tmp_ecdh(ssl,ecdh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# endif ++# 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_get_negotiated_group(s) \ ++ SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,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) ++ ++const char *SSL_group_to_name(SSL *s, int id); ++ ++/* 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) ++ ++int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); ++int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); ++ ++/* ++ * 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 ++ ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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); ++__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, ++ 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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 STACK_OF(X509_NAME) ++*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++__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); ++int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, ++ const char *uri); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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(const 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(const 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 OPENSSL_X509_H ++__owur X509 *SSL_get0_peer_certificate(const SSL *s); ++__owur X509 *SSL_get1_peer_certificate(const SSL *s); ++/* Deprecated in 3.0.0 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_get_peer_certificate SSL_get1_peer_certificate ++# endif ++# 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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, const unsigned 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, const unsigned 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, ++ char *(*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, int *, void *)); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, ++ BIGNUM *sa, BIGNUM *v, char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, ++ const char *grp); ++ ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); ++ ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); ++# endif ++# 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); ++__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); ++__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); ++__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); ++__owur int SSL_set_async_callback_arg(SSL *s, void *arg); ++__owur int SSL_get_async_status(SSL *s, int *status); ++ ++# 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 ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, ++ int flags); ++__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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); ++# endif ++ ++# ifndef OPENSSL_NO_SSL3_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); ++# endif ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_2_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_2_METHOD ++/* DTLSv1.2 */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); ++# endif ++# 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_new_session_ticket(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_set_default_verify_store(SSL_CTX *ctx); ++__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); ++__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); ++__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); ++__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) ++# define SSL_set_retry_verify(ssl) \ ++ (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0) ++ ++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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* NB: the |keylength| is only applicable when is_export is true */ ++OSSL_DEPRECATEDIN_3_0 ++void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++OSSL_DEPRECATEDIN_3_0 ++void SSL_set_tmp_dh_callback(SSL *ssl, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++# endif ++# 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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++int 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++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); ++ ++/* store the default cipher strings inside the library */ ++const char *OSSL_default_cipher_list(void); ++const char *OSSL_default_ciphersuites(void); ++ ++# ifndef OPENSSL_NO_QUIC ++/* ++ * QUIC integration - The QUIC interface matches BoringSSL ++ * ++ * ssl_encryption_level_t represents a specific QUIC encryption level used to ++ * transmit handshake messages. BoringSSL has this as an 'enum'. ++ */ ++#include ++ ++/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */ ++# define X25519_PRIVATE_KEY_LEN 32 ++# define X25519_PUBLIC_VALUE_LEN 32 ++ ++/* moved from types.h to avoid breaking FIPS checksums */ ++typedef struct ssl_quic_method_st SSL_QUIC_METHOD; ++ ++typedef enum ssl_encryption_level_t { ++ ssl_encryption_initial = 0, ++ ssl_encryption_early_data, ++ ssl_encryption_handshake, ++ ssl_encryption_application ++} OSSL_ENCRYPTION_LEVEL; ++ ++struct ssl_quic_method_st { ++ int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *read_secret, ++ const uint8_t *write_secret, size_t secret_len); ++ int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++ int (*flush_flight)(SSL *ssl); ++ int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert); ++}; ++ ++__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_transport_params(SSL *ssl, ++ const uint8_t *params, ++ size_t params_len); ++void SSL_get_peer_quic_transport_params(const SSL *ssl, ++ const uint8_t **out_params, ++ size_t *out_params_len); ++__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl); ++__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++__owur int SSL_process_quic_post_handshake(SSL *ssl); ++ ++__owur int SSL_is_quic(SSL *ssl); ++ ++/* BoringSSL API */ ++void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy); ++ ++/* ++ * Set an explicit value that you want to use ++ * If 0 (default) the server will use the highest extenstion the client sent ++ * If 0 (default) the client will send both extensions ++ */ ++void SSL_set_quic_transport_version(SSL *ssl, int version); ++__owur int SSL_get_quic_transport_version(const SSL *ssl); ++/* Returns the negotiated version, or -1 on error */ ++__owur int SSL_get_peer_quic_transport_version(const SSL *ssl); ++ ++int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c); ++ ++void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled); ++ ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ui.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ui.h +new file mode 100644 +index 00000000..e64ec3b3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/ui.h +@@ -0,0 +1,407 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ui.h.in ++ * ++ * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_UI_H ++# define OPENSSL_UI_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_UI_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++# include ++# include ++# include ++# include ++ ++/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# 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. ++ * phrase_desc is a textual short description of the phrase to enter, ++ * for example "pass phrase", and ++ * object_name is the name of the object ++ * (which might be a card name or a file name) or NULL. ++ * 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 {phrase_desc} for {object_name}:" ++ * ++ * So, if phrase_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 *phrase_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(const 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) ++#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) ++#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) ++#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) ++#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) ++#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) ++#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) ++#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) ++#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) ++#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) ++#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) ++#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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 ++ *phrase_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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509.h +new file mode 100644 +index 00000000..1f7755e5 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509.h +@@ -0,0 +1,1276 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_X509_H ++# define OPENSSL_X509_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* Needed stacks for types defined in other headers */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) ++#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) ++#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) ++#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) ++#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) ++#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) ++#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) ++#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) ++#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) ++#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) ++#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) ++#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) ++#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) ++#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) ++#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) ++#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) ++#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) ++#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) ++#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) ++#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) ++#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) ++#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) ++#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) ++#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) ++#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) ++#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) ++#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) ++#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) ++#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) ++#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) ++#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) ++#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) ++#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) ++#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) ++#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) ++#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) ++#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) ++#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) ++#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) ++#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) ++#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) ++#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) ++#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) ++#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) ++#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) ++#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) ++#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) ++#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) ++#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) ++#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) ++#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) ++ ++ ++/* 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) ++#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) ++#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) ++#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) ++#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) ++#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) ++#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) ++#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) ++#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++ ++ ++# define X509_EX_V_NETSCAPE_HACK 0x8000 ++# define X509_EX_V_INIT 0x0001 ++typedef struct X509_extension_st X509_EXTENSION; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) ++#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) ++#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) ++#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) ++#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) ++#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) ++#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) ++#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) ++#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) ++#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) ++#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++ ++typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; ++typedef struct x509_attributes_st X509_ATTRIBUTE; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) ++#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) ++#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) ++#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) ++#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) ++#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) ++#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) ++#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) ++#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) ++#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) ++#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++ ++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; ++ ++/* 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) ++# define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) ++ ++/* 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) ++ ++typedef struct X509_crl_info_st X509_CRL_INFO; ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) ++#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) ++#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) ++#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) ++#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) ++#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) ++#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) ++#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) ++#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) ++#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) ++#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) ++#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) ++ ++ ++/* ++ * 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, ++ const ++ ASN1_INTEGER *serial, ++ const ++ 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_self_signed(X509 *cert, int verify_signature); ++ ++int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); ++int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); ++int 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); ++ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, ++ EVP_MD **md_used, int *md_is_fallback); ++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); ++ ++X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ ++# define X509_http_nbio(rctx, pcert) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) ++# define X509_CRL_http_nbio(rctx, pcrl) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) ++# endif ++ ++# ifndef OPENSSL_NO_STDIO ++X509 *d2i_X509_fp(FILE *fp, X509 **x509); ++int i2d_X509_fp(FILE *fp, const X509 *x509); ++X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); ++int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); ++int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); ++int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); ++int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); ++int i2d_PUBKEY_fp(FILE *fp, const 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, const X509 *x509); ++X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); ++int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); ++int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); ++int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); ++int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); ++int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509) ++DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) ++DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) ++DECLARE_ASN1_DUP_FUNCTION(X509_CRL) ++DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) ++DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) ++DECLARE_ASN1_DUP_FUNCTION(X509_REQ) ++DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) ++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); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME) ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) ++ ++int X509_cmp_time(const ASN1_TIME *s, time_t *t); ++int X509_cmp_current_time(const ASN1_TIME *s); ++int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, ++ const ASN1_TIME *start, const ASN1_TIME *end); ++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) ++ ++X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); ++EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); ++EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); ++int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); ++long X509_get_pathlen(X509 *x); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) ++EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, ++ OSSL_LIB_CTX *libctx, const char *propq); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,DSA, DSA_PUBKEY) ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) ++# endif ++# 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) ++X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, const X509_NAME *name); ++ ++DECLARE_ASN1_FUNCTIONS(X509_CINF) ++DECLARE_ASN1_FUNCTIONS(X509) ++X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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(const X509 *r, int idx); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX) ++ ++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); ++ ++void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); ++void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *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); ++ ++DECLARE_ASN1_FUNCTIONS(X509_REVOKED) ++DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) ++DECLARE_ASN1_FUNCTIONS(X509_CRL) ++X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); ++int X509_CRL_get0_by_serial(X509_CRL *crl, ++ X509_REVOKED **ret, const 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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, ++ ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, ++ unsigned char *md, unsigned int *len); ++OSSL_DEPRECATEDIN_3_0 ++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); ++#endif ++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, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey); ++int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_MD_CTX *ctx); ++int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, ++ ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey, const EVP_MD *md); ++int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, EVP_MD_CTX *ctx); ++ ++#define X509_VERSION_1 0 ++#define X509_VERSION_2 1 ++#define X509_VERSION_3 2 ++ ++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, const X509_NAME *name); ++X509_NAME *X509_get_issuer_name(const X509 *a); ++int X509_set_subject_name(X509 *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++#define X509_REQ_VERSION_1 0 ++ ++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, const 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, ++ const STACK_OF(X509_EXTENSION) *exts, int nid); ++int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); ++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); ++ ++#define X509_CRL_VERSION_1 0 ++#define X509_CRL_VERSION_2 1 ++ ++int X509_CRL_set_version(X509_CRL *x, long version); ++int X509_CRL_set_issuer_name(X509_CRL *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); ++#endif ++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 ++ ++# define X509_ADD_FLAG_DEFAULT 0 ++# define X509_ADD_FLAG_UP_REF 0x1 ++# define X509_ADD_FLAG_PREPEND 0x2 ++# define X509_ADD_FLAG_NO_DUP 0x4 ++# define X509_ADD_FLAG_NO_SS 0x8 ++int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); ++int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); ++ ++int X509_cmp(const X509 *a, const X509 *b); ++int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) ++OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, ++ const EVP_PKEY *pubkey); ++#endif ++unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, ++ const char *propq, int *ok); ++unsigned long X509_NAME_hash_old(const 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(const X509_NAME *name, int nid, ++ char *buf, int len); ++int X509_NAME_get_text_by_OBJ(const 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(const X509_NAME *name, int nid, int lastpos); ++int X509_NAME_get_index_by_OBJ(const 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(const 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); ++ ++/* lookup a cert from a X509 STACK */ ++X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, ++ const ASN1_INTEGER *serial); ++X509 *X509_find_by_subject(STACK_OF(X509) *sk, const 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); ++int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe_set(int alg, int iter, ++ const unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid); ++X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid, ++ OSSL_LIB_CTX *libctx); ++ ++#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); ++X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, ++ int prf_nid, int keylen, ++ OSSL_LIB_CTX *libctx); ++ ++/* PKCS#8 utilities */ ++ ++DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) ++ ++EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); ++EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const 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(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); ++int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, ++ 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, const X509_PUBKEY *pub); ++int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509_vfy.h +new file mode 100644 +index 00000000..29b0e147 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509_vfy.h +@@ -0,0 +1,894 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509_vfy.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509_VFY_H ++# define OPENSSL_X509_VFY_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_VFY_H ++# endif ++ ++/* ++ * Protect against recursion, x509.h and x509_vfy.h each include the other. ++ */ ++# ifndef OPENSSL_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; ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++#define X509_LU_RETRY -1 ++#define X509_LU_FAIL 0 ++#endif ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) ++#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) ++#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) ++#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) ++#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) ++#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) ++#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) ++#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) ++#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) ++#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) ++#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) ++#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) ++#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) ++#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) ++#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) ++#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) ++#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) ++#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) ++#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) ++#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) ++#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) ++#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) ++#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) ++#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) ++#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) ++#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) ++#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) ++#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) ++#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) ++#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) ++#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++ ++ ++/* 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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) ++#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) ++#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) ++#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) ++#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) ++#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) ++#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) ++#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) ++#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) ++#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) ++#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) ++#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) ++ ++ ++/* 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 rejection OID and 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 ++ ++int X509_TRUST_set(int *t, int trust); ++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); ++ ++int X509_trusted(const X509 *x); ++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); ++ ++int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, ++ int); ++int X509_check_trust(X509 *x, int id, int flags); ++ ++int X509_verify_cert(X509_STORE_CTX *ctx); ++int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, ++ X509_STORE *store, int with_self_signed, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_STORE_set_depth(X509_STORE *store, int depth); ++ ++typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); ++int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *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, ++ const X509_NAME *nm); ++typedef STACK_OF(X509_CRL) ++ *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, ++ const 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_L_ADD_STORE 3 ++# define X509_L_LOAD_STORE 4 ++ ++# 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_LOOKUP_add_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_ADD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_LOAD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL,\ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# 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_NO_ISSUER_PUBLIC_KEY 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_UNSUPPORTED_SIGNATURE_ALGORITHM 76 ++# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 ++ ++/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ ++# define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 ++# define X509_V_ERR_INVALID_CA 79 ++# define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 ++# define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 ++# define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 ++# define X509_V_ERR_ISSUER_NAME_EMPTY 83 ++# define X509_V_ERR_SUBJECT_NAME_EMPTY 84 ++# define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 ++# define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 ++# define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 ++# define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 ++# define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 ++# define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 ++# define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 ++# define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 ++# define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 ++# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 ++ ++/* Certificate verify flags */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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, ++ const X509_NAME *name); ++X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, ++ X509_LOOKUP_TYPE type, ++ const 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(const 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(const X509_STORE *v); ++STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); ++STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, ++ const X509_NAME *nm); ++STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, ++ const 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, const X509_VERIFY_PARAM *pm); ++X509_VERIFY_PARAM *X509_STORE_get0_param(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const X509_STORE *ctx, int idx); ++ ++X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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 *trust_store, ++ X509 *target, STACK_OF(X509) *untrusted); ++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(const X509_STORE_CTX *ctx); ++X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); ++STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const 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(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++X509_LOOKUP_METHOD *X509_LOOKUP_store(void); ++ ++typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++typedef int (*X509_LOOKUP_ctrl_ex_fn)( ++ X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret); ++typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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(const X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret); ++X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name); ++ ++int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, ++ char **ret, OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); ++int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, ++ const X509_NAME *name, X509_OBJECT *ret); ++int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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_file(X509_STORE *ctx, const char *file); ++int X509_STORE_load_path(X509_STORE *ctx, const char *path); ++int X509_STORE_load_store(X509_STORE *ctx, const char *store); ++int X509_STORE_load_locations(X509_STORE *ctx, ++ const char *file, ++ const char *dir); ++int X509_STORE_set_default_paths(X509_STORE *ctx); ++ ++int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, ++ const char *dir, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++#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(const X509_STORE_CTX *ctx, int idx); ++int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); ++int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); ++X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); ++X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); ++X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); ++void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); ++void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, 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(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); ++ ++X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const 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(const 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); ++ ++char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); ++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(const X509_VERIFY_PARAM *param); ++void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); ++char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); ++int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, ++ const char *email, size_t emaillen); ++char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); ++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(const 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/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509v3.h b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509v3.h +new file mode 100644 +index 00000000..7ec87026 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/openssl/x509v3.h +@@ -0,0 +1,1450 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509v3.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509V3_H ++# define OPENSSL_X509V3_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509V3_H ++# endif ++ ++# 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) (const 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 for producing X509 v3 extensions*/ ++struct v3_ext_ctx { ++# define X509V3_CTX_TEST 0x1 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define CTX_TEST X509V3_CTX_TEST ++# endif ++# 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; ++ EVP_PKEY *issuer_pkey; ++/* Maybe more here */ ++}; ++ ++typedef struct v3_ext_method X509V3_EXT_METHOD; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) ++#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) ++#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) ++#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) ++#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) ++#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) ++#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) ++#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) ++#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) ++#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) ++#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++ ++ ++/* ext_flags values */ ++# define X509V3_EXT_DYNAMIC 0x1 ++# define X509V3_EXT_CTX_DEP 0x2 ++# define X509V3_EXT_MULTILINE 0x4 ++ ++typedef BIT_STRING_BITNAME ENUMERATED_NAMES; ++ ++typedef struct BASIC_CONSTRAINTS_st { ++ int ca; ++ ASN1_INTEGER *pathlen; ++} BASIC_CONSTRAINTS; ++ ++typedef struct PKEY_USAGE_PERIOD_st { ++ ASN1_GENERALIZEDTIME *notBefore; ++ ASN1_GENERALIZEDTIME *notAfter; ++} PKEY_USAGE_PERIOD; ++ ++typedef struct otherName_st { ++ ASN1_OBJECT *type_id; ++ ASN1_TYPE *value; ++} OTHERNAME; ++ ++typedef struct EDIPartyName_st { ++ ASN1_STRING *nameAssigner; ++ ASN1_STRING *partyName; ++} EDIPARTYNAME; ++ ++typedef struct GENERAL_NAME_st { ++# define GEN_OTHERNAME 0 ++# define GEN_EMAIL 1 ++# define GEN_DNS 2 ++# define GEN_X400 3 ++# define GEN_DIRNAME 4 ++# define GEN_EDIPARTY 5 ++# define GEN_URI 6 ++# define GEN_IPADD 7 ++# define GEN_RID 8 ++ int type; ++ union { ++ char *ptr; ++ OTHERNAME *otherName; /* otherName */ ++ ASN1_IA5STRING *rfc822Name; ++ ASN1_IA5STRING *dNSName; ++ ASN1_TYPE *x400Address; ++ X509_NAME *directoryName; ++ EDIPARTYNAME *ediPartyName; ++ ASN1_IA5STRING *uniformResourceIdentifier; ++ ASN1_OCTET_STRING *iPAddress; ++ ASN1_OBJECT *registeredID; ++ /* Old names */ ++ ASN1_OCTET_STRING *ip; /* iPAddress */ ++ X509_NAME *dirn; /* dirn */ ++ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, ++ * uniformResourceIdentifier */ ++ ASN1_OBJECT *rid; /* registeredID */ ++ ASN1_TYPE *other; /* x400Address */ ++ } d; ++} GENERAL_NAME; ++ ++typedef struct ACCESS_DESCRIPTION_st { ++ ASN1_OBJECT *method; ++ GENERAL_NAME *location; ++} ACCESS_DESCRIPTION; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) ++#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) ++#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) ++#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) ++#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) ++#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) ++#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) ++#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) ++#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) ++#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) ++#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) ++#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) ++#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) ++#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) ++#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) ++#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) ++#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) ++#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) ++#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; ++typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; ++typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; ++typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) ++#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) ++#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) ++#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) ++#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) ++#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) ++#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) ++#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) ++#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) ++#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) ++#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) ++#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) ++#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) ++#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) ++#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) ++#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) ++#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) ++#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) ++#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) ++#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) ++#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) ++#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) ++#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) ++#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) ++#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) ++#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) ++#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) ++#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) ++#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) ++#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) ++#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) ++#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct SXNET_st { ++ ASN1_INTEGER *version; ++ STACK_OF(SXNETID) *ids; ++} SXNET; ++ ++typedef struct ISSUER_SIGN_TOOL_st { ++ ASN1_UTF8STRING *signTool; ++ ASN1_UTF8STRING *cATool; ++ ASN1_UTF8STRING *signToolCert; ++ ASN1_UTF8STRING *cAToolCert; ++} ISSUER_SIGN_TOOL; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) ++#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) ++#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) ++#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) ++#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) ++#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) ++#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) ++#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) ++#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++ ++ ++ ++typedef struct POLICYINFO_st { ++ ASN1_OBJECT *policyid; ++ STACK_OF(POLICYQUALINFO) *qualifiers; ++} POLICYINFO; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) ++#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) ++#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) ++#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) ++#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) ++#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) ++#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) ++#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) ++#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) ++#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; ++ ++typedef struct POLICY_MAPPING_st { ++ ASN1_OBJECT *issuerDomainPolicy; ++ ASN1_OBJECT *subjectDomainPolicy; ++} POLICY_MAPPING; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) ++#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) ++#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) ++#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) ++#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) ++#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) ++#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) ++#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) ++#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) ++#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) ++#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; ++ ++typedef struct GENERAL_SUBTREE_st { ++ GENERAL_NAME *base; ++ ASN1_INTEGER *minimum; ++ ASN1_INTEGER *maximum; ++} GENERAL_SUBTREE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) ++#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) ++#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) ++#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) ++#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) ++#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) ++#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) ++#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) ++#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) ++#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++ ++ ++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, X509V3_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_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ ++ 0,0,0,0, \ ++ (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ ++ (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ ++ 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 ++# define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ ++# 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_BCONS_CRITICAL 0x10000 ++# define EXFLAG_AKID_CRITICAL 0x20000 ++# define EXFLAG_SKID_CRITICAL 0x40000 ++# define EXFLAG_SAN_CRITICAL 0x80000 ++# 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 /* Netscape or MS Server-Gated Crypto */ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) ++#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) ++#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) ++#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) ++#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) ++#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) ++#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) ++#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) ++#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) ++#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) ++#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++ ++ ++ ++# define X509_PURPOSE_SSL_CLIENT 1 ++# define X509_PURPOSE_SSL_SERVER 2 ++# define X509_PURPOSE_NS_SSL_SERVER 3 ++# define X509_PURPOSE_SMIME_SIGN 4 ++# define X509_PURPOSE_SMIME_ENCRYPT 5 ++# define X509_PURPOSE_CRL_SIGN 6 ++# define X509_PURPOSE_ANY 7 ++# define X509_PURPOSE_OCSP_HELPER 8 ++# define X509_PURPOSE_TIMESTAMP_SIGN 9 ++ ++# define X509_PURPOSE_MIN 1 ++# define X509_PURPOSE_MAX 9 ++ ++/* Flags for X509V3_EXT_print() */ ++ ++# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) ++/* Return error for unknown extensions */ ++# define X509V3_EXT_DEFAULT 0 ++/* Print error for unknown extensions */ ++# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) ++/* ASN1 parse unknown extensions */ ++# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) ++/* BIO_dump unknown extensions */ ++# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) ++ ++/* Flags for X509V3_add1_i2d */ ++ ++# define X509V3_ADD_OP_MASK 0xfL ++# define X509V3_ADD_DEFAULT 0L ++# define X509V3_ADD_APPEND 1L ++# define X509V3_ADD_REPLACE 2L ++# define X509V3_ADD_REPLACE_EXISTING 3L ++# define X509V3_ADD_KEEP_EXISTING 4L ++# define X509V3_ADD_DELETE 5L ++# define X509V3_ADD_SILENT 0x10 ++ ++DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) ++ ++DECLARE_ASN1_FUNCTIONS(SXNET) ++DECLARE_ASN1_FUNCTIONS(SXNETID) ++ ++DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) ++ ++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) ++DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) ++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); ++char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); ++ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(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, const 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 OPENSSL_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); ++/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ ++int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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(const X509 *issuer, const 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); ++SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) ++#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) ++#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) ++#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) ++#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) ++#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) ++#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) ++#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) ++#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) ++#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) ++#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++ ++ ++ ++#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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) ++#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) ++#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) ++#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) ++#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) ++#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) ++#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) ++#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) ++#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) ++#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) ++#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) ++#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASIdOrRange) ASIdOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) ++#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) ++#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) ++#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) ++#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) ++#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) ++#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) ++#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) ++#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) ++#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) ++#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) ++#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) ++#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) ++#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) ++#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) ++#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) ++#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) ++#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) ++#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) ++#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) ++ ++ ++ ++typedef STACK_OF(IPAddressFamily) IPAddrBlocks; ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) ++#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) ++#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) ++#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) ++#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) ++#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) ++#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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) ++SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) ++#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) ++#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) ++#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) ++#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) ++#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) ++#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) ++#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) ++#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) ++#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) ++#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) ++#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) ++#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) ++#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) ++#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) ++#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) ++#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) ++#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) ++#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) ++#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) ++#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) ++ ++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/deps/openssl/config/archs/linux-sw_64/asm/include/progs.h b/deps/openssl/config/archs/linux-sw_64/asm/include/progs.h +new file mode 100644 +index 00000000..07bb763a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/include/progs.h +@@ -0,0 +1,123 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "function.h" ++ ++extern int asn1parse_main(int argc, char *argv[]); ++extern int ca_main(int argc, char *argv[]); ++extern int ciphers_main(int argc, char *argv[]); ++extern int cmp_main(int argc, char *argv[]); ++extern int cms_main(int argc, char *argv[]); ++extern int crl_main(int argc, char *argv[]); ++extern int crl2pkcs7_main(int argc, char *argv[]); ++extern int dgst_main(int argc, char *argv[]); ++extern int dhparam_main(int argc, char *argv[]); ++extern int dsa_main(int argc, char *argv[]); ++extern int dsaparam_main(int argc, char *argv[]); ++extern int ec_main(int argc, char *argv[]); ++extern int ecparam_main(int argc, char *argv[]); ++extern int enc_main(int argc, char *argv[]); ++extern int engine_main(int argc, char *argv[]); ++extern int errstr_main(int argc, char *argv[]); ++extern int fipsinstall_main(int argc, char *argv[]); ++extern int gendsa_main(int argc, char *argv[]); ++extern int genpkey_main(int argc, char *argv[]); ++extern int genrsa_main(int argc, char *argv[]); ++extern int help_main(int argc, char *argv[]); ++extern int info_main(int argc, char *argv[]); ++extern int kdf_main(int argc, char *argv[]); ++extern int list_main(int argc, char *argv[]); ++extern int mac_main(int argc, char *argv[]); ++extern int nseq_main(int argc, char *argv[]); ++extern int ocsp_main(int argc, char *argv[]); ++extern int passwd_main(int argc, char *argv[]); ++extern int pkcs12_main(int argc, char *argv[]); ++extern int pkcs7_main(int argc, char *argv[]); ++extern int pkcs8_main(int argc, char *argv[]); ++extern int pkey_main(int argc, char *argv[]); ++extern int pkeyparam_main(int argc, char *argv[]); ++extern int pkeyutl_main(int argc, char *argv[]); ++extern int prime_main(int argc, char *argv[]); ++extern int rand_main(int argc, char *argv[]); ++extern int rehash_main(int argc, char *argv[]); ++extern int req_main(int argc, char *argv[]); ++extern int rsa_main(int argc, char *argv[]); ++extern int rsautl_main(int argc, char *argv[]); ++extern int s_client_main(int argc, char *argv[]); ++extern int s_server_main(int argc, char *argv[]); ++extern int s_time_main(int argc, char *argv[]); ++extern int sess_id_main(int argc, char *argv[]); ++extern int smime_main(int argc, char *argv[]); ++extern int speed_main(int argc, char *argv[]); ++extern int spkac_main(int argc, char *argv[]); ++extern int srp_main(int argc, char *argv[]); ++extern int storeutl_main(int argc, char *argv[]); ++extern int ts_main(int argc, char *argv[]); ++extern int verify_main(int argc, char *argv[]); ++extern int version_main(int argc, char *argv[]); ++extern int x509_main(int argc, char *argv[]); ++ ++extern const OPTIONS asn1parse_options[]; ++extern const OPTIONS ca_options[]; ++extern const OPTIONS ciphers_options[]; ++extern const OPTIONS cmp_options[]; ++extern const OPTIONS cms_options[]; ++extern const OPTIONS crl_options[]; ++extern const OPTIONS crl2pkcs7_options[]; ++extern const OPTIONS dgst_options[]; ++extern const OPTIONS dhparam_options[]; ++extern const OPTIONS dsa_options[]; ++extern const OPTIONS dsaparam_options[]; ++extern const OPTIONS ec_options[]; ++extern const OPTIONS ecparam_options[]; ++extern const OPTIONS enc_options[]; ++extern const OPTIONS engine_options[]; ++extern const OPTIONS errstr_options[]; ++extern const OPTIONS fipsinstall_options[]; ++extern const OPTIONS gendsa_options[]; ++extern const OPTIONS genpkey_options[]; ++extern const OPTIONS genrsa_options[]; ++extern const OPTIONS help_options[]; ++extern const OPTIONS info_options[]; ++extern const OPTIONS kdf_options[]; ++extern const OPTIONS list_options[]; ++extern const OPTIONS mac_options[]; ++extern const OPTIONS nseq_options[]; ++extern const OPTIONS ocsp_options[]; ++extern const OPTIONS passwd_options[]; ++extern const OPTIONS pkcs12_options[]; ++extern const OPTIONS pkcs7_options[]; ++extern const OPTIONS pkcs8_options[]; ++extern const OPTIONS pkey_options[]; ++extern const OPTIONS pkeyparam_options[]; ++extern const OPTIONS pkeyutl_options[]; ++extern const OPTIONS prime_options[]; ++extern const OPTIONS rand_options[]; ++extern const OPTIONS rehash_options[]; ++extern const OPTIONS req_options[]; ++extern const OPTIONS rsa_options[]; ++extern const OPTIONS rsautl_options[]; ++extern const OPTIONS s_client_options[]; ++extern const OPTIONS s_server_options[]; ++extern const OPTIONS s_time_options[]; ++extern const OPTIONS sess_id_options[]; ++extern const OPTIONS smime_options[]; ++extern const OPTIONS speed_options[]; ++extern const OPTIONS spkac_options[]; ++extern const OPTIONS srp_options[]; ++extern const OPTIONS storeutl_options[]; ++extern const OPTIONS ts_options[]; ++extern const OPTIONS verify_options[]; ++extern const OPTIONS version_options[]; ++extern const OPTIONS x509_options[]; ++ ++extern FUNCTION functions[]; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/openssl-cl.gypi b/deps/openssl/config/archs/linux-sw_64/asm/openssl-cl.gypi +new file mode 100644 +index 00000000..91acce06 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/openssl-cl.gypi +@@ -0,0 +1,106 @@ ++{ ++ 'variables': { ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'OPENSSL_BN_ASM_MONT', ++ 'POLY1305_ASM', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'openssl_cli_srcs_linux-sw_64': [ ++ 'openssl/apps/lib/cmp_mock_srv.c', ++ 'openssl/apps/asn1parse.c', ++ 'openssl/apps/ca.c', ++ 'openssl/apps/ciphers.c', ++ 'openssl/apps/cmp.c', ++ 'openssl/apps/cms.c', ++ 'openssl/apps/crl.c', ++ 'openssl/apps/crl2pkcs7.c', ++ 'openssl/apps/dgst.c', ++ 'openssl/apps/dhparam.c', ++ 'openssl/apps/dsa.c', ++ 'openssl/apps/dsaparam.c', ++ 'openssl/apps/ec.c', ++ 'openssl/apps/ecparam.c', ++ 'openssl/apps/enc.c', ++ 'openssl/apps/engine.c', ++ 'openssl/apps/errstr.c', ++ 'openssl/apps/fipsinstall.c', ++ 'openssl/apps/gendsa.c', ++ 'openssl/apps/genpkey.c', ++ 'openssl/apps/genrsa.c', ++ 'openssl/apps/info.c', ++ 'openssl/apps/kdf.c', ++ 'openssl/apps/list.c', ++ 'openssl/apps/mac.c', ++ 'openssl/apps/nseq.c', ++ 'openssl/apps/ocsp.c', ++ 'openssl/apps/openssl.c', ++ 'openssl/apps/passwd.c', ++ 'openssl/apps/pkcs12.c', ++ 'openssl/apps/pkcs7.c', ++ 'openssl/apps/pkcs8.c', ++ 'openssl/apps/pkey.c', ++ 'openssl/apps/pkeyparam.c', ++ 'openssl/apps/pkeyutl.c', ++ 'openssl/apps/prime.c', ++ './config/archs/linux-sw_64/asm/apps/progs.c', ++ 'openssl/apps/rand.c', ++ 'openssl/apps/rehash.c', ++ 'openssl/apps/req.c', ++ 'openssl/apps/rsa.c', ++ 'openssl/apps/rsautl.c', ++ 'openssl/apps/s_client.c', ++ 'openssl/apps/s_server.c', ++ 'openssl/apps/s_time.c', ++ 'openssl/apps/sess_id.c', ++ 'openssl/apps/smime.c', ++ 'openssl/apps/speed.c', ++ 'openssl/apps/spkac.c', ++ 'openssl/apps/srp.c', ++ 'openssl/apps/storeutl.c', ++ 'openssl/apps/ts.c', ++ 'openssl/apps/verify.c', ++ 'openssl/apps/version.c', ++ 'openssl/apps/x509.c', ++ 'openssl/apps/lib/app_libctx.c', ++ 'openssl/apps/lib/app_params.c', ++ 'openssl/apps/lib/app_provider.c', ++ 'openssl/apps/lib/app_rand.c', ++ 'openssl/apps/lib/app_x509.c', ++ 'openssl/apps/lib/apps.c', ++ 'openssl/apps/lib/apps_ui.c', ++ 'openssl/apps/lib/columns.c', ++ 'openssl/apps/lib/engine.c', ++ 'openssl/apps/lib/engine_loader.c', ++ 'openssl/apps/lib/fmt.c', ++ 'openssl/apps/lib/http_server.c', ++ 'openssl/apps/lib/names.c', ++ 'openssl/apps/lib/opt.c', ++ 'openssl/apps/lib/s_cb.c', ++ 'openssl/apps/lib/s_socket.c', ++ 'openssl/apps/lib/tlssrp_depr.c', ++ ], ++ }, ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'include_dirs': [ ++ './include', ++ ], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_cli_srcs_linux-sw_64)'], ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/openssl-fips.gypi b/deps/openssl/config/archs/linux-sw_64/asm/openssl-fips.gypi +new file mode 100644 +index 00000000..37eb17c1 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/openssl-fips.gypi +@@ -0,0 +1,332 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rsa/rsa_acvp_test_params.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_fips.c', ++ 'openssl/providers/fips/fipsprov.c', ++ 'openssl/providers/fips/self_test.c', ++ 'openssl/providers/fips/self_test_kats.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/providers/fips/fips_entry.c', ++ ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/asm/crypto/aes/aes-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm/crypto/poly1305/poly1305-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha1-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha256-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha512-sw_64.S', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/asm/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm/providers/legacy.ld', ++ './config/archs/linux-sw_64/asm/providers/fips.ld', ++ ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'FIPS_MODULE', ++ 'OPENSSL_BN_ASM_MONT', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'FIPS_MODULE', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux-sw_64/asm/providers/fips.ld' ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags': ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'ldflags': ['-Wl,--version-script=<@(linker_script)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/openssl.gypi b/deps/openssl/config/archs/linux-sw_64/asm/openssl.gypi +new file mode 100644 +index 00000000..9255b2bb +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/openssl.gypi +@@ -0,0 +1,1014 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/ssl/bio_ssl.c', ++ 'openssl/ssl/d1_lib.c', ++ 'openssl/ssl/d1_msg.c', ++ 'openssl/ssl/d1_srtp.c', ++ 'openssl/ssl/methods.c', ++ 'openssl/ssl/pqueue.c', ++ 'openssl/ssl/s3_enc.c', ++ 'openssl/ssl/s3_lib.c', ++ 'openssl/ssl/s3_msg.c', ++ 'openssl/ssl/ssl_asn1.c', ++ 'openssl/ssl/ssl_cert.c', ++ 'openssl/ssl/ssl_ciph.c', ++ 'openssl/ssl/ssl_conf.c', ++ 'openssl/ssl/ssl_err.c', ++ 'openssl/ssl/ssl_err_legacy.c', ++ 'openssl/ssl/ssl_init.c', ++ 'openssl/ssl/ssl_lib.c', ++ 'openssl/ssl/ssl_mcnf.c', ++ 'openssl/ssl/ssl_quic.c', ++ 'openssl/ssl/ssl_rsa.c', ++ 'openssl/ssl/ssl_rsa_legacy.c', ++ 'openssl/ssl/ssl_sess.c', ++ 'openssl/ssl/ssl_stat.c', ++ 'openssl/ssl/ssl_txt.c', ++ 'openssl/ssl/ssl_utst.c', ++ 'openssl/ssl/t1_enc.c', ++ 'openssl/ssl/t1_lib.c', ++ 'openssl/ssl/t1_trce.c', ++ 'openssl/ssl/tls13_enc.c', ++ 'openssl/ssl/tls_depr.c', ++ 'openssl/ssl/tls_srp.c', ++ 'openssl/ssl/record/dtls1_bitmap.c', ++ 'openssl/ssl/record/rec_layer_d1.c', ++ 'openssl/ssl/record/rec_layer_s3.c', ++ 'openssl/ssl/record/ssl3_buffer.c', ++ 'openssl/ssl/record/ssl3_record.c', ++ 'openssl/ssl/record/ssl3_record_tls13.c', ++ 'openssl/ssl/statem/extensions.c', ++ 'openssl/ssl/statem/extensions_clnt.c', ++ 'openssl/ssl/statem/extensions_cust.c', ++ 'openssl/ssl/statem/extensions_srvr.c', ++ 'openssl/ssl/statem/statem.c', ++ 'openssl/ssl/statem/statem_clnt.c', ++ 'openssl/ssl/statem/statem_dtls.c', ++ 'openssl/ssl/statem/statem_lib.c', ++ 'openssl/ssl/statem/statem_quic.c', ++ 'openssl/ssl/statem/statem_srvr.c', ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_cfb.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_ige.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/aes/aes_ofb.c', ++ 'openssl/crypto/aes/aes_wrap.c', ++ 'openssl/crypto/aria/aria.c', ++ 'openssl/crypto/asn1/a_bitstr.c', ++ 'openssl/crypto/asn1/a_d2i_fp.c', ++ 'openssl/crypto/asn1/a_digest.c', ++ 'openssl/crypto/asn1/a_dup.c', ++ 'openssl/crypto/asn1/a_gentm.c', ++ 'openssl/crypto/asn1/a_i2d_fp.c', ++ 'openssl/crypto/asn1/a_int.c', ++ 'openssl/crypto/asn1/a_mbstr.c', ++ 'openssl/crypto/asn1/a_object.c', ++ 'openssl/crypto/asn1/a_octet.c', ++ 'openssl/crypto/asn1/a_print.c', ++ 'openssl/crypto/asn1/a_sign.c', ++ 'openssl/crypto/asn1/a_strex.c', ++ 'openssl/crypto/asn1/a_strnid.c', ++ 'openssl/crypto/asn1/a_time.c', ++ 'openssl/crypto/asn1/a_type.c', ++ 'openssl/crypto/asn1/a_utctm.c', ++ 'openssl/crypto/asn1/a_utf8.c', ++ 'openssl/crypto/asn1/a_verify.c', ++ 'openssl/crypto/asn1/ameth_lib.c', ++ 'openssl/crypto/asn1/asn1_err.c', ++ 'openssl/crypto/asn1/asn1_gen.c', ++ 'openssl/crypto/asn1/asn1_item_list.c', ++ 'openssl/crypto/asn1/asn1_lib.c', ++ 'openssl/crypto/asn1/asn1_parse.c', ++ 'openssl/crypto/asn1/asn_mime.c', ++ 'openssl/crypto/asn1/asn_moid.c', ++ 'openssl/crypto/asn1/asn_mstbl.c', ++ 'openssl/crypto/asn1/asn_pack.c', ++ 'openssl/crypto/asn1/bio_asn1.c', ++ 'openssl/crypto/asn1/bio_ndef.c', ++ 'openssl/crypto/asn1/d2i_param.c', ++ 'openssl/crypto/asn1/d2i_pr.c', ++ 'openssl/crypto/asn1/d2i_pu.c', ++ 'openssl/crypto/asn1/evp_asn1.c', ++ 'openssl/crypto/asn1/f_int.c', ++ 'openssl/crypto/asn1/f_string.c', ++ 'openssl/crypto/asn1/i2d_evp.c', ++ 'openssl/crypto/asn1/n_pkey.c', ++ 'openssl/crypto/asn1/nsseq.c', ++ 'openssl/crypto/asn1/p5_pbe.c', ++ 'openssl/crypto/asn1/p5_pbev2.c', ++ 'openssl/crypto/asn1/p5_scrypt.c', ++ 'openssl/crypto/asn1/p8_pkey.c', ++ 'openssl/crypto/asn1/t_bitst.c', ++ 'openssl/crypto/asn1/t_pkey.c', ++ 'openssl/crypto/asn1/t_spki.c', ++ 'openssl/crypto/asn1/tasn_dec.c', ++ 'openssl/crypto/asn1/tasn_enc.c', ++ 'openssl/crypto/asn1/tasn_fre.c', ++ 'openssl/crypto/asn1/tasn_new.c', ++ 'openssl/crypto/asn1/tasn_prn.c', ++ 'openssl/crypto/asn1/tasn_scn.c', ++ 'openssl/crypto/asn1/tasn_typ.c', ++ 'openssl/crypto/asn1/tasn_utl.c', ++ 'openssl/crypto/asn1/x_algor.c', ++ 'openssl/crypto/asn1/x_bignum.c', ++ 'openssl/crypto/asn1/x_info.c', ++ 'openssl/crypto/asn1/x_int64.c', ++ 'openssl/crypto/asn1/x_long.c', ++ 'openssl/crypto/asn1/x_pkey.c', ++ 'openssl/crypto/asn1/x_sig.c', ++ 'openssl/crypto/asn1/x_spki.c', ++ 'openssl/crypto/asn1/x_val.c', ++ 'openssl/crypto/async/arch/async_null.c', ++ 'openssl/crypto/async/arch/async_posix.c', ++ 'openssl/crypto/async/arch/async_win.c', ++ 'openssl/crypto/async/async.c', ++ 'openssl/crypto/async/async_err.c', ++ 'openssl/crypto/async/async_wait.c', ++ 'openssl/crypto/bf/bf_cfb64.c', ++ 'openssl/crypto/bf/bf_ecb.c', ++ 'openssl/crypto/bf/bf_enc.c', ++ 'openssl/crypto/bf/bf_ofb64.c', ++ 'openssl/crypto/bf/bf_skey.c', ++ 'openssl/crypto/bio/bf_buff.c', ++ 'openssl/crypto/bio/bf_lbuf.c', ++ 'openssl/crypto/bio/bf_nbio.c', ++ 'openssl/crypto/bio/bf_null.c', ++ 'openssl/crypto/bio/bf_prefix.c', ++ 'openssl/crypto/bio/bf_readbuff.c', ++ 'openssl/crypto/bio/bio_addr.c', ++ 'openssl/crypto/bio/bio_cb.c', ++ 'openssl/crypto/bio/bio_dump.c', ++ 'openssl/crypto/bio/bio_err.c', ++ 'openssl/crypto/bio/bio_lib.c', ++ 'openssl/crypto/bio/bio_meth.c', ++ 'openssl/crypto/bio/bio_print.c', ++ 'openssl/crypto/bio/bio_sock.c', ++ 'openssl/crypto/bio/bio_sock2.c', ++ 'openssl/crypto/bio/bss_acpt.c', ++ 'openssl/crypto/bio/bss_bio.c', ++ 'openssl/crypto/bio/bss_conn.c', ++ 'openssl/crypto/bio/bss_core.c', ++ 'openssl/crypto/bio/bss_dgram.c', ++ 'openssl/crypto/bio/bss_fd.c', ++ 'openssl/crypto/bio/bss_file.c', ++ 'openssl/crypto/bio/bss_log.c', ++ 'openssl/crypto/bio/bss_mem.c', ++ 'openssl/crypto/bio/bss_null.c', ++ 'openssl/crypto/bio/bss_sock.c', ++ 'openssl/crypto/bio/ossl_core_bio.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_depr.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_err.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_print.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_srp.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/bn/bn_x931p.c', ++ 'openssl/crypto/buffer/buf_err.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/camellia/camellia.c', ++ 'openssl/crypto/camellia/cmll_cbc.c', ++ 'openssl/crypto/camellia/cmll_cfb.c', ++ 'openssl/crypto/camellia/cmll_ctr.c', ++ 'openssl/crypto/camellia/cmll_ecb.c', ++ 'openssl/crypto/camellia/cmll_misc.c', ++ 'openssl/crypto/camellia/cmll_ofb.c', ++ 'openssl/crypto/cast/c_cfb64.c', ++ 'openssl/crypto/cast/c_ecb.c', ++ 'openssl/crypto/cast/c_enc.c', ++ 'openssl/crypto/cast/c_ofb64.c', ++ 'openssl/crypto/cast/c_skey.c', ++ 'openssl/crypto/chacha/chacha_enc.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/cmp/cmp_asn.c', ++ 'openssl/crypto/cmp/cmp_client.c', ++ 'openssl/crypto/cmp/cmp_ctx.c', ++ 'openssl/crypto/cmp/cmp_err.c', ++ 'openssl/crypto/cmp/cmp_hdr.c', ++ 'openssl/crypto/cmp/cmp_http.c', ++ 'openssl/crypto/cmp/cmp_msg.c', ++ 'openssl/crypto/cmp/cmp_protect.c', ++ 'openssl/crypto/cmp/cmp_server.c', ++ 'openssl/crypto/cmp/cmp_status.c', ++ 'openssl/crypto/cmp/cmp_util.c', ++ 'openssl/crypto/cmp/cmp_vfy.c', ++ 'openssl/crypto/cms/cms_asn1.c', ++ 'openssl/crypto/cms/cms_att.c', ++ 'openssl/crypto/cms/cms_cd.c', ++ 'openssl/crypto/cms/cms_dd.c', ++ 'openssl/crypto/cms/cms_dh.c', ++ 'openssl/crypto/cms/cms_ec.c', ++ 'openssl/crypto/cms/cms_enc.c', ++ 'openssl/crypto/cms/cms_env.c', ++ 'openssl/crypto/cms/cms_err.c', ++ 'openssl/crypto/cms/cms_ess.c', ++ 'openssl/crypto/cms/cms_io.c', ++ 'openssl/crypto/cms/cms_kari.c', ++ 'openssl/crypto/cms/cms_lib.c', ++ 'openssl/crypto/cms/cms_pwri.c', ++ 'openssl/crypto/cms/cms_rsa.c', ++ 'openssl/crypto/cms/cms_sd.c', ++ 'openssl/crypto/cms/cms_smime.c', ++ 'openssl/crypto/conf/conf_api.c', ++ 'openssl/crypto/conf/conf_def.c', ++ 'openssl/crypto/conf/conf_err.c', ++ 'openssl/crypto/conf/conf_lib.c', ++ 'openssl/crypto/conf/conf_mall.c', ++ 'openssl/crypto/conf/conf_mod.c', ++ 'openssl/crypto/conf/conf_sap.c', ++ 'openssl/crypto/conf/conf_ssl.c', ++ 'openssl/crypto/crmf/crmf_asn.c', ++ 'openssl/crypto/crmf/crmf_err.c', ++ 'openssl/crypto/crmf/crmf_lib.c', ++ 'openssl/crypto/crmf/crmf_pbm.c', ++ 'openssl/crypto/ct/ct_b64.c', ++ 'openssl/crypto/ct/ct_err.c', ++ 'openssl/crypto/ct/ct_log.c', ++ 'openssl/crypto/ct/ct_oct.c', ++ 'openssl/crypto/ct/ct_policy.c', ++ 'openssl/crypto/ct/ct_prn.c', ++ 'openssl/crypto/ct/ct_sct.c', ++ 'openssl/crypto/ct/ct_sct_ctx.c', ++ 'openssl/crypto/ct/ct_vfy.c', ++ 'openssl/crypto/ct/ct_x509v3.c', ++ 'openssl/crypto/des/cbc_cksm.c', ++ 'openssl/crypto/des/cbc_enc.c', ++ 'openssl/crypto/des/cfb64ede.c', ++ 'openssl/crypto/des/cfb64enc.c', ++ 'openssl/crypto/des/cfb_enc.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/ecb_enc.c', ++ 'openssl/crypto/des/fcrypt.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/ofb64ede.c', ++ 'openssl/crypto/des/ofb64enc.c', ++ 'openssl/crypto/des/ofb_enc.c', ++ 'openssl/crypto/des/pcbc_enc.c', ++ 'openssl/crypto/des/qud_cksm.c', ++ 'openssl/crypto/des/rand_key.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/des/str2key.c', ++ 'openssl/crypto/des/xcbc_enc.c', ++ 'openssl/crypto/dh/dh_ameth.c', ++ 'openssl/crypto/dh/dh_asn1.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_depr.c', ++ 'openssl/crypto/dh/dh_err.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dh/dh_meth.c', ++ 'openssl/crypto/dh/dh_pmeth.c', ++ 'openssl/crypto/dh/dh_prn.c', ++ 'openssl/crypto/dh/dh_rfc5114.c', ++ 'openssl/crypto/dsa/dsa_ameth.c', ++ 'openssl/crypto/dsa/dsa_asn1.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_depr.c', ++ 'openssl/crypto/dsa/dsa_err.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_meth.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_pmeth.c', ++ 'openssl/crypto/dsa/dsa_prn.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/dso/dso_dl.c', ++ 'openssl/crypto/dso/dso_dlfcn.c', ++ 'openssl/crypto/dso/dso_err.c', ++ 'openssl/crypto/dso/dso_lib.c', ++ 'openssl/crypto/dso/dso_openssl.c', ++ 'openssl/crypto/dso/dso_vms.c', ++ 'openssl/crypto/dso/dso_win32.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_ameth.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_deprecated.c', ++ 'openssl/crypto/ec/ec_err.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ec_pmeth.c', ++ 'openssl/crypto/ec/ec_print.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/eck_prn.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/ec/ecx_meth.c', ++ 'openssl/crypto/encode_decode/decoder_err.c', ++ 'openssl/crypto/encode_decode/decoder_lib.c', ++ 'openssl/crypto/encode_decode/decoder_meth.c', ++ 'openssl/crypto/encode_decode/decoder_pkey.c', ++ 'openssl/crypto/encode_decode/encoder_err.c', ++ 'openssl/crypto/encode_decode/encoder_lib.c', ++ 'openssl/crypto/encode_decode/encoder_meth.c', ++ 'openssl/crypto/encode_decode/encoder_pkey.c', ++ 'openssl/crypto/engine/eng_all.c', ++ 'openssl/crypto/engine/eng_cnf.c', ++ 'openssl/crypto/engine/eng_ctrl.c', ++ 'openssl/crypto/engine/eng_dyn.c', ++ 'openssl/crypto/engine/eng_err.c', ++ 'openssl/crypto/engine/eng_fat.c', ++ 'openssl/crypto/engine/eng_init.c', ++ 'openssl/crypto/engine/eng_lib.c', ++ 'openssl/crypto/engine/eng_list.c', ++ 'openssl/crypto/engine/eng_openssl.c', ++ 'openssl/crypto/engine/eng_pkey.c', ++ 'openssl/crypto/engine/eng_rdrand.c', ++ 'openssl/crypto/engine/eng_table.c', ++ 'openssl/crypto/engine/tb_asnmth.c', ++ 'openssl/crypto/engine/tb_cipher.c', ++ 'openssl/crypto/engine/tb_dh.c', ++ 'openssl/crypto/engine/tb_digest.c', ++ 'openssl/crypto/engine/tb_dsa.c', ++ 'openssl/crypto/engine/tb_eckey.c', ++ 'openssl/crypto/engine/tb_pkmeth.c', ++ 'openssl/crypto/engine/tb_rand.c', ++ 'openssl/crypto/engine/tb_rsa.c', ++ 'openssl/crypto/err/err.c', ++ 'openssl/crypto/err/err_all.c', ++ 'openssl/crypto/err/err_all_legacy.c', ++ 'openssl/crypto/err/err_blocks.c', ++ 'openssl/crypto/err/err_prn.c', ++ 'openssl/crypto/ess/ess_asn1.c', ++ 'openssl/crypto/ess/ess_err.c', ++ 'openssl/crypto/ess/ess_lib.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/bio_b64.c', ++ 'openssl/crypto/evp/bio_enc.c', ++ 'openssl/crypto/evp/bio_md.c', ++ 'openssl/crypto/evp/bio_ok.c', ++ 'openssl/crypto/evp/c_allc.c', ++ 'openssl/crypto/evp/c_alld.c', ++ 'openssl/crypto/evp/cmeth_lib.c', ++ 'openssl/crypto/evp/ctrl_params_translate.c', ++ 'openssl/crypto/evp/dh_ctrl.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/dsa_ctrl.c', ++ 'openssl/crypto/evp/e_aes.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', ++ 'openssl/crypto/evp/e_aria.c', ++ 'openssl/crypto/evp/e_bf.c', ++ 'openssl/crypto/evp/e_camellia.c', ++ 'openssl/crypto/evp/e_cast.c', ++ 'openssl/crypto/evp/e_chacha20_poly1305.c', ++ 'openssl/crypto/evp/e_des.c', ++ 'openssl/crypto/evp/e_des3.c', ++ 'openssl/crypto/evp/e_idea.c', ++ 'openssl/crypto/evp/e_null.c', ++ 'openssl/crypto/evp/e_old.c', ++ 'openssl/crypto/evp/e_rc2.c', ++ 'openssl/crypto/evp/e_rc4.c', ++ 'openssl/crypto/evp/e_rc4_hmac_md5.c', ++ 'openssl/crypto/evp/e_rc5.c', ++ 'openssl/crypto/evp/e_seed.c', ++ 'openssl/crypto/evp/e_sm4.c', ++ 'openssl/crypto/evp/e_xcbc_d.c', ++ 'openssl/crypto/evp/ec_ctrl.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/encode.c', ++ 'openssl/crypto/evp/evp_cnf.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_err.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_key.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_pbe.c', ++ 'openssl/crypto/evp/evp_pkey.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/legacy_blake2.c', ++ 'openssl/crypto/evp/legacy_md4.c', ++ 'openssl/crypto/evp/legacy_md5.c', ++ 'openssl/crypto/evp/legacy_md5_sha1.c', ++ 'openssl/crypto/evp/legacy_mdc2.c', ++ 'openssl/crypto/evp/legacy_ripemd.c', ++ 'openssl/crypto/evp/legacy_sha.c', ++ 'openssl/crypto/evp/legacy_wp.c', ++ 'openssl/crypto/evp/m_null.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/names.c', ++ 'openssl/crypto/evp/p5_crpt.c', ++ 'openssl/crypto/evp/p5_crpt2.c', ++ 'openssl/crypto/evp/p_dec.c', ++ 'openssl/crypto/evp/p_enc.c', ++ 'openssl/crypto/evp/p_legacy.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/p_open.c', ++ 'openssl/crypto/evp/p_seal.c', ++ 'openssl/crypto/evp/p_sign.c', ++ 'openssl/crypto/evp/p_verify.c', ++ 'openssl/crypto/evp/pbe_scrypt.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/http/http_client.c', ++ 'openssl/crypto/http/http_err.c', ++ 'openssl/crypto/http/http_lib.c', ++ 'openssl/crypto/idea/i_cbc.c', ++ 'openssl/crypto/idea/i_cfb64.c', ++ 'openssl/crypto/idea/i_ecb.c', ++ 'openssl/crypto/idea/i_ofb64.c', ++ 'openssl/crypto/idea/i_skey.c', ++ 'openssl/crypto/kdf/kdf_err.c', ++ 'openssl/crypto/lhash/lh_stats.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpt_err.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/cversion.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ebcdic.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/getenv.c', ++ 'openssl/crypto/info.c', ++ 'openssl/crypto/init.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/mem_sec.c', ++ 'openssl/crypto/o_dir.c', ++ 'openssl/crypto/o_fopen.c', ++ 'openssl/crypto/o_init.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/o_time.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/passphrase.c', ++ 'openssl/crypto/provider.c', ++ 'openssl/crypto/provider_child.c', ++ 'openssl/crypto/provider_conf.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/punycode.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/trace.c', ++ 'openssl/crypto/uid.c', ++ 'openssl/crypto/md4/md4_dgst.c', ++ 'openssl/crypto/md4/md4_one.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/crypto/mdc2/mdc2_one.c', ++ 'openssl/crypto/mdc2/mdc2dgst.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/cts128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ocb128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/siv128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/objects/o_names.c', ++ 'openssl/crypto/objects/obj_dat.c', ++ 'openssl/crypto/objects/obj_err.c', ++ 'openssl/crypto/objects/obj_lib.c', ++ 'openssl/crypto/objects/obj_xref.c', ++ 'openssl/crypto/ocsp/ocsp_asn.c', ++ 'openssl/crypto/ocsp/ocsp_cl.c', ++ 'openssl/crypto/ocsp/ocsp_err.c', ++ 'openssl/crypto/ocsp/ocsp_ext.c', ++ 'openssl/crypto/ocsp/ocsp_http.c', ++ 'openssl/crypto/ocsp/ocsp_lib.c', ++ 'openssl/crypto/ocsp/ocsp_prn.c', ++ 'openssl/crypto/ocsp/ocsp_srv.c', ++ 'openssl/crypto/ocsp/ocsp_vfy.c', ++ 'openssl/crypto/ocsp/v3_ocsp.c', ++ 'openssl/crypto/pem/pem_all.c', ++ 'openssl/crypto/pem/pem_err.c', ++ 'openssl/crypto/pem/pem_info.c', ++ 'openssl/crypto/pem/pem_lib.c', ++ 'openssl/crypto/pem/pem_oth.c', ++ 'openssl/crypto/pem/pem_pk8.c', ++ 'openssl/crypto/pem/pem_pkey.c', ++ 'openssl/crypto/pem/pem_sign.c', ++ 'openssl/crypto/pem/pem_x509.c', ++ 'openssl/crypto/pem/pem_xaux.c', ++ 'openssl/crypto/pem/pvkfmt.c', ++ 'openssl/crypto/pkcs12/p12_add.c', ++ 'openssl/crypto/pkcs12/p12_asn.c', ++ 'openssl/crypto/pkcs12/p12_attr.c', ++ 'openssl/crypto/pkcs12/p12_crpt.c', ++ 'openssl/crypto/pkcs12/p12_crt.c', ++ 'openssl/crypto/pkcs12/p12_decr.c', ++ 'openssl/crypto/pkcs12/p12_init.c', ++ 'openssl/crypto/pkcs12/p12_key.c', ++ 'openssl/crypto/pkcs12/p12_kiss.c', ++ 'openssl/crypto/pkcs12/p12_mutl.c', ++ 'openssl/crypto/pkcs12/p12_npas.c', ++ 'openssl/crypto/pkcs12/p12_p8d.c', ++ 'openssl/crypto/pkcs12/p12_p8e.c', ++ 'openssl/crypto/pkcs12/p12_sbag.c', ++ 'openssl/crypto/pkcs12/p12_utl.c', ++ 'openssl/crypto/pkcs12/pk12err.c', ++ 'openssl/crypto/pkcs7/bio_pk7.c', ++ 'openssl/crypto/pkcs7/pk7_asn1.c', ++ 'openssl/crypto/pkcs7/pk7_attr.c', ++ 'openssl/crypto/pkcs7/pk7_doit.c', ++ 'openssl/crypto/pkcs7/pk7_lib.c', ++ 'openssl/crypto/pkcs7/pk7_mime.c', ++ 'openssl/crypto/pkcs7/pk7_smime.c', ++ 'openssl/crypto/pkcs7/pkcs7err.c', ++ 'openssl/crypto/poly1305/poly1305.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_err.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/prov_seed.c', ++ 'openssl/crypto/rand/rand_deprecated.c', ++ 'openssl/crypto/rand/rand_err.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rand/rand_meth.c', ++ 'openssl/crypto/rand/rand_pool.c', ++ 'openssl/crypto/rand/randfile.c', ++ 'openssl/crypto/rc2/rc2_cbc.c', ++ 'openssl/crypto/rc2/rc2_ecb.c', ++ 'openssl/crypto/rc2/rc2_skey.c', ++ 'openssl/crypto/rc2/rc2cfb64.c', ++ 'openssl/crypto/rc2/rc2ofb64.c', ++ 'openssl/crypto/rc4/rc4_enc.c', ++ 'openssl/crypto/rc4/rc4_skey.c', ++ 'openssl/crypto/ripemd/rmd_dgst.c', ++ 'openssl/crypto/ripemd/rmd_one.c', ++ 'openssl/crypto/rsa/rsa_ameth.c', ++ 'openssl/crypto/rsa/rsa_asn1.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_depr.c', ++ 'openssl/crypto/rsa/rsa_err.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_meth.c', ++ 'openssl/crypto/rsa/rsa_mp.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pmeth.c', ++ 'openssl/crypto/rsa/rsa_prn.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_saos.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/rsa/rsa_x931g.c', ++ 'openssl/crypto/seed/seed.c', ++ 'openssl/crypto/seed/seed_cbc.c', ++ 'openssl/crypto/seed/seed_cfb.c', ++ 'openssl/crypto/seed/seed_ecb.c', ++ 'openssl/crypto/seed/seed_ofb.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1_one.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/siphash/siphash.c', ++ 'openssl/crypto/sm2/sm2_crypt.c', ++ 'openssl/crypto/sm2/sm2_err.c', ++ 'openssl/crypto/sm2/sm2_key.c', ++ 'openssl/crypto/sm2/sm2_sign.c', ++ 'openssl/crypto/sm3/legacy_sm3.c', ++ 'openssl/crypto/sm3/sm3.c', ++ 'openssl/crypto/sm4/sm4.c', ++ 'openssl/crypto/srp/srp_lib.c', ++ 'openssl/crypto/srp/srp_vfy.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/crypto/store/store_err.c', ++ 'openssl/crypto/store/store_init.c', ++ 'openssl/crypto/store/store_lib.c', ++ 'openssl/crypto/store/store_meth.c', ++ 'openssl/crypto/store/store_register.c', ++ 'openssl/crypto/store/store_result.c', ++ 'openssl/crypto/store/store_strings.c', ++ 'openssl/crypto/ts/ts_asn1.c', ++ 'openssl/crypto/ts/ts_conf.c', ++ 'openssl/crypto/ts/ts_err.c', ++ 'openssl/crypto/ts/ts_lib.c', ++ 'openssl/crypto/ts/ts_req_print.c', ++ 'openssl/crypto/ts/ts_req_utils.c', ++ 'openssl/crypto/ts/ts_rsp_print.c', ++ 'openssl/crypto/ts/ts_rsp_sign.c', ++ 'openssl/crypto/ts/ts_rsp_utils.c', ++ 'openssl/crypto/ts/ts_rsp_verify.c', ++ 'openssl/crypto/ts/ts_verify_ctx.c', ++ 'openssl/crypto/txt_db/txt_db.c', ++ 'openssl/crypto/ui/ui_err.c', ++ 'openssl/crypto/ui/ui_lib.c', ++ 'openssl/crypto/ui/ui_null.c', ++ 'openssl/crypto/ui/ui_openssl.c', ++ 'openssl/crypto/ui/ui_util.c', ++ 'openssl/crypto/whrlpool/wp_block.c', ++ 'openssl/crypto/whrlpool/wp_dgst.c', ++ 'openssl/crypto/x509/by_dir.c', ++ 'openssl/crypto/x509/by_file.c', ++ 'openssl/crypto/x509/by_store.c', ++ 'openssl/crypto/x509/pcy_cache.c', ++ 'openssl/crypto/x509/pcy_data.c', ++ 'openssl/crypto/x509/pcy_lib.c', ++ 'openssl/crypto/x509/pcy_map.c', ++ 'openssl/crypto/x509/pcy_node.c', ++ 'openssl/crypto/x509/pcy_tree.c', ++ 'openssl/crypto/x509/t_crl.c', ++ 'openssl/crypto/x509/t_req.c', ++ 'openssl/crypto/x509/t_x509.c', ++ 'openssl/crypto/x509/v3_addr.c', ++ 'openssl/crypto/x509/v3_admis.c', ++ 'openssl/crypto/x509/v3_akeya.c', ++ 'openssl/crypto/x509/v3_akid.c', ++ 'openssl/crypto/x509/v3_asid.c', ++ 'openssl/crypto/x509/v3_bcons.c', ++ 'openssl/crypto/x509/v3_bitst.c', ++ 'openssl/crypto/x509/v3_conf.c', ++ 'openssl/crypto/x509/v3_cpols.c', ++ 'openssl/crypto/x509/v3_crld.c', ++ 'openssl/crypto/x509/v3_enum.c', ++ 'openssl/crypto/x509/v3_extku.c', ++ 'openssl/crypto/x509/v3_genn.c', ++ 'openssl/crypto/x509/v3_ia5.c', ++ 'openssl/crypto/x509/v3_info.c', ++ 'openssl/crypto/x509/v3_int.c', ++ 'openssl/crypto/x509/v3_ist.c', ++ 'openssl/crypto/x509/v3_lib.c', ++ 'openssl/crypto/x509/v3_ncons.c', ++ 'openssl/crypto/x509/v3_pci.c', ++ 'openssl/crypto/x509/v3_pcia.c', ++ 'openssl/crypto/x509/v3_pcons.c', ++ 'openssl/crypto/x509/v3_pku.c', ++ 'openssl/crypto/x509/v3_pmaps.c', ++ 'openssl/crypto/x509/v3_prn.c', ++ 'openssl/crypto/x509/v3_purp.c', ++ 'openssl/crypto/x509/v3_san.c', ++ 'openssl/crypto/x509/v3_skid.c', ++ 'openssl/crypto/x509/v3_sxnet.c', ++ 'openssl/crypto/x509/v3_tlsf.c', ++ 'openssl/crypto/x509/v3_utf8.c', ++ 'openssl/crypto/x509/v3_utl.c', ++ 'openssl/crypto/x509/v3err.c', ++ 'openssl/crypto/x509/x509_att.c', ++ 'openssl/crypto/x509/x509_cmp.c', ++ 'openssl/crypto/x509/x509_d2.c', ++ 'openssl/crypto/x509/x509_def.c', ++ 'openssl/crypto/x509/x509_err.c', ++ 'openssl/crypto/x509/x509_ext.c', ++ 'openssl/crypto/x509/x509_lu.c', ++ 'openssl/crypto/x509/x509_meth.c', ++ 'openssl/crypto/x509/x509_obj.c', ++ 'openssl/crypto/x509/x509_r2x.c', ++ 'openssl/crypto/x509/x509_req.c', ++ 'openssl/crypto/x509/x509_set.c', ++ 'openssl/crypto/x509/x509_trust.c', ++ 'openssl/crypto/x509/x509_txt.c', ++ 'openssl/crypto/x509/x509_v3.c', ++ 'openssl/crypto/x509/x509_vfy.c', ++ 'openssl/crypto/x509/x509_vpm.c', ++ 'openssl/crypto/x509/x509cset.c', ++ 'openssl/crypto/x509/x509name.c', ++ 'openssl/crypto/x509/x509rset.c', ++ 'openssl/crypto/x509/x509spki.c', ++ 'openssl/crypto/x509/x509type.c', ++ 'openssl/crypto/x509/x_all.c', ++ 'openssl/crypto/x509/x_attrib.c', ++ 'openssl/crypto/x509/x_crl.c', ++ 'openssl/crypto/x509/x_exten.c', ++ 'openssl/crypto/x509/x_name.c', ++ 'openssl/crypto/x509/x_pubkey.c', ++ 'openssl/crypto/x509/x_req.c', ++ 'openssl/crypto/x509/x_x509.c', ++ 'openssl/crypto/x509/x_x509a.c', ++ 'openssl/engines/e_capi.c', ++ 'openssl/engines/e_padlock.c', ++ 'openssl/providers/baseprov.c', ++ 'openssl/providers/defltprov.c', ++ 'openssl/providers/nullprov.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/der/der_sm2_key.c', ++ 'openssl/providers/common/der/der_sm2_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_default.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/asymciphers/sm2_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_null.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap_hw.c', ++ 'openssl/providers/implementations/digests/blake2_prov.c', ++ 'openssl/providers/implementations/digests/blake2b_prov.c', ++ 'openssl/providers/implementations/digests/blake2s_prov.c', ++ 'openssl/providers/implementations/digests/md5_prov.c', ++ 'openssl/providers/implementations/digests/md5_sha1_prov.c', ++ 'openssl/providers/implementations/digests/null_prov.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/digests/sm3_prov.c', ++ 'openssl/providers/implementations/encode_decode/decode_der2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_epki2pki.c', ++ 'openssl/providers/implementations/encode_decode/decode_msblob2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_pem2der.c', ++ 'openssl/providers/implementations/encode_decode/decode_pvk2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_spki2typespki.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2any.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2blob.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2text.c', ++ 'openssl/providers/implementations/encode_decode/endecoder_common.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/krb5kdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/pkcs12kdf.c', ++ 'openssl/providers/implementations/kdfs/scrypt.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/blake2b_mac.c', ++ 'openssl/providers/implementations/macs/blake2s_mac.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/macs/poly1305_prov.c', ++ 'openssl/providers/implementations/macs/siphash_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/seed_src.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', ++ 'openssl/providers/implementations/rands/seeding/rand_tsc.c', ++ 'openssl/providers/implementations/rands/seeding/rand_unix.c', ++ 'openssl/providers/implementations/rands/seeding/rand_win.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/providers/implementations/signature/sm2_sig.c', ++ 'openssl/providers/implementations/storemgmt/file_store.c', ++ 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_des.c', ++ 'openssl/providers/implementations/ciphers/cipher_des_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/digests/md4_prov.c', ++ 'openssl/providers/implementations/digests/mdc2_prov.c', ++ 'openssl/providers/implementations/digests/ripemd_prov.c', ++ 'openssl/providers/implementations/digests/wp_prov.c', ++ 'openssl/providers/implementations/kdfs/pbkdf1.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/legacyprov.c', ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/asm/crypto/aes/aes-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm/crypto/poly1305/poly1305-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha1-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha256-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/sha/sha512-sw_64.S', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/asm/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/asm/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm/providers/legacy.ld', ++ './config/archs/linux-sw_64/asm/providers/fips.ld', ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'OPENSSL_BN_ASM_MONT', ++ 'POLY1305_ASM', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_digests_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_digests_gen.c +new file mode 100644 +index 00000000..e4e14e82 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_digests_gen.c +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_digests_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_digests.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = { ++ DER_OID_V_sigAlgs ++}; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = { ++ DER_OID_V_id_sha1 ++}; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = { ++ DER_OID_V_id_md2 ++}; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = { ++ DER_OID_V_id_md5 ++}; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = { ++ DER_OID_V_id_sha256 ++}; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = { ++ DER_OID_V_id_sha384 ++}; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = { ++ DER_OID_V_id_sha512 ++}; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = { ++ DER_OID_V_id_sha224 ++}; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = { ++ DER_OID_V_id_sha512_224 ++}; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = { ++ DER_OID_V_id_sha512_256 ++}; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = { ++ DER_OID_V_id_sha3_224 ++}; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = { ++ DER_OID_V_id_sha3_256 ++}; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = { ++ DER_OID_V_id_sha3_384 ++}; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = { ++ DER_OID_V_id_sha3_512 ++}; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = { ++ DER_OID_V_id_shake128 ++}; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = { ++ DER_OID_V_id_shake256 ++}; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = { ++ DER_OID_V_id_shake128_len ++}; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = { ++ DER_OID_V_id_shake256_len ++}; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = { ++ DER_OID_V_id_KMACWithSHAKE128 ++}; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = { ++ DER_OID_V_id_KMACWithSHAKE256 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_dsa_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_dsa_gen.c +new file mode 100644 +index 00000000..e5cfe91e +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_dsa_gen.c +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_dsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++ */ ++ ++/* ++ * DSA low level APIs are deprecated for public use, but still ok for ++ * internal use. ++ */ ++#include "internal/deprecated.h" ++ ++#include "prov/der_dsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = { ++ DER_OID_V_id_dsa ++}; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = { ++ DER_OID_V_id_dsa_with_sha1 ++}; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = { ++ DER_OID_V_id_dsa_with_sha224 ++}; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = { ++ DER_OID_V_id_dsa_with_sha256 ++}; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = { ++ DER_OID_V_id_dsa_with_sha384 ++}; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = { ++ DER_OID_V_id_dsa_with_sha512 ++}; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = { ++ DER_OID_V_id_dsa_with_sha3_224 ++}; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = { ++ DER_OID_V_id_dsa_with_sha3_256 ++}; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = { ++ DER_OID_V_id_dsa_with_sha3_384 ++}; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = { ++ DER_OID_V_id_dsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ec_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ec_gen.c +new file mode 100644 +index 00000000..e1ed54ba +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ec_gen.c +@@ -0,0 +1,279 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ec_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ec.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = { ++ DER_OID_V_ecdsa_with_SHA1 ++}; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = { ++ DER_OID_V_id_ecPublicKey ++}; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = { ++ DER_OID_V_c2pnb163v1 ++}; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = { ++ DER_OID_V_c2pnb163v2 ++}; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = { ++ DER_OID_V_c2pnb163v3 ++}; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = { ++ DER_OID_V_c2pnb176w1 ++}; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = { ++ DER_OID_V_c2tnb191v1 ++}; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = { ++ DER_OID_V_c2tnb191v2 ++}; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = { ++ DER_OID_V_c2tnb191v3 ++}; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = { ++ DER_OID_V_c2onb191v4 ++}; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = { ++ DER_OID_V_c2onb191v5 ++}; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = { ++ DER_OID_V_c2pnb208w1 ++}; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = { ++ DER_OID_V_c2tnb239v1 ++}; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = { ++ DER_OID_V_c2tnb239v2 ++}; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = { ++ DER_OID_V_c2tnb239v3 ++}; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = { ++ DER_OID_V_c2onb239v4 ++}; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = { ++ DER_OID_V_c2onb239v5 ++}; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = { ++ DER_OID_V_c2pnb272w1 ++}; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = { ++ DER_OID_V_c2pnb304w1 ++}; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = { ++ DER_OID_V_c2tnb359v1 ++}; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = { ++ DER_OID_V_c2pnb368w1 ++}; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = { ++ DER_OID_V_c2tnb431r1 ++}; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = { ++ DER_OID_V_prime192v1 ++}; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = { ++ DER_OID_V_prime192v2 ++}; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = { ++ DER_OID_V_prime192v3 ++}; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = { ++ DER_OID_V_prime239v1 ++}; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = { ++ DER_OID_V_prime239v2 ++}; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = { ++ DER_OID_V_prime239v3 ++}; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = { ++ DER_OID_V_prime256v1 ++}; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = { ++ DER_OID_V_ecdsa_with_SHA224 ++}; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = { ++ DER_OID_V_ecdsa_with_SHA256 ++}; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = { ++ DER_OID_V_ecdsa_with_SHA384 ++}; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = { ++ DER_OID_V_ecdsa_with_SHA512 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = { ++ DER_OID_V_id_ecdsa_with_sha3_224 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = { ++ DER_OID_V_id_ecdsa_with_sha3_256 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = { ++ DER_OID_V_id_ecdsa_with_sha3_384 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = { ++ DER_OID_V_id_ecdsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ecx_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ecx_gen.c +new file mode 100644 +index 00000000..ba7bf14b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_ecx_gen.c +@@ -0,0 +1,44 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ecx_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = { ++ DER_OID_V_id_X25519 ++}; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = { ++ DER_OID_V_id_X448 ++}; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = { ++ DER_OID_V_id_Ed25519 ++}; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = { ++ DER_OID_V_id_Ed448 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_rsa_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_rsa_gen.c +new file mode 100644 +index 00000000..a3431798 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_rsa_gen.c +@@ -0,0 +1,174 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_rsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_rsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = { ++ DER_OID_V_hashAlgs ++}; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = { ++ DER_OID_V_rsaEncryption ++}; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = { ++ DER_OID_V_id_RSAES_OAEP ++}; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = { ++ DER_OID_V_id_pSpecified ++}; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = { ++ DER_OID_V_id_RSASSA_PSS ++}; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = { ++ DER_OID_V_md2WithRSAEncryption ++}; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = { ++ DER_OID_V_md5WithRSAEncryption ++}; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = { ++ DER_OID_V_sha1WithRSAEncryption ++}; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = { ++ DER_OID_V_sha224WithRSAEncryption ++}; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = { ++ DER_OID_V_sha256WithRSAEncryption ++}; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = { ++ DER_OID_V_sha384WithRSAEncryption ++}; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = { ++ DER_OID_V_sha512WithRSAEncryption ++}; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = { ++ DER_OID_V_sha512_224WithRSAEncryption ++}; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = { ++ DER_OID_V_sha512_256WithRSAEncryption ++}; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = { ++ DER_OID_V_id_mgf1 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 ++}; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = { ++ DER_OID_V_md4WithRSAEncryption ++}; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = { ++ DER_OID_V_ripemd160WithRSAEncryption ++}; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = { ++ DER_OID_V_mdc2WithRSASignature ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_sm2_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_sm2_gen.c +new file mode 100644 +index 00000000..6424ea16 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_sm2_gen.c +@@ -0,0 +1,30 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_sm2_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_sm2.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = { ++ DER_OID_V_sm2_with_SM3 ++}; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = { ++ DER_OID_V_curveSM2 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_wrap_gen.c b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_wrap_gen.c +new file mode 100644 +index 00000000..6cf93972 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/der/der_wrap_gen.c +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_wrap_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_wrap.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = { ++ DER_OID_V_id_alg_CMS3DESwrap ++}; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = { ++ DER_OID_V_id_aes128_wrap ++}; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = { ++ DER_OID_V_id_aes192_wrap ++}; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = { ++ DER_OID_V_id_aes256_wrap ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_digests.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_digests.h +new file mode 100644 +index 00000000..b184807c +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_digests.h +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_digests.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03 ++#define DER_OID_SZ_sigAlgs 10 ++extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs]; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A ++#define DER_OID_SZ_id_sha1 7 ++extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1]; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02 ++#define DER_OID_SZ_id_md2 10 ++extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2]; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 ++#define DER_OID_SZ_id_md5 10 ++extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5]; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 ++#define DER_OID_SZ_id_sha256 11 ++extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256]; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 ++#define DER_OID_SZ_id_sha384 11 ++extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384]; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 ++#define DER_OID_SZ_id_sha512 11 ++extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512]; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 ++#define DER_OID_SZ_id_sha224 11 ++extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224]; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05 ++#define DER_OID_SZ_id_sha512_224 11 ++extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224]; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06 ++#define DER_OID_SZ_id_sha512_256 11 ++extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256]; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07 ++#define DER_OID_SZ_id_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224]; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 ++#define DER_OID_SZ_id_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256]; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 ++#define DER_OID_SZ_id_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384]; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A ++#define DER_OID_SZ_id_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512]; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B ++#define DER_OID_SZ_id_shake128 11 ++extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128]; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C ++#define DER_OID_SZ_id_shake256 11 ++extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256]; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11 ++#define DER_OID_SZ_id_shake128_len 11 ++extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len]; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12 ++#define DER_OID_SZ_id_shake256_len 11 ++extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len]; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13 ++#define DER_OID_SZ_id_KMACWithSHAKE128 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128]; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14 ++#define DER_OID_SZ_id_KMACWithSHAKE256 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_dsa.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_dsa.h +new file mode 100644 +index 00000000..b12a5628 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_dsa.h +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_dsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01 ++#define DER_OID_SZ_id_dsa 9 ++extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa]; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha1 9 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1]; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_id_dsa_with_sha224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224]; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_id_dsa_with_sha256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256]; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384]; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_id_dsa_with_sha512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512]; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05 ++#define DER_OID_SZ_id_dsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224]; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06 ++#define DER_OID_SZ_id_dsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256]; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07 ++#define DER_OID_SZ_id_dsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384]; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08 ++#define DER_OID_SZ_id_dsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag, ++ DSA *dsa, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ec.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ec.h +new file mode 100644 +index 00000000..dd697771 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ec.h +@@ -0,0 +1,286 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ec.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA1 9 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1]; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01 ++#define DER_OID_SZ_id_ecPublicKey 9 ++extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey]; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01 ++#define DER_OID_SZ_c2pnb163v1 10 ++extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1]; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02 ++#define DER_OID_SZ_c2pnb163v2 10 ++extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2]; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03 ++#define DER_OID_SZ_c2pnb163v3 10 ++extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3]; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04 ++#define DER_OID_SZ_c2pnb176w1 10 ++extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1]; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05 ++#define DER_OID_SZ_c2tnb191v1 10 ++extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1]; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06 ++#define DER_OID_SZ_c2tnb191v2 10 ++extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2]; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07 ++#define DER_OID_SZ_c2tnb191v3 10 ++extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3]; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08 ++#define DER_OID_SZ_c2onb191v4 10 ++extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4]; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09 ++#define DER_OID_SZ_c2onb191v5 10 ++extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5]; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A ++#define DER_OID_SZ_c2pnb208w1 10 ++extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1]; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B ++#define DER_OID_SZ_c2tnb239v1 10 ++extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1]; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C ++#define DER_OID_SZ_c2tnb239v2 10 ++extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2]; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D ++#define DER_OID_SZ_c2tnb239v3 10 ++extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3]; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E ++#define DER_OID_SZ_c2onb239v4 10 ++extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4]; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F ++#define DER_OID_SZ_c2onb239v5 10 ++extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5]; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10 ++#define DER_OID_SZ_c2pnb272w1 10 ++extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1]; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11 ++#define DER_OID_SZ_c2pnb304w1 10 ++extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1]; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12 ++#define DER_OID_SZ_c2tnb359v1 10 ++extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1]; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13 ++#define DER_OID_SZ_c2pnb368w1 10 ++extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1]; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14 ++#define DER_OID_SZ_c2tnb431r1 10 ++extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1]; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01 ++#define DER_OID_SZ_prime192v1 10 ++extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1]; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_prime192v2 10 ++extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2]; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03 ++#define DER_OID_SZ_prime192v3 10 ++extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3]; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04 ++#define DER_OID_SZ_prime239v1 10 ++extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1]; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05 ++#define DER_OID_SZ_prime239v2 10 ++extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2]; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06 ++#define DER_OID_SZ_prime239v3 10 ++extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3]; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07 ++#define DER_OID_SZ_prime256v1 10 ++extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1]; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA224 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224]; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_ecdsa_with_SHA256 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256]; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_ecdsa_with_SHA384 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384]; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_ecdsa_with_SHA512 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512]; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09 ++#define DER_OID_SZ_id_ecdsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224]; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A ++#define DER_OID_SZ_id_ecdsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256]; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B ++#define DER_OID_SZ_id_ecdsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384]; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C ++#define DER_OID_SZ_id_ecdsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ecx.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ecx.h +new file mode 100644 +index 00000000..fc857380 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_ecx.h +@@ -0,0 +1,50 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ecx.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++#include "crypto/ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E ++#define DER_OID_SZ_id_X25519 5 ++extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519]; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F ++#define DER_OID_SZ_id_X448 5 ++extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448]; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70 ++#define DER_OID_SZ_id_Ed25519 5 ++extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519]; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71 ++#define DER_OID_SZ_id_Ed448 5 ++extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448]; ++ ++ ++int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_rsa.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_rsa.h +new file mode 100644 +index 00000000..5ec3c515 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_rsa.h +@@ -0,0 +1,187 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_rsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/rsa.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02 ++#define DER_OID_SZ_hashAlgs 10 ++extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs]; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01 ++#define DER_OID_SZ_rsaEncryption 11 ++extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption]; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07 ++#define DER_OID_SZ_id_RSAES_OAEP 11 ++extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP]; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09 ++#define DER_OID_SZ_id_pSpecified 11 ++extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified]; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A ++#define DER_OID_SZ_id_RSASSA_PSS 11 ++extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS]; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02 ++#define DER_OID_SZ_md2WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption]; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 ++#define DER_OID_SZ_md5WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption]; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05 ++#define DER_OID_SZ_sha1WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption]; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E ++#define DER_OID_SZ_sha224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption]; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B ++#define DER_OID_SZ_sha256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption]; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C ++#define DER_OID_SZ_sha384WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption]; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D ++#define DER_OID_SZ_sha512WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption]; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F ++#define DER_OID_SZ_sha512_224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption]; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10 ++#define DER_OID_SZ_sha512_256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption]; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08 ++#define DER_OID_SZ_id_mgf1 11 ++extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10 ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512]; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03 ++#define DER_OID_SZ_md4WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption]; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_ripemd160WithRSAEncryption 8 ++extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption]; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E ++#define DER_OID_SZ_mdc2WithRSASignature 7 ++extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature]; ++ ++ ++/* PSS parameters */ ++int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa); ++int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag, ++ int rsa_type, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag, ++ int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_sm2.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_sm2.h +new file mode 100644 +index 00000000..9d41b312 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_sm2.h +@@ -0,0 +1,37 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_sm2.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75 ++#define DER_OID_SZ_sm2_with_SM3 10 ++extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3]; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D ++#define DER_OID_SZ_curveSM2 10 ++extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_wrap.h b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_wrap.h +new file mode 100644 +index 00000000..ff295403 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/common/include/prov/der_wrap.h +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_wrap.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06 ++#define DER_OID_SZ_id_alg_CMS3DESwrap 13 ++extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap]; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05 ++#define DER_OID_SZ_id_aes128_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap]; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19 ++#define DER_OID_SZ_id_aes192_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap]; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D ++#define DER_OID_SZ_id_aes256_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/fips.ld b/deps/openssl/config/archs/linux-sw_64/asm/providers/fips.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/fips.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm/providers/legacy.ld b/deps/openssl/config/archs/linux-sw_64/asm/providers/legacy.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm/providers/legacy.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/apps/progs.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/apps/progs.c +new file mode 100644 +index 00000000..f594c302 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/apps/progs.c +@@ -0,0 +1,397 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "progs.h" ++ ++FUNCTION functions[] = { ++ {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL}, ++ {FT_general, "ca", ca_main, ca_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMP ++ {FT_general, "cmp", cmp_main, cmp_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMS ++ {FT_general, "cms", cms_main, cms_options, NULL, NULL}, ++#endif ++ {FT_general, "crl", crl_main, crl_options, NULL, NULL}, ++ {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL}, ++ {FT_general, "dgst", dgst_main, dgst_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DH ++ {FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsa", dsa_main, dsa_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ec", ec_main, ec_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL}, ++#endif ++ {FT_general, "enc", enc_main, enc_options, NULL, NULL}, ++#ifndef OPENSSL_NO_ENGINE ++ {FT_general, "engine", engine_main, engine_options, NULL, NULL}, ++#endif ++ {FT_general, "errstr", errstr_main, errstr_options, NULL, NULL}, ++ {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL}, ++#endif ++ {FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL}, ++#ifndef OPENSSL_NO_RSA ++ {FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL}, ++#endif ++ {FT_general, "help", help_main, help_options, NULL, NULL}, ++ {FT_general, "info", info_main, info_options, NULL, NULL}, ++ {FT_general, "kdf", kdf_main, kdf_options, NULL, NULL}, ++ {FT_general, "list", list_main, list_options, NULL, NULL}, ++ {FT_general, "mac", mac_main, mac_options, NULL, NULL}, ++ {FT_general, "nseq", nseq_main, nseq_options, NULL, NULL}, ++#ifndef OPENSSL_NO_OCSP ++ {FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL}, ++#endif ++ {FT_general, "passwd", passwd_main, passwd_options, NULL, NULL}, ++ {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL}, ++ {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL}, ++ {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL}, ++ {FT_general, "pkey", pkey_main, pkey_options, NULL, NULL}, ++ {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL}, ++ {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL}, ++ {FT_general, "prime", prime_main, prime_options, NULL, NULL}, ++ {FT_general, "rand", rand_main, rand_options, NULL, NULL}, ++ {FT_general, "rehash", rehash_main, rehash_options, NULL, NULL}, ++ {FT_general, "req", req_main, req_options, NULL, NULL}, ++ {FT_general, "rsa", rsa_main, rsa_options, NULL, NULL}, ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA) ++ {FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_client", s_client_main, s_client_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_server", s_server_main, s_server_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, ++#endif ++ {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, ++ {FT_general, "smime", smime_main, smime_options, NULL, NULL}, ++ {FT_general, "speed", speed_main, speed_options, NULL, NULL}, ++ {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SRP ++ {FT_general, "srp", srp_main, srp_options, NULL, NULL}, ++#endif ++ {FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL}, ++#ifndef OPENSSL_NO_TS ++ {FT_general, "ts", ts_main, ts_options, NULL, NULL}, ++#endif ++ {FT_general, "verify", verify_main, verify_options, NULL, NULL}, ++ {FT_general, "version", version_main, version_options, NULL, NULL}, ++ {FT_general, "x509", x509_main, x509_options, NULL, NULL}, ++#ifndef OPENSSL_NO_MD2 ++ {FT_md, "md2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_MD4 ++ {FT_md, "md4", dgst_main, NULL, NULL}, ++#endif ++ {FT_md, "md5", dgst_main, NULL, NULL}, ++ {FT_md, "sha1", dgst_main, NULL, NULL}, ++ {FT_md, "sha224", dgst_main, NULL, NULL}, ++ {FT_md, "sha256", dgst_main, NULL, NULL}, ++ {FT_md, "sha384", dgst_main, NULL, NULL}, ++ {FT_md, "sha512", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-384", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-512", dgst_main, NULL, NULL}, ++ {FT_md, "shake128", dgst_main, NULL, NULL}, ++ {FT_md, "shake256", dgst_main, NULL, NULL}, ++#ifndef OPENSSL_NO_MDC2 ++ {FT_md, "mdc2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_RMD160 ++ {FT_md, "rmd160", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2b512", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2s256", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM3 ++ {FT_md, "sm3", dgst_main, NULL, NULL}, ++#endif ++ {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL}, ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, ++#endif ++ {FT_cipher, "base64", enc_main, enc_options, NULL}, ++#ifdef ZLIB ++ {FT_cipher, "zlib", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "desx", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4-40", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL}, ++#endif ++ {0, NULL, NULL, NULL, NULL} ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/configdata.pm b/deps/openssl/config/archs/linux-sw_64/asm_avx2/configdata.pm +new file mode 100644 +index 00000000..ee765bbe +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/configdata.pm +@@ -0,0 +1,27690 @@ ++#! /usr/bin/env perl ++# -*- mode: perl -*- ++ ++package configdata; ++ ++use strict; ++use warnings; ++ ++use Exporter; ++our @ISA = qw(Exporter); ++our @EXPORT = qw( ++ %config %target %disabled %withargs %unified_info ++ @disablables @disablables_int ++); ++ ++our %config = ( ++ "AR" => "ar", ++ "ARFLAGS" => [ ++ "qc" ++ ], ++ "CC" => "../config/fake_gcc.pl", ++ "CFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "CPPDEFINES" => [], ++ "CPPFLAGS" => [], ++ "CPPINCLUDES" => [], ++ "CXX" => "g++", ++ "CXXFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "LDFLAGS" => [], ++ "LDLIBS" => [], ++ "PERL" => "/usr/bin/perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "RCFLAGS" => [], ++ "api" => "30000", ++ "b32" => "0", ++ "b64" => "0", ++ "b64l" => "1", ++ "bn_ll" => "0", ++ "build_file" => "Makefile", ++ "build_file_templates" => [ ++ "Configurations/common0.tmpl", ++ "Configurations/unix-Makefile.tmpl" ++ ], ++ "build_infos" => [ ++ "./build.info", ++ "crypto/build.info", ++ "ssl/build.info", ++ "apps/build.info", ++ "util/build.info", ++ "tools/build.info", ++ "fuzz/build.info", ++ "providers/build.info", ++ "doc/build.info", ++ "test/build.info", ++ "engines/build.info", ++ "crypto/objects/build.info", ++ "crypto/buffer/build.info", ++ "crypto/bio/build.info", ++ "crypto/stack/build.info", ++ "crypto/lhash/build.info", ++ "crypto/rand/build.info", ++ "crypto/evp/build.info", ++ "crypto/asn1/build.info", ++ "crypto/pem/build.info", ++ "crypto/x509/build.info", ++ "crypto/conf/build.info", ++ "crypto/txt_db/build.info", ++ "crypto/pkcs7/build.info", ++ "crypto/pkcs12/build.info", ++ "crypto/ui/build.info", ++ "crypto/kdf/build.info", ++ "crypto/store/build.info", ++ "crypto/property/build.info", ++ "crypto/md4/build.info", ++ "crypto/md5/build.info", ++ "crypto/sha/build.info", ++ "crypto/mdc2/build.info", ++ "crypto/hmac/build.info", ++ "crypto/ripemd/build.info", ++ "crypto/whrlpool/build.info", ++ "crypto/poly1305/build.info", ++ "crypto/siphash/build.info", ++ "crypto/sm3/build.info", ++ "crypto/des/build.info", ++ "crypto/aes/build.info", ++ "crypto/rc2/build.info", ++ "crypto/rc4/build.info", ++ "crypto/idea/build.info", ++ "crypto/aria/build.info", ++ "crypto/bf/build.info", ++ "crypto/cast/build.info", ++ "crypto/camellia/build.info", ++ "crypto/seed/build.info", ++ "crypto/sm4/build.info", ++ "crypto/chacha/build.info", ++ "crypto/modes/build.info", ++ "crypto/bn/build.info", ++ "crypto/ec/build.info", ++ "crypto/rsa/build.info", ++ "crypto/dsa/build.info", ++ "crypto/dh/build.info", ++ "crypto/sm2/build.info", ++ "crypto/dso/build.info", ++ "crypto/engine/build.info", ++ "crypto/err/build.info", ++ "crypto/http/build.info", ++ "crypto/ocsp/build.info", ++ "crypto/cms/build.info", ++ "crypto/ts/build.info", ++ "crypto/srp/build.info", ++ "crypto/cmac/build.info", ++ "crypto/ct/build.info", ++ "crypto/async/build.info", ++ "crypto/ess/build.info", ++ "crypto/crmf/build.info", ++ "crypto/cmp/build.info", ++ "crypto/encode_decode/build.info", ++ "crypto/ffc/build.info", ++ "apps/lib/build.info", ++ "providers/common/build.info", ++ "providers/implementations/build.info", ++ "providers/fips/build.info", ++ "doc/man1/build.info", ++ "providers/common/der/build.info", ++ "providers/implementations/digests/build.info", ++ "providers/implementations/ciphers/build.info", ++ "providers/implementations/rands/build.info", ++ "providers/implementations/macs/build.info", ++ "providers/implementations/kdfs/build.info", ++ "providers/implementations/exchange/build.info", ++ "providers/implementations/keymgmt/build.info", ++ "providers/implementations/signature/build.info", ++ "providers/implementations/asymciphers/build.info", ++ "providers/implementations/encode_decode/build.info", ++ "providers/implementations/storemgmt/build.info", ++ "providers/implementations/kem/build.info", ++ "providers/implementations/rands/seeding/build.info" ++ ], ++ "build_metadata" => "+quic", ++ "build_type" => "release", ++ "builddir" => ".", ++ "cflags" => [ ++ "-Wa,--noexecstack" ++ ], ++ "conf_files" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf" ++ ], ++ "cppflags" => [], ++ "cxxflags" => [], ++ "defines" => [ ++ "NDEBUG" ++ ], ++ "dynamic_engines" => "0", ++ "ex_libs" => [], ++ "full_version" => "3.0.5+quic", ++ "includes" => [], ++ "lflags" => [], ++ "lib_defines" => [ ++ "OPENSSL_PIC" ++ ], ++ "libdir" => "", ++ "major" => "3", ++ "makedep_scheme" => "gcc", ++ "minor" => "0", ++ "openssl_api_defines" => [ ++ "OPENSSL_CONFIGURED_API=30000" ++ ], ++ "openssl_feature_defines" => [ ++ "OPENSSL_RAND_SEED_OS", ++ "OPENSSL_THREADS", ++ "OPENSSL_NO_AFALGENG", ++ "OPENSSL_NO_ASAN", ++ "OPENSSL_NO_COMP", ++ "OPENSSL_NO_CRYPTO_MDEBUG", ++ "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", ++ "OPENSSL_NO_DEVCRYPTOENG", ++ "OPENSSL_NO_EC_NISTP_64_GCC_128", ++ "OPENSSL_NO_EGD", ++ "OPENSSL_NO_EXTERNAL_TESTS", ++ "OPENSSL_NO_FUZZ_AFL", ++ "OPENSSL_NO_FUZZ_LIBFUZZER", ++ "OPENSSL_NO_KTLS", ++ "OPENSSL_NO_LOADERENG", ++ "OPENSSL_NO_MD2", ++ "OPENSSL_NO_MSAN", ++ "OPENSSL_NO_RC5", ++ "OPENSSL_NO_SCTP", ++ "OPENSSL_NO_SSL3", ++ "OPENSSL_NO_SSL3_METHOD", ++ "OPENSSL_NO_TRACE", ++ "OPENSSL_NO_UBSAN", ++ "OPENSSL_NO_UNIT_TEST", ++ "OPENSSL_NO_UPLINK", ++ "OPENSSL_NO_WEAK_SSL_CIPHERS", ++ "OPENSSL_NO_DYNAMIC_ENGINE" ++ ], ++ "openssl_other_defines" => [ ++ "OPENSSL_NO_KTLS" ++ ], ++ "openssl_sys_defines" => [], ++ "openssldir" => "", ++ "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", ++ "patch" => "5", ++ "perl_archname" => "x86_64-linux-gnu-thread-multi", ++ "perl_cmd" => "/usr/bin/perl", ++ "perl_version" => "5.30.0", ++ "perlargv" => [ ++ "no-comp", ++ "no-shared", ++ "no-afalgeng", ++ "enable-ssl-trace", ++ "enable-fips", ++ "linux-sw_64" ++ ], ++ "perlenv" => { ++ "AR" => undef, ++ "ARFLAGS" => undef, ++ "AS" => undef, ++ "ASFLAGS" => undef, ++ "BUILDFILE" => undef, ++ "CC" => "../config/fake_gcc.pl", ++ "CFLAGS" => undef, ++ "CPP" => undef, ++ "CPPDEFINES" => undef, ++ "CPPFLAGS" => undef, ++ "CPPINCLUDES" => undef, ++ "CROSS_COMPILE" => undef, ++ "CXX" => undef, ++ "CXXFLAGS" => undef, ++ "HASHBANGPERL" => undef, ++ "LD" => undef, ++ "LDFLAGS" => undef, ++ "LDLIBS" => undef, ++ "MT" => undef, ++ "MTFLAGS" => undef, ++ "OPENSSL_LOCAL_CONFIG_DIR" => undef, ++ "PERL" => undef, ++ "RANLIB" => undef, ++ "RC" => undef, ++ "RCFLAGS" => undef, ++ "RM" => undef, ++ "WINDRES" => undef, ++ "__CNF_CFLAGS" => undef, ++ "__CNF_CPPDEFINES" => undef, ++ "__CNF_CPPFLAGS" => undef, ++ "__CNF_CPPINCLUDES" => undef, ++ "__CNF_CXXFLAGS" => undef, ++ "__CNF_LDFLAGS" => undef, ++ "__CNF_LDLIBS" => undef ++ }, ++ "prefix" => "", ++ "prerelease" => "", ++ "processor" => "", ++ "rc4_int" => "unsigned char", ++ "release_date" => "5 Jul 2022", ++ "shlib_version" => "81.3", ++ "sourcedir" => ".", ++ "target" => "linux-sw_64", ++ "version" => "3.0.5" ++); ++our %target = ( ++ "AR" => "ar", ++ "ARFLAGS" => "qc", ++ "CC" => "gcc", ++ "CFLAGS" => "-Wall -O3", ++ "CXX" => "g++", ++ "CXXFLAGS" => "-Wall -O3", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "_conf_fname_int" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/shared-info.pl" ++ ], ++ "asm_arch" => "sw_64", ++ "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", ++ "build_file" => "Makefile", ++ "build_scheme" => [ ++ "unified", ++ "unix" ++ ], ++ "cflags" => "-pthread", ++ "cppflags" => "", ++ "cxxflags" => "-std=c++11 -pthread", ++ "defines" => [ ++ "OPENSSL_BUILDING_OPENSSL" ++ ], ++ "disable" => [], ++ "dso_ldflags" => "-Wl,-z,defs", ++ "dso_scheme" => "dlfcn", ++ "enable" => [ ++ "afalgeng" ++ ], ++ "ex_libs" => "-ldl -pthread", ++ "includes" => [], ++ "lflags" => "", ++ "lib_cflags" => "", ++ "lib_cppflags" => "-DOPENSSL_USE_NODELETE", ++ "lib_defines" => [], ++ "module_cflags" => "-fPIC", ++ "module_cxxflags" => undef, ++ "module_ldflags" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "multilib" => "64", ++ "perl_platform" => "Unix", ++ "perlasm_scheme" => "64", ++ "shared_cflag" => "-fPIC", ++ "shared_defflag" => "-Wl,--version-script=", ++ "shared_defines" => [], ++ "shared_ldflag" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "shared_rcflag" => "", ++ "shared_sonameflag" => "-Wl,-soname=", ++ "shared_target" => "linux-shared", ++ "template" => "1", ++ "thread_defines" => [], ++ "thread_scheme" => "pthreads", ++ "unistd" => "" ++); ++our @disablables = ( ++ "acvp-tests", ++ "afalgeng", ++ "aria", ++ "asan", ++ "asm", ++ "async", ++ "autoalginit", ++ "autoerrinit", ++ "autoload-config", ++ "bf", ++ "blake2", ++ "buildtest-c++", ++ "bulk", ++ "cached-fetch", ++ "camellia", ++ "capieng", ++ "cast", ++ "chacha", ++ "cmac", ++ "cmp", ++ "cms", ++ "comp", ++ "crypto-mdebug", ++ "ct", ++ "deprecated", ++ "des", ++ "devcryptoeng", ++ "dgram", ++ "dh", ++ "dsa", ++ "dso", ++ "dtls", ++ "dynamic-engine", ++ "ec", ++ "ec2m", ++ "ec_nistp_64_gcc_128", ++ "ecdh", ++ "ecdsa", ++ "egd", ++ "engine", ++ "err", ++ "external-tests", ++ "filenames", ++ "fips", ++ "fips-securitychecks", ++ "fuzz-afl", ++ "fuzz-libfuzzer", ++ "gost", ++ "idea", ++ "ktls", ++ "legacy", ++ "loadereng", ++ "makedepend", ++ "md2", ++ "md4", ++ "mdc2", ++ "module", ++ "msan", ++ "multiblock", ++ "nextprotoneg", ++ "ocb", ++ "ocsp", ++ "padlockeng", ++ "pic", ++ "pinshared", ++ "poly1305", ++ "posix-io", ++ "psk", ++ "quic", ++ "rc2", ++ "rc4", ++ "rc5", ++ "rdrand", ++ "rfc3779", ++ "rmd160", ++ "scrypt", ++ "sctp", ++ "secure-memory", ++ "seed", ++ "shared", ++ "siphash", ++ "siv", ++ "sm2", ++ "sm3", ++ "sm4", ++ "sock", ++ "srp", ++ "srtp", ++ "sse2", ++ "ssl", ++ "ssl-trace", ++ "static-engine", ++ "stdio", ++ "tests", ++ "threads", ++ "tls", ++ "trace", ++ "ts", ++ "ubsan", ++ "ui-console", ++ "unit-test", ++ "uplink", ++ "weak-ssl-ciphers", ++ "whirlpool", ++ "zlib", ++ "zlib-dynamic", ++ "ssl3", ++ "ssl3-method", ++ "tls1", ++ "tls1-method", ++ "tls1_1", ++ "tls1_1-method", ++ "tls1_2", ++ "tls1_2-method", ++ "tls1_3", ++ "dtls1", ++ "dtls1-method", ++ "dtls1_2", ++ "dtls1_2-method" ++); ++our @disablables_int = ( ++ "crmf" ++); ++our %disabled = ( ++ "afalgeng" => "option", ++ "asan" => "default", ++ "buildtest-c++" => "default", ++ "comp" => "option", ++ "crypto-mdebug" => "default", ++ "crypto-mdebug-backtrace" => "default", ++ "devcryptoeng" => "default", ++ "dynamic-engine" => "cascade", ++ "ec_nistp_64_gcc_128" => "default", ++ "egd" => "default", ++ "external-tests" => "default", ++ "fuzz-afl" => "default", ++ "fuzz-libfuzzer" => "default", ++ "ktls" => "default", ++ "loadereng" => "cascade", ++ "md2" => "default", ++ "msan" => "default", ++ "rc5" => "default", ++ "sctp" => "default", ++ "shared" => "option", ++ "ssl3" => "default", ++ "ssl3-method" => "default", ++ "trace" => "default", ++ "ubsan" => "default", ++ "unit-test" => "default", ++ "uplink" => "no uplink_arch", ++ "weak-ssl-ciphers" => "default", ++ "zlib" => "default", ++ "zlib-dynamic" => "default" ++); ++our %withargs = (); ++our %unified_info = ( ++ "attributes" => { ++ "depends" => { ++ "doc/man1/openssl-asn1parse.pod" => { ++ "doc/man1/openssl-asn1parse.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ca.pod" => { ++ "doc/man1/openssl-ca.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ciphers.pod" => { ++ "doc/man1/openssl-ciphers.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmds.pod" => { ++ "doc/man1/openssl-cmds.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmp.pod" => { ++ "doc/man1/openssl-cmp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cms.pod" => { ++ "doc/man1/openssl-cms.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl.pod" => { ++ "doc/man1/openssl-crl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl2pkcs7.pod" => { ++ "doc/man1/openssl-crl2pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dgst.pod" => { ++ "doc/man1/openssl-dgst.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dhparam.pod" => { ++ "doc/man1/openssl-dhparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsa.pod" => { ++ "doc/man1/openssl-dsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsaparam.pod" => { ++ "doc/man1/openssl-dsaparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ec.pod" => { ++ "doc/man1/openssl-ec.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ecparam.pod" => { ++ "doc/man1/openssl-ecparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-enc.pod" => { ++ "doc/man1/openssl-enc.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-engine.pod" => { ++ "doc/man1/openssl-engine.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-errstr.pod" => { ++ "doc/man1/openssl-errstr.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-fipsinstall.pod" => { ++ "doc/man1/openssl-fipsinstall.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-gendsa.pod" => { ++ "doc/man1/openssl-gendsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genpkey.pod" => { ++ "doc/man1/openssl-genpkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genrsa.pod" => { ++ "doc/man1/openssl-genrsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-info.pod" => { ++ "doc/man1/openssl-info.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-kdf.pod" => { ++ "doc/man1/openssl-kdf.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-list.pod" => { ++ "doc/man1/openssl-list.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-mac.pod" => { ++ "doc/man1/openssl-mac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-nseq.pod" => { ++ "doc/man1/openssl-nseq.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ocsp.pod" => { ++ "doc/man1/openssl-ocsp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-passwd.pod" => { ++ "doc/man1/openssl-passwd.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs12.pod" => { ++ "doc/man1/openssl-pkcs12.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs7.pod" => { ++ "doc/man1/openssl-pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs8.pod" => { ++ "doc/man1/openssl-pkcs8.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkey.pod" => { ++ "doc/man1/openssl-pkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyparam.pod" => { ++ "doc/man1/openssl-pkeyparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyutl.pod" => { ++ "doc/man1/openssl-pkeyutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-prime.pod" => { ++ "doc/man1/openssl-prime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rand.pod" => { ++ "doc/man1/openssl-rand.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rehash.pod" => { ++ "doc/man1/openssl-rehash.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-req.pod" => { ++ "doc/man1/openssl-req.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsa.pod" => { ++ "doc/man1/openssl-rsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsautl.pod" => { ++ "doc/man1/openssl-rsautl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_client.pod" => { ++ "doc/man1/openssl-s_client.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_server.pod" => { ++ "doc/man1/openssl-s_server.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_time.pod" => { ++ "doc/man1/openssl-s_time.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-sess_id.pod" => { ++ "doc/man1/openssl-sess_id.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-smime.pod" => { ++ "doc/man1/openssl-smime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-speed.pod" => { ++ "doc/man1/openssl-speed.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-spkac.pod" => { ++ "doc/man1/openssl-spkac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-srp.pod" => { ++ "doc/man1/openssl-srp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-storeutl.pod" => { ++ "doc/man1/openssl-storeutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ts.pod" => { ++ "doc/man1/openssl-ts.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-verify.pod" => { ++ "doc/man1/openssl-verify.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-version.pod" => { ++ "doc/man1/openssl-version.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-x509.pod" => { ++ "doc/man1/openssl-x509.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man7/openssl_user_macros.pod" => { ++ "doc/man7/openssl_user_macros.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "providers/libcommon.a" => { ++ "libcrypto" => { ++ "weak" => "1" ++ } ++ } ++ }, ++ "generate" => { ++ "include/openssl/configuration.h" => { ++ "skip" => "1" ++ } ++ }, ++ "libraries" => { ++ "apps/libapps.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libcommon.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libdefault.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libfips.a" => { ++ "noinst" => "1" ++ }, ++ "providers/liblegacy.a" => { ++ "noinst" => "1" ++ }, ++ "test/libtestutil.a" => { ++ "has_main" => "1", ++ "noinst" => "1" ++ } ++ }, ++ "modules" => { ++ "providers/fips" => { ++ "fips" => "1" ++ }, ++ "test/p_test" => { ++ "noinst" => "1" ++ } ++ }, ++ "programs" => { ++ "fuzz/asn1-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/asn1parse-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bignum-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bndiv-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/client-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cmp-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cms-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/conf-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/crl-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/ct-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/server-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/x509-test" => { ++ "noinst" => "1" ++ }, ++ "test/aborttest" => { ++ "noinst" => "1" ++ }, ++ "test/acvp_test" => { ++ "noinst" => "1" ++ }, ++ "test/aesgcmtest" => { ++ "noinst" => "1" ++ }, ++ "test/afalgtest" => { ++ "noinst" => "1" ++ }, ++ "test/algorithmid_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_decode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_dsa_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_encode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_string_table_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/asynciotest" => { ++ "noinst" => "1" ++ }, ++ "test/asynctest" => { ++ "noinst" => "1" ++ }, ++ "test/bad_dtls_test" => { ++ "noinst" => "1" ++ }, ++ "test/bftest" => { ++ "noinst" => "1" ++ }, ++ "test/bio_callback_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_core_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_enc_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_memleak_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_prefix_text" => { ++ "noinst" => "1" ++ }, ++ "test/bio_readbuffer_test" => { ++ "noinst" => "1" ++ }, ++ "test/bioprinttest" => { ++ "noinst" => "1" ++ }, ++ "test/bn_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/bntest" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_aes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_async" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_blowfish" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_bn" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_buffer" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_camellia" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cast" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmp_util" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conf_api" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conftypes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_dispatch" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_object" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cryptoerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_decoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_des" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dtls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_e_os2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ebcdic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ec" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_encoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_engine" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_evp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_fips_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_hmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_http" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_idea" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_kdf" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_macros" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md5" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_mdc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_modes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_obj_mac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_objects" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ossl_typ" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_param_build" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_params" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_prov_ssl" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_provider" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_quic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rand" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ripemd" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_seed" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_self_test" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sha" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_srtp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ssl2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sslerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_stack" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_store" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_symhacks" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_tls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ts" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_txt_db" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_types" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_whrlpool" => { ++ "noinst" => "1" ++ }, ++ "test/casttest" => { ++ "noinst" => "1" ++ }, ++ "test/chacha_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipher_overhead_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherbytes_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherlist_test" => { ++ "noinst" => "1" ++ }, ++ "test/ciphername_test" => { ++ "noinst" => "1" ++ }, ++ "test/clienthellotest" => { ++ "noinst" => "1" ++ }, ++ "test/cmactest" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_asn_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_client_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_hdr_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_msg_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_protect_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_server_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_vfy_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmsapitest" => { ++ "noinst" => "1" ++ }, ++ "test/conf_include_test" => { ++ "noinst" => "1" ++ }, ++ "test/confdump" => { ++ "noinst" => "1" ++ }, ++ "test/constant_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/context_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/crltest" => { ++ "noinst" => "1" ++ }, ++ "test/ct_test" => { ++ "noinst" => "1" ++ }, ++ "test/ctype_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/curve448_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/d2i_test" => { ++ "noinst" => "1" ++ }, ++ "test/danetest" => { ++ "noinst" => "1" ++ }, ++ "test/defltfips_test" => { ++ "noinst" => "1" ++ }, ++ "test/destest" => { ++ "noinst" => "1" ++ }, ++ "test/dhtest" => { ++ "noinst" => "1" ++ }, ++ "test/drbgtest" => { ++ "noinst" => "1" ++ }, ++ "test/dsa_no_digest_size_test" => { ++ "noinst" => "1" ++ }, ++ "test/dsatest" => { ++ "noinst" => "1" ++ }, ++ "test/dtls_mtu_test" => { ++ "noinst" => "1" ++ }, ++ "test/dtlstest" => { ++ "noinst" => "1" ++ }, ++ "test/dtlsv1listentest" => { ++ "noinst" => "1" ++ }, ++ "test/ec_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ecdsatest" => { ++ "noinst" => "1" ++ }, ++ "test/ecstresstest" => { ++ "noinst" => "1" ++ }, ++ "test/ectest" => { ++ "noinst" => "1" ++ }, ++ "test/endecode_test" => { ++ "noinst" => "1" ++ }, ++ "test/endecoder_legacy_test" => { ++ "noinst" => "1" ++ }, ++ "test/enginetest" => { ++ "noinst" => "1" ++ }, ++ "test/errtest" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test2" => { ++ "noinst" => "1" ++ }, ++ "test/evp_fetch_prov_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_libctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_ctx_new_from_name" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_dparams_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_provided_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_test" => { ++ "noinst" => "1" ++ }, ++ "test/exdatatest" => { ++ "noinst" => "1" ++ }, ++ "test/exptest" => { ++ "noinst" => "1" ++ }, ++ "test/fatalerrtest" => { ++ "noinst" => "1" ++ }, ++ "test/ffc_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/gmdifftest" => { ++ "noinst" => "1" ++ }, ++ "test/hexstr_test" => { ++ "noinst" => "1" ++ }, ++ "test/hmactest" => { ++ "noinst" => "1" ++ }, ++ "test/http_test" => { ++ "noinst" => "1" ++ }, ++ "test/ideatest" => { ++ "noinst" => "1" ++ }, ++ "test/igetest" => { ++ "noinst" => "1" ++ }, ++ "test/keymgmt_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/lhash_test" => { ++ "noinst" => "1" ++ }, ++ "test/localetest" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2test" => { ++ "noinst" => "1" ++ }, ++ "test/memleaktest" => { ++ "noinst" => "1" ++ }, ++ "test/modes_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/namemap_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ocspapitest" => { ++ "noinst" => "1" ++ }, ++ "test/ossl_store_test" => { ++ "noinst" => "1" ++ }, ++ "test/packettest" => { ++ "noinst" => "1" ++ }, ++ "test/param_build_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_api_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_conversion_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_test" => { ++ "noinst" => "1" ++ }, ++ "test/pbelutest" => { ++ "noinst" => "1" ++ }, ++ "test/pbetest" => { ++ "noinst" => "1" ++ }, ++ "test/pem_read_depr_test" => { ++ "noinst" => "1" ++ }, ++ "test/pemtest" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs12_format_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs7_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_test" => { ++ "noinst" => "1" ++ }, ++ "test/poly1305_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/property_test" => { ++ "noinst" => "1" ++ }, ++ "test/prov_config_test" => { ++ "noinst" => "1" ++ }, ++ "test/provfetchtest" => { ++ "noinst" => "1" ++ }, ++ "test/provider_fallback_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_test" => { ++ "noinst" => "1" ++ }, ++ "test/rc2test" => { ++ "noinst" => "1" ++ }, ++ "test/rc4test" => { ++ "noinst" => "1" ++ }, ++ "test/rc5test" => { ++ "noinst" => "1" ++ }, ++ "test/rdrand_sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/recordlentest" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_complex" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_mp_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_sp800_56b_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_test" => { ++ "noinst" => "1" ++ }, ++ "test/sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/secmemtest" => { ++ "noinst" => "1" ++ }, ++ "test/servername_test" => { ++ "noinst" => "1" ++ }, ++ "test/sha_test" => { ++ "noinst" => "1" ++ }, ++ "test/siphash_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm3_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm4_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sparse_array_test" => { ++ "noinst" => "1" ++ }, ++ "test/srptest" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_cert_table_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_old_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/sslapitest" => { ++ "noinst" => "1" ++ }, ++ "test/sslbuffertest" => { ++ "noinst" => "1" ++ }, ++ "test/sslcorrupttest" => { ++ "noinst" => "1" ++ }, ++ "test/stack_test" => { ++ "noinst" => "1" ++ }, ++ "test/sysdefaulttest" => { ++ "noinst" => "1" ++ }, ++ "test/test_test" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest_fips" => { ++ "noinst" => "1" ++ }, ++ "test/time_offset_test" => { ++ "noinst" => "1" ++ }, ++ "test/tls13ccstest" => { ++ "noinst" => "1" ++ }, ++ "test/tls13encryptiontest" => { ++ "noinst" => "1" ++ }, ++ "test/uitest" => { ++ "noinst" => "1" ++ }, ++ "test/upcallstest" => { ++ "noinst" => "1" ++ }, ++ "test/user_property_test" => { ++ "noinst" => "1" ++ }, ++ "test/v3ext" => { ++ "noinst" => "1" ++ }, ++ "test/v3nametest" => { ++ "noinst" => "1" ++ }, ++ "test/verify_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/versions" => { ++ "noinst" => "1" ++ }, ++ "test/wpackettest" => { ++ "noinst" => "1" ++ }, ++ "test/x509_check_cert_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_dup_cert_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509aux" => { ++ "noinst" => "1" ++ } ++ }, ++ "scripts" => { ++ "apps/CA.pl" => { ++ "misc" => "1" ++ }, ++ "apps/tsget.pl" => { ++ "linkname" => "tsget", ++ "misc" => "1" ++ }, ++ "util/shlib_wrap.sh" => { ++ "noinst" => "1" ++ }, ++ "util/wrap.pl" => { ++ "noinst" => "1" ++ } ++ }, ++ "sources" => { ++ "apps/openssl" => { ++ "apps/openssl-bin-progs.o" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/openssl-bin-progs.o" => { ++ "apps/progs.c" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/progs.o" => {} ++ } ++ }, ++ "defines" => { ++ "libcrypto" => [ ++ "AES_ASM", ++ "OPENSSL_BN_ASM_MONT", ++ "POLY1305_ASM", ++ "SHA1_ASM", ++ "SHA256_ASM", ++ "SHA512_ASM" ++ ], ++ "providers/fips" => [ ++ "FIPS_MODULE" ++ ], ++ "providers/libcommon.a" => [ ++ "OPENSSL_BN_ASM_MONT" ++ ], ++ "providers/libdefault.a" => [ ++ "AES_ASM" ++ ], ++ "providers/libfips.a" => [ ++ "AES_ASM", ++ "FIPS_MODULE", ++ "OPENSSL_BN_ASM_MONT", ++ "SHA1_ASM", ++ "SHA256_ASM", ++ "SHA512_ASM" ++ ], ++ "providers/liblegacy.a" => [ ++ "OPENSSL_BN_ASM_MONT" ++ ], ++ "test/provider_internal_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ], ++ "test/provider_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ] ++ }, ++ "depends" => { ++ "" => [ ++ "include/crypto/bn_conf.h", ++ "include/crypto/dso_conf.h", ++ "include/openssl/asn1.h", ++ "include/openssl/asn1t.h", ++ "include/openssl/bio.h", ++ "include/openssl/cmp.h", ++ "include/openssl/cms.h", ++ "include/openssl/conf.h", ++ "include/openssl/crmf.h", ++ "include/openssl/crypto.h", ++ "include/openssl/ct.h", ++ "include/openssl/err.h", ++ "include/openssl/ess.h", ++ "include/openssl/fipskey.h", ++ "include/openssl/lhash.h", ++ "include/openssl/ocsp.h", ++ "include/openssl/opensslv.h", ++ "include/openssl/pkcs12.h", ++ "include/openssl/pkcs7.h", ++ "include/openssl/safestack.h", ++ "include/openssl/srp.h", ++ "include/openssl/ssl.h", ++ "include/openssl/ui.h", ++ "include/openssl/x509.h", ++ "include/openssl/x509_vfy.h", ++ "include/openssl/x509v3.h", ++ "test/provider_internal_test.cnf" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl" => [ ++ "apps/libapps.a", ++ "libssl" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/progs.c" => [ ++ "configdata.pm" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.c" ++ ], ++ "build_modules_nodep" => [ ++ "providers/fipsmodule.cnf" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aesni-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/aes/vpaes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/x86cpuid.s" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "fuzz/asn1-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bignum-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bndiv-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/client-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/cmp-test" => [ ++ "libcrypto.a" ++ ], ++ "fuzz/cms-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/conf-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/crl-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/ct-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/server-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/x509-test" => [ ++ "libcrypto" ++ ], ++ "libcrypto.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "libssl" => [ ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov/der_digests.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/fips" => [ ++ "providers/libfips.a" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "providers/fips" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/legacy" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ], ++ "providers/libcommon.a" => [ ++ "libcrypto" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/libcommon.a" ++ ], ++ "providers/liblegacy.a" => [ ++ "providers/libcommon.a" ++ ], ++ "test/aborttest" => [ ++ "libcrypto" ++ ], ++ "test/acvp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/aesgcmtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/afalgtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/algorithmid_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_decode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_encode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_string_table_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asynciotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/asynctest" => [ ++ "libcrypto" ++ ], ++ "test/bad_dtls_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/bftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_callback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_core_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_enc_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_memleak_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_prefix_text" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bioprinttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bn_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/bntest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/buildtest_c_aes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_async" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_bn" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cast" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_des" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ec" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_engine" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_evp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_http" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_idea" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_macros" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md5" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_modes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_objects" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_params" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_provider" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_quic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rand" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_seed" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sha" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_stack" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_store" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ts" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_types" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/casttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/chacha_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipher_overhead_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipherbytes_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cipherlist_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ciphername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/clienthellotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_asn_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_client_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_ctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_hdr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_msg_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_protect_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_server_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_vfy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmsapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/conf_include_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/confdump" => [ ++ "libcrypto" ++ ], ++ "test/constant_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/context_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/crltest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ct_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ctype_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/curve448_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/d2i_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/danetest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/defltfips_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/destest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dhtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/drbgtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dtls_mtu_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlsv1listentest" => [ ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ec_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecdsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecstresstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ectest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecode_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/enginetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/errtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test2" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_libctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "libcrypto" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exdatatest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/fatalerrtest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ffc_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/gmdifftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/hexstr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/hmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/http_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ideatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/igetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/lhash_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/libtestutil.a" => [ ++ "libcrypto" ++ ], ++ "test/localetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/memleaktest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/modes_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/namemap_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ocspapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ossl_store_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/packettest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/param_build_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/params_api_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_conversion_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/pbelutest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pbetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pem_read_depr_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs12_format_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs7_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/poly1305_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/property_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/prov_config_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provfetchtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_fallback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rand_status_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rand_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rc2test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc4test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc5test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/recordlentest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_mp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sanitytest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/secmemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/servername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sha_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/siphash_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm3_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm4_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sparse_array_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/srptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_old_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslapitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslbuffertest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslcorrupttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/stack_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/sysdefaulttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/test_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest_fips" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/time_offset_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/tls13ccstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/tls13encryptiontest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/uitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/upcallstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/user_property_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3ext" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3nametest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/verify_extra_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/versions" => [ ++ "libcrypto" ++ ], ++ "test/wpackettest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509aux" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "util/wrap.pl" => [ ++ "configdata.pm" ++ ] ++ }, ++ "dirinfo" => { ++ "apps" => { ++ "products" => { ++ "bin" => [ ++ "apps/openssl" ++ ], ++ "script" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl" ++ ] ++ } ++ }, ++ "apps/lib" => { ++ "deps" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "apps/lib/uitest-bin-apps_ui.o", ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o", ++ "apps/lib/libtestutil-lib-opt.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "apps/openssl", ++ "test/cmp_client_test", ++ "test/uitest" ++ ], ++ "lib" => [ ++ "apps/libapps.a", ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "crypto" => { ++ "deps" => [ ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aes" => { ++ "deps" => [ ++ "crypto/aes/libcrypto-lib-aes-sw_64.o", ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aes/libfips-lib-aes-sw_64.o", ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aria" => { ++ "deps" => [ ++ "crypto/aria/libcrypto-lib-aria.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/asn1" => { ++ "deps" => [ ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async" => { ++ "deps" => [ ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async/arch" => { ++ "deps" => [ ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bf" => { ++ "deps" => [ ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bio" => { ++ "deps" => [ ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bn" => { ++ "deps" => [ ++ "crypto/bn/libcrypto-lib-bn-sw_64.o", ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/bn/libcrypto-lib-sw_64-mont.o", ++ "crypto/bn/libfips-lib-bn-sw_64.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/bn/libfips-lib-sw_64-mont.o", ++ "crypto/bn/liblegacy-lib-bn-sw_64.o", ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/buffer" => { ++ "deps" => [ ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/buffer/libfips-lib-buffer.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/camellia" => { ++ "deps" => [ ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cast" => { ++ "deps" => [ ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/chacha" => { ++ "deps" => [ ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cmac" => { ++ "deps" => [ ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmac/libfips-lib-cmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/cmp" => { ++ "deps" => [ ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cms" => { ++ "deps" => [ ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/conf" => { ++ "deps" => [ ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/crmf" => { ++ "deps" => [ ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ct" => { ++ "deps" => [ ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/des" => { ++ "deps" => [ ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/dh" => { ++ "deps" => [ ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dsa" => { ++ "deps" => [ ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dso" => { ++ "deps" => [ ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ec" => { ++ "deps" => [ ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448" => { ++ "deps" => [ ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_32" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_64" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/encode_decode" => { ++ "deps" => [ ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/engine" => { ++ "deps" => [ ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/err" => { ++ "deps" => [ ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ess" => { ++ "deps" => [ ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/evp" => { ++ "deps" => [ ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ffc" => { ++ "deps" => [ ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/hmac" => { ++ "deps" => [ ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/hmac/libfips-lib-hmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/http" => { ++ "deps" => [ ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/idea" => { ++ "deps" => [ ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/kdf" => { ++ "deps" => [ ++ "crypto/kdf/libcrypto-lib-kdf_err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/lhash" => { ++ "deps" => [ ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/lhash/libfips-lib-lhash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/md4" => { ++ "deps" => [ ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/md5" => { ++ "deps" => [ ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/mdc2" => { ++ "deps" => [ ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/modes" => { ++ "deps" => [ ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/objects" => { ++ "deps" => [ ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ocsp" => { ++ "deps" => [ ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pem" => { ++ "deps" => [ ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs12" => { ++ "deps" => [ ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs7" => { ++ "deps" => [ ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/poly1305" => { ++ "deps" => [ ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o", ++ "crypto/poly1305/libcrypto-lib-poly1305.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/property" => { ++ "deps" => [ ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rand" => { ++ "deps" => [ ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rand/libfips-lib-rand_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rc2" => { ++ "deps" => [ ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rc4" => { ++ "deps" => [ ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ripemd" => { ++ "deps" => [ ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rsa" => { ++ "deps" => [ ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/seed" => { ++ "deps" => [ ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sha" => { ++ "deps" => [ ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1-sw_64.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256-sw_64.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512-sw_64.o", ++ "crypto/sha/libfips-lib-sha512.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/siphash" => { ++ "deps" => [ ++ "crypto/siphash/libcrypto-lib-siphash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm2" => { ++ "deps" => [ ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm3" => { ++ "deps" => [ ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm4" => { ++ "deps" => [ ++ "crypto/sm4/libcrypto-lib-sm4.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/srp" => { ++ "deps" => [ ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/stack" => { ++ "deps" => [ ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/stack/libfips-lib-stack.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/store" => { ++ "deps" => [ ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ts" => { ++ "deps" => [ ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/txt_db" => { ++ "deps" => [ ++ "crypto/txt_db/libcrypto-lib-txt_db.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ui" => { ++ "deps" => [ ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/whrlpool" => { ++ "deps" => [ ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/x509" => { ++ "deps" => [ ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "engines" => { ++ "deps" => [ ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "fuzz" => { ++ "products" => { ++ "bin" => [ ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test" ++ ] ++ } ++ }, ++ "providers" => { ++ "deps" => [ ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips", ++ "providers/legacy" ++ ], ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/common" => { ++ "deps" => [ ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/common/der" => { ++ "deps" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/fips" => { ++ "deps" => [ ++ "providers/fips/fips-dso-fips_entry.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips" ++ ], ++ "lib" => [ ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/asymciphers" => { ++ "deps" => [ ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/ciphers" => { ++ "deps" => [ ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/digests" => { ++ "deps" => [ ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/encode_decode" => { ++ "deps" => [ ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/exchange" => { ++ "deps" => [ ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/kdfs" => { ++ "deps" => [ ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/kem" => { ++ "deps" => [ ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/keymgmt" => { ++ "deps" => [ ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/macs" => { ++ "deps" => [ ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands" => { ++ "deps" => [ ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands/seeding" => { ++ "deps" => [ ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/signature" => { ++ "deps" => [ ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/storemgmt" => { ++ "deps" => [ ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "ssl" => { ++ "deps" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/libdefault-lib-s3_cbc.o", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "ssl/record" => { ++ "deps" => [ ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libcommon.a" ++ ] ++ } ++ }, ++ "ssl/statem" => { ++ "deps" => [ ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl" ++ ] ++ } ++ }, ++ "test/helpers" => { ++ "deps" => [ ++ "test/helpers/asynciotest-bin-ssltestlib.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o", ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "test/asynciotest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/endecode_test", ++ "test/fatalerrtest", ++ "test/pkcs12_format_test", ++ "test/recordlentest", ++ "test/servername_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/tls13ccstest" ++ ] ++ } ++ }, ++ "test/testutil" => { ++ "deps" => [ ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "tools" => { ++ "products" => { ++ "script" => [ ++ "tools/c_rehash" ++ ] ++ } ++ }, ++ "util" => { ++ "products" => { ++ "script" => [ ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ] ++ } ++ } ++ }, ++ "generate" => { ++ "apps/progs.c" => [ ++ "apps/progs.pl", ++ "\"-C\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.pl", ++ "\"-H\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/aes/asm/aes-586.pl" ++ ], ++ "crypto/aes/aes-armv4.S" => [ ++ "crypto/aes/asm/aes-armv4.pl" ++ ], ++ "crypto/aes/aes-c64xplus.S" => [ ++ "crypto/aes/asm/aes-c64xplus.pl" ++ ], ++ "crypto/aes/aes-ia64.s" => [ ++ "crypto/aes/asm/aes-ia64.S" ++ ], ++ "crypto/aes/aes-sw_64.S" => [ ++ "crypto/aes/asm/aes-sw_64.pl" ++ ], ++ "crypto/aes/aes-parisc.s" => [ ++ "crypto/aes/asm/aes-parisc.pl" ++ ], ++ "crypto/aes/aes-ppc.s" => [ ++ "crypto/aes/asm/aes-ppc.pl" ++ ], ++ "crypto/aes/aes-s390x.S" => [ ++ "crypto/aes/asm/aes-s390x.pl" ++ ], ++ "crypto/aes/aes-sparcv9.S" => [ ++ "crypto/aes/asm/aes-sparcv9.pl" ++ ], ++ "crypto/aes/aes-x86_64.s" => [ ++ "crypto/aes/asm/aes-x86_64.pl" ++ ], ++ "crypto/aes/aesfx-sparcv9.S" => [ ++ "crypto/aes/asm/aesfx-sparcv9.pl" ++ ], ++ "crypto/aes/aesni-mb-x86_64.s" => [ ++ "crypto/aes/asm/aesni-mb-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha1-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha1-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha256-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha256-x86_64.pl" ++ ], ++ "crypto/aes/aesni-x86.S" => [ ++ "crypto/aes/asm/aesni-x86.pl" ++ ], ++ "crypto/aes/aesni-x86_64.s" => [ ++ "crypto/aes/asm/aesni-x86_64.pl" ++ ], ++ "crypto/aes/aesp8-ppc.s" => [ ++ "crypto/aes/asm/aesp8-ppc.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/aes/asm/aest4-sparcv9.pl" ++ ], ++ "crypto/aes/aesv8-armx.S" => [ ++ "crypto/aes/asm/aesv8-armx.pl" ++ ], ++ "crypto/aes/bsaes-armv7.S" => [ ++ "crypto/aes/asm/bsaes-armv7.pl" ++ ], ++ "crypto/aes/bsaes-x86_64.s" => [ ++ "crypto/aes/asm/bsaes-x86_64.pl" ++ ], ++ "crypto/aes/vpaes-armv8.S" => [ ++ "crypto/aes/asm/vpaes-armv8.pl" ++ ], ++ "crypto/aes/vpaes-ppc.s" => [ ++ "crypto/aes/asm/vpaes-ppc.pl" ++ ], ++ "crypto/aes/vpaes-x86.S" => [ ++ "crypto/aes/asm/vpaes-x86.pl" ++ ], ++ "crypto/aes/vpaes-x86_64.s" => [ ++ "crypto/aes/asm/vpaes-x86_64.pl" ++ ], ++ "crypto/alphacpuid.s" => [ ++ "crypto/alphacpuid.pl" ++ ], ++ "crypto/arm64cpuid.S" => [ ++ "crypto/arm64cpuid.pl" ++ ], ++ "crypto/armv4cpuid.S" => [ ++ "crypto/armv4cpuid.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/bf/asm/bf-586.pl" ++ ], ++ "crypto/bn/alpha-mont.S" => [ ++ "crypto/bn/asm/alpha-mont.pl" ++ ], ++ "crypto/bn/armv4-gf2m.S" => [ ++ "crypto/bn/asm/armv4-gf2m.pl" ++ ], ++ "crypto/bn/armv4-mont.S" => [ ++ "crypto/bn/asm/armv4-mont.pl" ++ ], ++ "crypto/bn/armv8-mont.S" => [ ++ "crypto/bn/asm/armv8-mont.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/bn/asm/bn-586.pl" ++ ], ++ "crypto/bn/bn-ia64.s" => [ ++ "crypto/bn/asm/ia64.S" ++ ], ++ "crypto/bn/bn-sw_64.S" => [ ++ "crypto/bn/asm/sw_64.pl" ++ ], ++ "crypto/bn/bn-ppc.s" => [ ++ "crypto/bn/asm/ppc.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/bn/asm/co-586.pl" ++ ], ++ "crypto/bn/ia64-mont.s" => [ ++ "crypto/bn/asm/ia64-mont.pl" ++ ], ++ "crypto/bn/sw_64-mont.S" => [ ++ "crypto/bn/asm/sw_64-mont.pl" ++ ], ++ "crypto/bn/parisc-mont.s" => [ ++ "crypto/bn/asm/parisc-mont.pl" ++ ], ++ "crypto/bn/ppc-mont.s" => [ ++ "crypto/bn/asm/ppc-mont.pl" ++ ], ++ "crypto/bn/ppc64-mont.s" => [ ++ "crypto/bn/asm/ppc64-mont.pl" ++ ], ++ "crypto/bn/rsaz-avx2.s" => [ ++ "crypto/bn/asm/rsaz-avx2.pl" ++ ], ++ "crypto/bn/rsaz-avx512.s" => [ ++ "crypto/bn/asm/rsaz-avx512.pl" ++ ], ++ "crypto/bn/rsaz-x86_64.s" => [ ++ "crypto/bn/asm/rsaz-x86_64.pl" ++ ], ++ "crypto/bn/s390x-gf2m.s" => [ ++ "crypto/bn/asm/s390x-gf2m.pl" ++ ], ++ "crypto/bn/s390x-mont.S" => [ ++ "crypto/bn/asm/s390x-mont.pl" ++ ], ++ "crypto/bn/sparct4-mont.S" => [ ++ "crypto/bn/asm/sparct4-mont.pl" ++ ], ++ "crypto/bn/sparcv9-gf2m.S" => [ ++ "crypto/bn/asm/sparcv9-gf2m.pl" ++ ], ++ "crypto/bn/sparcv9-mont.S" => [ ++ "crypto/bn/asm/sparcv9-mont.pl" ++ ], ++ "crypto/bn/sparcv9a-mont.S" => [ ++ "crypto/bn/asm/sparcv9a-mont.pl" ++ ], ++ "crypto/bn/vis3-mont.S" => [ ++ "crypto/bn/asm/vis3-mont.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/bn/asm/x86-gf2m.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/bn/asm/x86-mont.pl" ++ ], ++ "crypto/bn/x86_64-gf2m.s" => [ ++ "crypto/bn/asm/x86_64-gf2m.pl" ++ ], ++ "crypto/bn/x86_64-mont.s" => [ ++ "crypto/bn/asm/x86_64-mont.pl" ++ ], ++ "crypto/bn/x86_64-mont5.s" => [ ++ "crypto/bn/asm/x86_64-mont5.pl" ++ ], ++ "crypto/buildinf.h" => [ ++ "util/mkbuildinf.pl", ++ "\"\$(CC)", ++ "\$(LIB_CFLAGS)", ++ "\$(CPPFLAGS_Q)\"", ++ "\"\$(PLATFORM)\"" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/camellia/asm/cmll-x86.pl" ++ ], ++ "crypto/camellia/cmll-x86_64.s" => [ ++ "crypto/camellia/asm/cmll-x86_64.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/camellia/asm/cmllt4-sparcv9.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/cast/asm/cast-586.pl" ++ ], ++ "crypto/chacha/chacha-armv4.S" => [ ++ "crypto/chacha/asm/chacha-armv4.pl" ++ ], ++ "crypto/chacha/chacha-armv8.S" => [ ++ "crypto/chacha/asm/chacha-armv8.pl" ++ ], ++ "crypto/chacha/chacha-c64xplus.S" => [ ++ "crypto/chacha/asm/chacha-c64xplus.pl" ++ ], ++ "crypto/chacha/chacha-ia64.S" => [ ++ "crypto/chacha/asm/chacha-ia64.pl" ++ ], ++ "crypto/chacha/chacha-ia64.s" => [ ++ "crypto/chacha/chacha-ia64.S" ++ ], ++ "crypto/chacha/chacha-ppc.s" => [ ++ "crypto/chacha/asm/chacha-ppc.pl" ++ ], ++ "crypto/chacha/chacha-s390x.S" => [ ++ "crypto/chacha/asm/chacha-s390x.pl" ++ ], ++ "crypto/chacha/chacha-x86.S" => [ ++ "crypto/chacha/asm/chacha-x86.pl" ++ ], ++ "crypto/chacha/chacha-x86_64.s" => [ ++ "crypto/chacha/asm/chacha-x86_64.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/des/asm/crypt586.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/des/asm/des-586.pl" ++ ], ++ "crypto/des/des_enc-sparc.S" => [ ++ "crypto/des/asm/des_enc.m4" ++ ], ++ "crypto/des/dest4-sparcv9.S" => [ ++ "crypto/des/asm/dest4-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistp521-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv4.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv8.pl" ++ ], ++ "crypto/ec/ecp_nistz256-avx2.s" => [ ++ "crypto/ec/asm/ecp_nistz256-avx2.pl" ++ ], ++ "crypto/ec/ecp_nistz256-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.S" => [ ++ "crypto/ec/asm/ecp_nistz256-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86.S" => [ ++ "crypto/ec/asm/ecp_nistz256-x86.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86_64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ++ ], ++ "crypto/ec/x25519-ppc64.s" => [ ++ "crypto/ec/asm/x25519-ppc64.pl" ++ ], ++ "crypto/ec/x25519-x86_64.s" => [ ++ "crypto/ec/asm/x25519-x86_64.pl" ++ ], ++ "crypto/ia64cpuid.s" => [ ++ "crypto/ia64cpuid.S" ++ ], ++ "crypto/md5/md5-586.S" => [ ++ "crypto/md5/asm/md5-586.pl" ++ ], ++ "crypto/md5/md5-sparcv9.S" => [ ++ "crypto/md5/asm/md5-sparcv9.pl" ++ ], ++ "crypto/md5/md5-x86_64.s" => [ ++ "crypto/md5/asm/md5-x86_64.pl" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.S" => [ ++ "crypto/modes/asm/aes-gcm-armv8_64.pl" ++ ], ++ "crypto/modes/aesni-gcm-x86_64.s" => [ ++ "crypto/modes/asm/aesni-gcm-x86_64.pl" ++ ], ++ "crypto/modes/ghash-alpha.S" => [ ++ "crypto/modes/asm/ghash-alpha.pl" ++ ], ++ "crypto/modes/ghash-armv4.S" => [ ++ "crypto/modes/asm/ghash-armv4.pl" ++ ], ++ "crypto/modes/ghash-c64xplus.S" => [ ++ "crypto/modes/asm/ghash-c64xplus.pl" ++ ], ++ "crypto/modes/ghash-ia64.s" => [ ++ "crypto/modes/asm/ghash-ia64.pl" ++ ], ++ "crypto/modes/ghash-parisc.s" => [ ++ "crypto/modes/asm/ghash-parisc.pl" ++ ], ++ "crypto/modes/ghash-s390x.S" => [ ++ "crypto/modes/asm/ghash-s390x.pl" ++ ], ++ "crypto/modes/ghash-sparcv9.S" => [ ++ "crypto/modes/asm/ghash-sparcv9.pl" ++ ], ++ "crypto/modes/ghash-x86.S" => [ ++ "crypto/modes/asm/ghash-x86.pl" ++ ], ++ "crypto/modes/ghash-x86_64.s" => [ ++ "crypto/modes/asm/ghash-x86_64.pl" ++ ], ++ "crypto/modes/ghashp8-ppc.s" => [ ++ "crypto/modes/asm/ghashp8-ppc.pl" ++ ], ++ "crypto/modes/ghashv8-armx.S" => [ ++ "crypto/modes/asm/ghashv8-armx.pl" ++ ], ++ "crypto/pariscid.s" => [ ++ "crypto/pariscid.pl" ++ ], ++ "crypto/poly1305/poly1305-armv4.S" => [ ++ "crypto/poly1305/asm/poly1305-armv4.pl" ++ ], ++ "crypto/poly1305/poly1305-armv8.S" => [ ++ "crypto/poly1305/asm/poly1305-armv8.pl" ++ ], ++ "crypto/poly1305/poly1305-c64xplus.S" => [ ++ "crypto/poly1305/asm/poly1305-c64xplus.pl" ++ ], ++ "crypto/poly1305/poly1305-ia64.s" => [ ++ "crypto/poly1305/asm/poly1305-ia64.S" ++ ], ++ "crypto/poly1305/poly1305-sw_64.S" => [ ++ "crypto/poly1305/asm/poly1305-sw_64.pl" ++ ], ++ "crypto/poly1305/poly1305-ppc.s" => [ ++ "crypto/poly1305/asm/poly1305-ppc.pl" ++ ], ++ "crypto/poly1305/poly1305-ppcfp.s" => [ ++ "crypto/poly1305/asm/poly1305-ppcfp.pl" ++ ], ++ "crypto/poly1305/poly1305-s390x.S" => [ ++ "crypto/poly1305/asm/poly1305-s390x.pl" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.S" => [ ++ "crypto/poly1305/asm/poly1305-sparcv9.pl" ++ ], ++ "crypto/poly1305/poly1305-x86.S" => [ ++ "crypto/poly1305/asm/poly1305-x86.pl" ++ ], ++ "crypto/poly1305/poly1305-x86_64.s" => [ ++ "crypto/poly1305/asm/poly1305-x86_64.pl" ++ ], ++ "crypto/ppccpuid.s" => [ ++ "crypto/ppccpuid.pl" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/rc4/asm/rc4-586.pl" ++ ], ++ "crypto/rc4/rc4-c64xplus.s" => [ ++ "crypto/rc4/asm/rc4-c64xplus.pl" ++ ], ++ "crypto/rc4/rc4-md5-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-md5-x86_64.pl" ++ ], ++ "crypto/rc4/rc4-parisc.s" => [ ++ "crypto/rc4/asm/rc4-parisc.pl" ++ ], ++ "crypto/rc4/rc4-s390x.s" => [ ++ "crypto/rc4/asm/rc4-s390x.pl" ++ ], ++ "crypto/rc4/rc4-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-x86_64.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/ripemd/asm/rmd-586.pl" ++ ], ++ "crypto/s390xcpuid.S" => [ ++ "crypto/s390xcpuid.pl" ++ ], ++ "crypto/sha/keccak1600-armv4.S" => [ ++ "crypto/sha/asm/keccak1600-armv4.pl" ++ ], ++ "crypto/sha/keccak1600-armv8.S" => [ ++ "crypto/sha/asm/keccak1600-armv8.pl" ++ ], ++ "crypto/sha/keccak1600-avx2.S" => [ ++ "crypto/sha/asm/keccak1600-avx2.pl" ++ ], ++ "crypto/sha/keccak1600-avx512.S" => [ ++ "crypto/sha/asm/keccak1600-avx512.pl" ++ ], ++ "crypto/sha/keccak1600-avx512vl.S" => [ ++ "crypto/sha/asm/keccak1600-avx512vl.pl" ++ ], ++ "crypto/sha/keccak1600-c64x.S" => [ ++ "crypto/sha/asm/keccak1600-c64x.pl" ++ ], ++ "crypto/sha/keccak1600-mmx.S" => [ ++ "crypto/sha/asm/keccak1600-mmx.pl" ++ ], ++ "crypto/sha/keccak1600-ppc64.s" => [ ++ "crypto/sha/asm/keccak1600-ppc64.pl" ++ ], ++ "crypto/sha/keccak1600-s390x.S" => [ ++ "crypto/sha/asm/keccak1600-s390x.pl" ++ ], ++ "crypto/sha/keccak1600-x86_64.s" => [ ++ "crypto/sha/asm/keccak1600-x86_64.pl" ++ ], ++ "crypto/sha/keccak1600p8-ppc.S" => [ ++ "crypto/sha/asm/keccak1600p8-ppc.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/sha/asm/sha1-586.pl" ++ ], ++ "crypto/sha/sha1-alpha.S" => [ ++ "crypto/sha/asm/sha1-alpha.pl" ++ ], ++ "crypto/sha/sha1-armv4-large.S" => [ ++ "crypto/sha/asm/sha1-armv4-large.pl" ++ ], ++ "crypto/sha/sha1-armv8.S" => [ ++ "crypto/sha/asm/sha1-armv8.pl" ++ ], ++ "crypto/sha/sha1-c64xplus.S" => [ ++ "crypto/sha/asm/sha1-c64xplus.pl" ++ ], ++ "crypto/sha/sha1-ia64.s" => [ ++ "crypto/sha/asm/sha1-ia64.pl" ++ ], ++ "crypto/sha/sha1-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha1-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha1-sw_64.S" => [ ++ "crypto/sha/asm/sha1-sw_64.pl" ++ ], ++ "crypto/sha/sha1-parisc.s" => [ ++ "crypto/sha/asm/sha1-parisc.pl" ++ ], ++ "crypto/sha/sha1-ppc.s" => [ ++ "crypto/sha/asm/sha1-ppc.pl" ++ ], ++ "crypto/sha/sha1-s390x.S" => [ ++ "crypto/sha/asm/sha1-s390x.pl" ++ ], ++ "crypto/sha/sha1-sparcv9.S" => [ ++ "crypto/sha/asm/sha1-sparcv9.pl" ++ ], ++ "crypto/sha/sha1-sparcv9a.S" => [ ++ "crypto/sha/asm/sha1-sparcv9a.pl" ++ ], ++ "crypto/sha/sha1-thumb.S" => [ ++ "crypto/sha/asm/sha1-thumb.pl" ++ ], ++ "crypto/sha/sha1-x86_64.s" => [ ++ "crypto/sha/asm/sha1-x86_64.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/sha/asm/sha256-586.pl" ++ ], ++ "crypto/sha/sha256-armv4.S" => [ ++ "crypto/sha/asm/sha256-armv4.pl" ++ ], ++ "crypto/sha/sha256-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha256-c64xplus.S" => [ ++ "crypto/sha/asm/sha256-c64xplus.pl" ++ ], ++ "crypto/sha/sha256-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha256-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha256-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha256-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha256-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha256-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha256-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha256-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha256-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha256p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/sha/asm/sha512-586.pl" ++ ], ++ "crypto/sha/sha512-armv4.S" => [ ++ "crypto/sha/asm/sha512-armv4.pl" ++ ], ++ "crypto/sha/sha512-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha512-c64xplus.S" => [ ++ "crypto/sha/asm/sha512-c64xplus.pl" ++ ], ++ "crypto/sha/sha512-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha512-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha512-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha512-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha512-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha512-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha512-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha512p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/uplink-ia64.s" => [ ++ "ms/uplink-ia64.pl" ++ ], ++ "crypto/uplink-x86.S" => [ ++ "ms/uplink-x86.pl" ++ ], ++ "crypto/uplink-x86_64.s" => [ ++ "ms/uplink-x86_64.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/whrlpool/asm/wp-mmx.pl" ++ ], ++ "crypto/whrlpool/wp-x86_64.s" => [ ++ "crypto/whrlpool/asm/wp-x86_64.pl" ++ ], ++ "crypto/x86_64cpuid.s" => [ ++ "crypto/x86_64cpuid.pl" ++ ], ++ "crypto/x86cpuid.S" => [ ++ "crypto/x86cpuid.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "engines/e_padlock-x86.S" => [ ++ "engines/asm/e_padlock-x86.pl" ++ ], ++ "engines/e_padlock-x86_64.s" => [ ++ "engines/asm/e_padlock-x86_64.pl" ++ ], ++ "include/crypto/bn_conf.h" => [ ++ "include/crypto/bn_conf.h.in" ++ ], ++ "include/crypto/dso_conf.h" => [ ++ "include/crypto/dso_conf.h.in" ++ ], ++ "include/openssl/asn1.h" => [ ++ "include/openssl/asn1.h.in" ++ ], ++ "include/openssl/asn1t.h" => [ ++ "include/openssl/asn1t.h.in" ++ ], ++ "include/openssl/bio.h" => [ ++ "include/openssl/bio.h.in" ++ ], ++ "include/openssl/cmp.h" => [ ++ "include/openssl/cmp.h.in" ++ ], ++ "include/openssl/cms.h" => [ ++ "include/openssl/cms.h.in" ++ ], ++ "include/openssl/conf.h" => [ ++ "include/openssl/conf.h.in" ++ ], ++ "include/openssl/configuration.h" => [ ++ "include/openssl/configuration.h.in" ++ ], ++ "include/openssl/crmf.h" => [ ++ "include/openssl/crmf.h.in" ++ ], ++ "include/openssl/crypto.h" => [ ++ "include/openssl/crypto.h.in" ++ ], ++ "include/openssl/ct.h" => [ ++ "include/openssl/ct.h.in" ++ ], ++ "include/openssl/err.h" => [ ++ "include/openssl/err.h.in" ++ ], ++ "include/openssl/ess.h" => [ ++ "include/openssl/ess.h.in" ++ ], ++ "include/openssl/fipskey.h" => [ ++ "include/openssl/fipskey.h.in" ++ ], ++ "include/openssl/lhash.h" => [ ++ "include/openssl/lhash.h.in" ++ ], ++ "include/openssl/ocsp.h" => [ ++ "include/openssl/ocsp.h.in" ++ ], ++ "include/openssl/opensslv.h" => [ ++ "include/openssl/opensslv.h.in" ++ ], ++ "include/openssl/pkcs12.h" => [ ++ "include/openssl/pkcs12.h.in" ++ ], ++ "include/openssl/pkcs7.h" => [ ++ "include/openssl/pkcs7.h.in" ++ ], ++ "include/openssl/safestack.h" => [ ++ "include/openssl/safestack.h.in" ++ ], ++ "include/openssl/srp.h" => [ ++ "include/openssl/srp.h.in" ++ ], ++ "include/openssl/ssl.h" => [ ++ "include/openssl/ssl.h.in" ++ ], ++ "include/openssl/ui.h" => [ ++ "include/openssl/ui.h.in" ++ ], ++ "include/openssl/x509.h" => [ ++ "include/openssl/x509.h.in" ++ ], ++ "include/openssl/x509_vfy.h" => [ ++ "include/openssl/x509_vfy.h.in" ++ ], ++ "include/openssl/x509v3.h" => [ ++ "include/openssl/x509v3.h.in" ++ ], ++ "libcrypto.ld" => [ ++ "util/libcrypto.num", ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "util/libssl.num", ++ "libssl" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/der_digests_gen.c.in" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/der_dsa_gen.c.in" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/der_ec_gen.c.in" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/der_ecx_gen.c.in" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/der_rsa_gen.c.in" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/der_sm2_gen.c.in" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/der_wrap_gen.c.in" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/include/prov/der_digests.h.in" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/include/prov/der_dsa.h.in" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/include/prov/der_ec.h.in" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/include/prov/der_ecx.h.in" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/include/prov/der_rsa.h.in" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/include/prov/der_sm2.h.in" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/include/prov/der_wrap.h.in" ++ ], ++ "providers/fips.ld" => [ ++ "util/providers.num" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "util/mk-fipsmodule-cnf.pl", ++ "-module", ++ "\$(FIPSMODULE)", ++ "-section_name", ++ "fips_sect", ++ "-key", ++ "\$(FIPSKEY)" ++ ], ++ "providers/legacy.ld" => [ ++ "util/providers.num" ++ ], ++ "test/buildtest_aes.c" => [ ++ "test/generate_buildtest.pl", ++ "aes" ++ ], ++ "test/buildtest_async.c" => [ ++ "test/generate_buildtest.pl", ++ "async" ++ ], ++ "test/buildtest_blowfish.c" => [ ++ "test/generate_buildtest.pl", ++ "blowfish" ++ ], ++ "test/buildtest_bn.c" => [ ++ "test/generate_buildtest.pl", ++ "bn" ++ ], ++ "test/buildtest_buffer.c" => [ ++ "test/generate_buildtest.pl", ++ "buffer" ++ ], ++ "test/buildtest_camellia.c" => [ ++ "test/generate_buildtest.pl", ++ "camellia" ++ ], ++ "test/buildtest_cast.c" => [ ++ "test/generate_buildtest.pl", ++ "cast" ++ ], ++ "test/buildtest_cmac.c" => [ ++ "test/generate_buildtest.pl", ++ "cmac" ++ ], ++ "test/buildtest_cmp_util.c" => [ ++ "test/generate_buildtest.pl", ++ "cmp_util" ++ ], ++ "test/buildtest_conf_api.c" => [ ++ "test/generate_buildtest.pl", ++ "conf_api" ++ ], ++ "test/buildtest_conftypes.c" => [ ++ "test/generate_buildtest.pl", ++ "conftypes" ++ ], ++ "test/buildtest_core.c" => [ ++ "test/generate_buildtest.pl", ++ "core" ++ ], ++ "test/buildtest_core_dispatch.c" => [ ++ "test/generate_buildtest.pl", ++ "core_dispatch" ++ ], ++ "test/buildtest_core_names.c" => [ ++ "test/generate_buildtest.pl", ++ "core_names" ++ ], ++ "test/buildtest_core_object.c" => [ ++ "test/generate_buildtest.pl", ++ "core_object" ++ ], ++ "test/buildtest_cryptoerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "cryptoerr_legacy" ++ ], ++ "test/buildtest_decoder.c" => [ ++ "test/generate_buildtest.pl", ++ "decoder" ++ ], ++ "test/buildtest_des.c" => [ ++ "test/generate_buildtest.pl", ++ "des" ++ ], ++ "test/buildtest_dh.c" => [ ++ "test/generate_buildtest.pl", ++ "dh" ++ ], ++ "test/buildtest_dsa.c" => [ ++ "test/generate_buildtest.pl", ++ "dsa" ++ ], ++ "test/buildtest_dtls1.c" => [ ++ "test/generate_buildtest.pl", ++ "dtls1" ++ ], ++ "test/buildtest_e_os2.c" => [ ++ "test/generate_buildtest.pl", ++ "e_os2" ++ ], ++ "test/buildtest_ebcdic.c" => [ ++ "test/generate_buildtest.pl", ++ "ebcdic" ++ ], ++ "test/buildtest_ec.c" => [ ++ "test/generate_buildtest.pl", ++ "ec" ++ ], ++ "test/buildtest_ecdh.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdh" ++ ], ++ "test/buildtest_ecdsa.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdsa" ++ ], ++ "test/buildtest_encoder.c" => [ ++ "test/generate_buildtest.pl", ++ "encoder" ++ ], ++ "test/buildtest_engine.c" => [ ++ "test/generate_buildtest.pl", ++ "engine" ++ ], ++ "test/buildtest_evp.c" => [ ++ "test/generate_buildtest.pl", ++ "evp" ++ ], ++ "test/buildtest_fips_names.c" => [ ++ "test/generate_buildtest.pl", ++ "fips_names" ++ ], ++ "test/buildtest_hmac.c" => [ ++ "test/generate_buildtest.pl", ++ "hmac" ++ ], ++ "test/buildtest_http.c" => [ ++ "test/generate_buildtest.pl", ++ "http" ++ ], ++ "test/buildtest_idea.c" => [ ++ "test/generate_buildtest.pl", ++ "idea" ++ ], ++ "test/buildtest_kdf.c" => [ ++ "test/generate_buildtest.pl", ++ "kdf" ++ ], ++ "test/buildtest_macros.c" => [ ++ "test/generate_buildtest.pl", ++ "macros" ++ ], ++ "test/buildtest_md4.c" => [ ++ "test/generate_buildtest.pl", ++ "md4" ++ ], ++ "test/buildtest_md5.c" => [ ++ "test/generate_buildtest.pl", ++ "md5" ++ ], ++ "test/buildtest_mdc2.c" => [ ++ "test/generate_buildtest.pl", ++ "mdc2" ++ ], ++ "test/buildtest_modes.c" => [ ++ "test/generate_buildtest.pl", ++ "modes" ++ ], ++ "test/buildtest_obj_mac.c" => [ ++ "test/generate_buildtest.pl", ++ "obj_mac" ++ ], ++ "test/buildtest_objects.c" => [ ++ "test/generate_buildtest.pl", ++ "objects" ++ ], ++ "test/buildtest_ossl_typ.c" => [ ++ "test/generate_buildtest.pl", ++ "ossl_typ" ++ ], ++ "test/buildtest_param_build.c" => [ ++ "test/generate_buildtest.pl", ++ "param_build" ++ ], ++ "test/buildtest_params.c" => [ ++ "test/generate_buildtest.pl", ++ "params" ++ ], ++ "test/buildtest_pem.c" => [ ++ "test/generate_buildtest.pl", ++ "pem" ++ ], ++ "test/buildtest_pem2.c" => [ ++ "test/generate_buildtest.pl", ++ "pem2" ++ ], ++ "test/buildtest_prov_ssl.c" => [ ++ "test/generate_buildtest.pl", ++ "prov_ssl" ++ ], ++ "test/buildtest_provider.c" => [ ++ "test/generate_buildtest.pl", ++ "provider" ++ ], ++ "test/buildtest_quic.c" => [ ++ "test/generate_buildtest.pl", ++ "quic" ++ ], ++ "test/buildtest_rand.c" => [ ++ "test/generate_buildtest.pl", ++ "rand" ++ ], ++ "test/buildtest_rc2.c" => [ ++ "test/generate_buildtest.pl", ++ "rc2" ++ ], ++ "test/buildtest_rc4.c" => [ ++ "test/generate_buildtest.pl", ++ "rc4" ++ ], ++ "test/buildtest_ripemd.c" => [ ++ "test/generate_buildtest.pl", ++ "ripemd" ++ ], ++ "test/buildtest_rsa.c" => [ ++ "test/generate_buildtest.pl", ++ "rsa" ++ ], ++ "test/buildtest_seed.c" => [ ++ "test/generate_buildtest.pl", ++ "seed" ++ ], ++ "test/buildtest_self_test.c" => [ ++ "test/generate_buildtest.pl", ++ "self_test" ++ ], ++ "test/buildtest_sha.c" => [ ++ "test/generate_buildtest.pl", ++ "sha" ++ ], ++ "test/buildtest_srtp.c" => [ ++ "test/generate_buildtest.pl", ++ "srtp" ++ ], ++ "test/buildtest_ssl2.c" => [ ++ "test/generate_buildtest.pl", ++ "ssl2" ++ ], ++ "test/buildtest_sslerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "sslerr_legacy" ++ ], ++ "test/buildtest_stack.c" => [ ++ "test/generate_buildtest.pl", ++ "stack" ++ ], ++ "test/buildtest_store.c" => [ ++ "test/generate_buildtest.pl", ++ "store" ++ ], ++ "test/buildtest_symhacks.c" => [ ++ "test/generate_buildtest.pl", ++ "symhacks" ++ ], ++ "test/buildtest_tls1.c" => [ ++ "test/generate_buildtest.pl", ++ "tls1" ++ ], ++ "test/buildtest_ts.c" => [ ++ "test/generate_buildtest.pl", ++ "ts" ++ ], ++ "test/buildtest_txt_db.c" => [ ++ "test/generate_buildtest.pl", ++ "txt_db" ++ ], ++ "test/buildtest_types.c" => [ ++ "test/generate_buildtest.pl", ++ "types" ++ ], ++ "test/buildtest_whrlpool.c" => [ ++ "test/generate_buildtest.pl", ++ "whrlpool" ++ ], ++ "test/p_test.ld" => [ ++ "util/providers.num" ++ ], ++ "test/provider_internal_test.cnf" => [ ++ "test/provider_internal_test.cnf.in" ++ ] ++ }, ++ "htmldocs" => { ++ "man1" => [ ++ "doc/html/man1/CA.pl.html", ++ "doc/html/man1/openssl-asn1parse.html", ++ "doc/html/man1/openssl-ca.html", ++ "doc/html/man1/openssl-ciphers.html", ++ "doc/html/man1/openssl-cmds.html", ++ "doc/html/man1/openssl-cmp.html", ++ "doc/html/man1/openssl-cms.html", ++ "doc/html/man1/openssl-crl.html", ++ "doc/html/man1/openssl-crl2pkcs7.html", ++ "doc/html/man1/openssl-dgst.html", ++ "doc/html/man1/openssl-dhparam.html", ++ "doc/html/man1/openssl-dsa.html", ++ "doc/html/man1/openssl-dsaparam.html", ++ "doc/html/man1/openssl-ec.html", ++ "doc/html/man1/openssl-ecparam.html", ++ "doc/html/man1/openssl-enc.html", ++ "doc/html/man1/openssl-engine.html", ++ "doc/html/man1/openssl-errstr.html", ++ "doc/html/man1/openssl-fipsinstall.html", ++ "doc/html/man1/openssl-format-options.html", ++ "doc/html/man1/openssl-gendsa.html", ++ "doc/html/man1/openssl-genpkey.html", ++ "doc/html/man1/openssl-genrsa.html", ++ "doc/html/man1/openssl-info.html", ++ "doc/html/man1/openssl-kdf.html", ++ "doc/html/man1/openssl-list.html", ++ "doc/html/man1/openssl-mac.html", ++ "doc/html/man1/openssl-namedisplay-options.html", ++ "doc/html/man1/openssl-nseq.html", ++ "doc/html/man1/openssl-ocsp.html", ++ "doc/html/man1/openssl-passphrase-options.html", ++ "doc/html/man1/openssl-passwd.html", ++ "doc/html/man1/openssl-pkcs12.html", ++ "doc/html/man1/openssl-pkcs7.html", ++ "doc/html/man1/openssl-pkcs8.html", ++ "doc/html/man1/openssl-pkey.html", ++ "doc/html/man1/openssl-pkeyparam.html", ++ "doc/html/man1/openssl-pkeyutl.html", ++ "doc/html/man1/openssl-prime.html", ++ "doc/html/man1/openssl-rand.html", ++ "doc/html/man1/openssl-rehash.html", ++ "doc/html/man1/openssl-req.html", ++ "doc/html/man1/openssl-rsa.html", ++ "doc/html/man1/openssl-rsautl.html", ++ "doc/html/man1/openssl-s_client.html", ++ "doc/html/man1/openssl-s_server.html", ++ "doc/html/man1/openssl-s_time.html", ++ "doc/html/man1/openssl-sess_id.html", ++ "doc/html/man1/openssl-smime.html", ++ "doc/html/man1/openssl-speed.html", ++ "doc/html/man1/openssl-spkac.html", ++ "doc/html/man1/openssl-srp.html", ++ "doc/html/man1/openssl-storeutl.html", ++ "doc/html/man1/openssl-ts.html", ++ "doc/html/man1/openssl-verification-options.html", ++ "doc/html/man1/openssl-verify.html", ++ "doc/html/man1/openssl-version.html", ++ "doc/html/man1/openssl-x509.html", ++ "doc/html/man1/openssl.html", ++ "doc/html/man1/tsget.html" ++ ], ++ "man3" => [ ++ "doc/html/man3/ADMISSIONS.html", ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html", ++ "doc/html/man3/ASN1_INTEGER_get_int64.html", ++ "doc/html/man3/ASN1_INTEGER_new.html", ++ "doc/html/man3/ASN1_ITEM_lookup.html", ++ "doc/html/man3/ASN1_OBJECT_new.html", ++ "doc/html/man3/ASN1_STRING_TABLE_add.html", ++ "doc/html/man3/ASN1_STRING_length.html", ++ "doc/html/man3/ASN1_STRING_new.html", ++ "doc/html/man3/ASN1_STRING_print_ex.html", ++ "doc/html/man3/ASN1_TIME_set.html", ++ "doc/html/man3/ASN1_TYPE_get.html", ++ "doc/html/man3/ASN1_aux_cb.html", ++ "doc/html/man3/ASN1_generate_nconf.html", ++ "doc/html/man3/ASN1_item_d2i_bio.html", ++ "doc/html/man3/ASN1_item_new.html", ++ "doc/html/man3/ASN1_item_sign.html", ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html", ++ "doc/html/man3/ASYNC_start_job.html", ++ "doc/html/man3/BF_encrypt.html", ++ "doc/html/man3/BIO_ADDR.html", ++ "doc/html/man3/BIO_ADDRINFO.html", ++ "doc/html/man3/BIO_connect.html", ++ "doc/html/man3/BIO_ctrl.html", ++ "doc/html/man3/BIO_f_base64.html", ++ "doc/html/man3/BIO_f_buffer.html", ++ "doc/html/man3/BIO_f_cipher.html", ++ "doc/html/man3/BIO_f_md.html", ++ "doc/html/man3/BIO_f_null.html", ++ "doc/html/man3/BIO_f_prefix.html", ++ "doc/html/man3/BIO_f_readbuffer.html", ++ "doc/html/man3/BIO_f_ssl.html", ++ "doc/html/man3/BIO_find_type.html", ++ "doc/html/man3/BIO_get_data.html", ++ "doc/html/man3/BIO_get_ex_new_index.html", ++ "doc/html/man3/BIO_meth_new.html", ++ "doc/html/man3/BIO_new.html", ++ "doc/html/man3/BIO_new_CMS.html", ++ "doc/html/man3/BIO_parse_hostserv.html", ++ "doc/html/man3/BIO_printf.html", ++ "doc/html/man3/BIO_push.html", ++ "doc/html/man3/BIO_read.html", ++ "doc/html/man3/BIO_s_accept.html", ++ "doc/html/man3/BIO_s_bio.html", ++ "doc/html/man3/BIO_s_connect.html", ++ "doc/html/man3/BIO_s_core.html", ++ "doc/html/man3/BIO_s_fd.html", ++ "doc/html/man3/BIO_s_file.html", ++ "doc/html/man3/BIO_s_mem.html", ++ "doc/html/man3/BIO_s_null.html", ++ "doc/html/man3/BIO_s_socket.html", ++ "doc/html/man3/BIO_set_callback.html", ++ "doc/html/man3/BIO_should_retry.html", ++ "doc/html/man3/BIO_socket_wait.html", ++ "doc/html/man3/BN_BLINDING_new.html", ++ "doc/html/man3/BN_CTX_new.html", ++ "doc/html/man3/BN_CTX_start.html", ++ "doc/html/man3/BN_add.html", ++ "doc/html/man3/BN_add_word.html", ++ "doc/html/man3/BN_bn2bin.html", ++ "doc/html/man3/BN_cmp.html", ++ "doc/html/man3/BN_copy.html", ++ "doc/html/man3/BN_generate_prime.html", ++ "doc/html/man3/BN_mod_exp_mont.html", ++ "doc/html/man3/BN_mod_inverse.html", ++ "doc/html/man3/BN_mod_mul_montgomery.html", ++ "doc/html/man3/BN_mod_mul_reciprocal.html", ++ "doc/html/man3/BN_new.html", ++ "doc/html/man3/BN_num_bytes.html", ++ "doc/html/man3/BN_rand.html", ++ "doc/html/man3/BN_security_bits.html", ++ "doc/html/man3/BN_set_bit.html", ++ "doc/html/man3/BN_swap.html", ++ "doc/html/man3/BN_zero.html", ++ "doc/html/man3/BUF_MEM_new.html", ++ "doc/html/man3/CMS_EncryptedData_decrypt.html", ++ "doc/html/man3/CMS_EncryptedData_encrypt.html", ++ "doc/html/man3/CMS_EnvelopedData_create.html", ++ "doc/html/man3/CMS_add0_cert.html", ++ "doc/html/man3/CMS_add1_recipient_cert.html", ++ "doc/html/man3/CMS_add1_signer.html", ++ "doc/html/man3/CMS_compress.html", ++ "doc/html/man3/CMS_data_create.html", ++ "doc/html/man3/CMS_decrypt.html", ++ "doc/html/man3/CMS_digest_create.html", ++ "doc/html/man3/CMS_encrypt.html", ++ "doc/html/man3/CMS_final.html", ++ "doc/html/man3/CMS_get0_RecipientInfos.html", ++ "doc/html/man3/CMS_get0_SignerInfos.html", ++ "doc/html/man3/CMS_get0_type.html", ++ "doc/html/man3/CMS_get1_ReceiptRequest.html", ++ "doc/html/man3/CMS_sign.html", ++ "doc/html/man3/CMS_sign_receipt.html", ++ "doc/html/man3/CMS_uncompress.html", ++ "doc/html/man3/CMS_verify.html", ++ "doc/html/man3/CMS_verify_receipt.html", ++ "doc/html/man3/CONF_modules_free.html", ++ "doc/html/man3/CONF_modules_load_file.html", ++ "doc/html/man3/CRYPTO_THREAD_run_once.html", ++ "doc/html/man3/CRYPTO_get_ex_new_index.html", ++ "doc/html/man3/CRYPTO_memcmp.html", ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html", ++ "doc/html/man3/CTLOG_STORE_new.html", ++ "doc/html/man3/CTLOG_new.html", ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html", ++ "doc/html/man3/DEFINE_STACK_OF.html", ++ "doc/html/man3/DES_random_key.html", ++ "doc/html/man3/DH_generate_key.html", ++ "doc/html/man3/DH_generate_parameters.html", ++ "doc/html/man3/DH_get0_pqg.html", ++ "doc/html/man3/DH_get_1024_160.html", ++ "doc/html/man3/DH_meth_new.html", ++ "doc/html/man3/DH_new.html", ++ "doc/html/man3/DH_new_by_nid.html", ++ "doc/html/man3/DH_set_method.html", ++ "doc/html/man3/DH_size.html", ++ "doc/html/man3/DSA_SIG_new.html", ++ "doc/html/man3/DSA_do_sign.html", ++ "doc/html/man3/DSA_dup_DH.html", ++ "doc/html/man3/DSA_generate_key.html", ++ "doc/html/man3/DSA_generate_parameters.html", ++ "doc/html/man3/DSA_get0_pqg.html", ++ "doc/html/man3/DSA_meth_new.html", ++ "doc/html/man3/DSA_new.html", ++ "doc/html/man3/DSA_set_method.html", ++ "doc/html/man3/DSA_sign.html", ++ "doc/html/man3/DSA_size.html", ++ "doc/html/man3/DTLS_get_data_mtu.html", ++ "doc/html/man3/DTLS_set_timer_cb.html", ++ "doc/html/man3/DTLSv1_listen.html", ++ "doc/html/man3/ECDSA_SIG_new.html", ++ "doc/html/man3/ECPKParameters_print.html", ++ "doc/html/man3/EC_GFp_simple_method.html", ++ "doc/html/man3/EC_GROUP_copy.html", ++ "doc/html/man3/EC_GROUP_new.html", ++ "doc/html/man3/EC_KEY_get_enc_flags.html", ++ "doc/html/man3/EC_KEY_new.html", ++ "doc/html/man3/EC_POINT_add.html", ++ "doc/html/man3/EC_POINT_new.html", ++ "doc/html/man3/ENGINE_add.html", ++ "doc/html/man3/ERR_GET_LIB.html", ++ "doc/html/man3/ERR_clear_error.html", ++ "doc/html/man3/ERR_error_string.html", ++ "doc/html/man3/ERR_get_error.html", ++ "doc/html/man3/ERR_load_crypto_strings.html", ++ "doc/html/man3/ERR_load_strings.html", ++ "doc/html/man3/ERR_new.html", ++ "doc/html/man3/ERR_print_errors.html", ++ "doc/html/man3/ERR_put_error.html", ++ "doc/html/man3/ERR_remove_state.html", ++ "doc/html/man3/ERR_set_mark.html", ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html", ++ "doc/html/man3/EVP_BytesToKey.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html", ++ "doc/html/man3/EVP_CIPHER_meth_new.html", ++ "doc/html/man3/EVP_DigestInit.html", ++ "doc/html/man3/EVP_DigestSignInit.html", ++ "doc/html/man3/EVP_DigestVerifyInit.html", ++ "doc/html/man3/EVP_EncodeInit.html", ++ "doc/html/man3/EVP_EncryptInit.html", ++ "doc/html/man3/EVP_KDF.html", ++ "doc/html/man3/EVP_KEM_free.html", ++ "doc/html/man3/EVP_KEYEXCH_free.html", ++ "doc/html/man3/EVP_KEYMGMT.html", ++ "doc/html/man3/EVP_MAC.html", ++ "doc/html/man3/EVP_MD_meth_new.html", ++ "doc/html/man3/EVP_OpenInit.html", ++ "doc/html/man3/EVP_PBE_CipherInit.html", ++ "doc/html/man3/EVP_PKEY2PKCS8.html", ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html", ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html", ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", ++ "doc/html/man3/EVP_PKEY_CTX_new.html", ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html", ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html", ++ "doc/html/man3/EVP_PKEY_check.html", ++ "doc/html/man3/EVP_PKEY_copy_parameters.html", ++ "doc/html/man3/EVP_PKEY_decapsulate.html", ++ "doc/html/man3/EVP_PKEY_decrypt.html", ++ "doc/html/man3/EVP_PKEY_derive.html", ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html", ++ "doc/html/man3/EVP_PKEY_encapsulate.html", ++ "doc/html/man3/EVP_PKEY_encrypt.html", ++ "doc/html/man3/EVP_PKEY_fromdata.html", ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html", ++ "doc/html/man3/EVP_PKEY_get_field_type.html", ++ "doc/html/man3/EVP_PKEY_get_group_name.html", ++ "doc/html/man3/EVP_PKEY_get_size.html", ++ "doc/html/man3/EVP_PKEY_gettable_params.html", ++ "doc/html/man3/EVP_PKEY_is_a.html", ++ "doc/html/man3/EVP_PKEY_keygen.html", ++ "doc/html/man3/EVP_PKEY_meth_get_count.html", ++ "doc/html/man3/EVP_PKEY_meth_new.html", ++ "doc/html/man3/EVP_PKEY_new.html", ++ "doc/html/man3/EVP_PKEY_print_private.html", ++ "doc/html/man3/EVP_PKEY_set1_RSA.html", ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html", ++ "doc/html/man3/EVP_PKEY_set_type.html", ++ "doc/html/man3/EVP_PKEY_settable_params.html", ++ "doc/html/man3/EVP_PKEY_sign.html", ++ "doc/html/man3/EVP_PKEY_todata.html", ++ "doc/html/man3/EVP_PKEY_verify.html", ++ "doc/html/man3/EVP_PKEY_verify_recover.html", ++ "doc/html/man3/EVP_RAND.html", ++ "doc/html/man3/EVP_SIGNATURE.html", ++ "doc/html/man3/EVP_SealInit.html", ++ "doc/html/man3/EVP_SignInit.html", ++ "doc/html/man3/EVP_VerifyInit.html", ++ "doc/html/man3/EVP_aes_128_gcm.html", ++ "doc/html/man3/EVP_aria_128_gcm.html", ++ "doc/html/man3/EVP_bf_cbc.html", ++ "doc/html/man3/EVP_blake2b512.html", ++ "doc/html/man3/EVP_camellia_128_ecb.html", ++ "doc/html/man3/EVP_cast5_cbc.html", ++ "doc/html/man3/EVP_chacha20.html", ++ "doc/html/man3/EVP_des_cbc.html", ++ "doc/html/man3/EVP_desx_cbc.html", ++ "doc/html/man3/EVP_idea_cbc.html", ++ "doc/html/man3/EVP_md2.html", ++ "doc/html/man3/EVP_md4.html", ++ "doc/html/man3/EVP_md5.html", ++ "doc/html/man3/EVP_mdc2.html", ++ "doc/html/man3/EVP_rc2_cbc.html", ++ "doc/html/man3/EVP_rc4.html", ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html", ++ "doc/html/man3/EVP_ripemd160.html", ++ "doc/html/man3/EVP_seed_cbc.html", ++ "doc/html/man3/EVP_set_default_properties.html", ++ "doc/html/man3/EVP_sha1.html", ++ "doc/html/man3/EVP_sha224.html", ++ "doc/html/man3/EVP_sha3_224.html", ++ "doc/html/man3/EVP_sm3.html", ++ "doc/html/man3/EVP_sm4_cbc.html", ++ "doc/html/man3/EVP_whirlpool.html", ++ "doc/html/man3/HMAC.html", ++ "doc/html/man3/MD5.html", ++ "doc/html/man3/MDC2_Init.html", ++ "doc/html/man3/NCONF_new_ex.html", ++ "doc/html/man3/OBJ_nid2obj.html", ++ "doc/html/man3/OCSP_REQUEST_new.html", ++ "doc/html/man3/OCSP_cert_to_id.html", ++ "doc/html/man3/OCSP_request_add1_nonce.html", ++ "doc/html/man3/OCSP_resp_find_status.html", ++ "doc/html/man3/OCSP_response_status.html", ++ "doc/html/man3/OCSP_sendreq_new.html", ++ "doc/html/man3/OPENSSL_Applink.html", ++ "doc/html/man3/OPENSSL_FILE.html", ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html", ++ "doc/html/man3/OPENSSL_LH_stats.html", ++ "doc/html/man3/OPENSSL_config.html", ++ "doc/html/man3/OPENSSL_fork_prepare.html", ++ "doc/html/man3/OPENSSL_hexchar2int.html", ++ "doc/html/man3/OPENSSL_ia32cap.html", ++ "doc/html/man3/OPENSSL_init_crypto.html", ++ "doc/html/man3/OPENSSL_init_ssl.html", ++ "doc/html/man3/OPENSSL_instrument_bus.html", ++ "doc/html/man3/OPENSSL_load_builtin_modules.html", ++ "doc/html/man3/OPENSSL_malloc.html", ++ "doc/html/man3/OPENSSL_s390xcap.html", ++ "doc/html/man3/OPENSSL_secure_malloc.html", ++ "doc/html/man3/OPENSSL_strcasecmp.html", ++ "doc/html/man3/OSSL_CMP_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html", ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html", ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html", ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html", ++ "doc/html/man3/OSSL_CMP_exec_certreq.html", ++ "doc/html/man3/OSSL_CMP_log_open.html", ++ "doc/html/man3/OSSL_CMP_validate_msg.html", ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html", ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html", ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html", ++ "doc/html/man3/OSSL_DECODER.html", ++ "doc/html/man3/OSSL_DECODER_CTX.html", ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_DECODER_from_bio.html", ++ "doc/html/man3/OSSL_ENCODER.html", ++ "doc/html/man3/OSSL_ENCODER_CTX.html", ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_ENCODER_to_bio.html", ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html", ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html", ++ "doc/html/man3/OSSL_HTTP_parse_url.html", ++ "doc/html/man3/OSSL_HTTP_transfer.html", ++ "doc/html/man3/OSSL_LIB_CTX.html", ++ "doc/html/man3/OSSL_PARAM.html", ++ "doc/html/man3/OSSL_PARAM_BLD.html", ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html", ++ "doc/html/man3/OSSL_PARAM_dup.html", ++ "doc/html/man3/OSSL_PARAM_int.html", ++ "doc/html/man3/OSSL_PROVIDER.html", ++ "doc/html/man3/OSSL_SELF_TEST_new.html", ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html", ++ "doc/html/man3/OSSL_STORE_INFO.html", ++ "doc/html/man3/OSSL_STORE_LOADER.html", ++ "doc/html/man3/OSSL_STORE_SEARCH.html", ++ "doc/html/man3/OSSL_STORE_attach.html", ++ "doc/html/man3/OSSL_STORE_expect.html", ++ "doc/html/man3/OSSL_STORE_open.html", ++ "doc/html/man3/OSSL_trace_enabled.html", ++ "doc/html/man3/OSSL_trace_get_category_num.html", ++ "doc/html/man3/OSSL_trace_set_channel.html", ++ "doc/html/man3/OpenSSL_add_all_algorithms.html", ++ "doc/html/man3/OpenSSL_version.html", ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", ++ "doc/html/man3/PEM_bytes_read_bio.html", ++ "doc/html/man3/PEM_read.html", ++ "doc/html/man3/PEM_read_CMS.html", ++ "doc/html/man3/PEM_read_bio_PrivateKey.html", ++ "doc/html/man3/PEM_read_bio_ex.html", ++ "doc/html/man3/PEM_write_bio_CMS_stream.html", ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html", ++ "doc/html/man3/PKCS12_PBE_keyivgen.html", ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html", ++ "doc/html/man3/PKCS12_add_CSPName_asc.html", ++ "doc/html/man3/PKCS12_add_cert.html", ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html", ++ "doc/html/man3/PKCS12_add_localkeyid.html", ++ "doc/html/man3/PKCS12_add_safe.html", ++ "doc/html/man3/PKCS12_create.html", ++ "doc/html/man3/PKCS12_decrypt_skey.html", ++ "doc/html/man3/PKCS12_gen_mac.html", ++ "doc/html/man3/PKCS12_get_friendlyname.html", ++ "doc/html/man3/PKCS12_init.html", ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html", ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html", ++ "doc/html/man3/PKCS12_newpass.html", ++ "doc/html/man3/PKCS12_pack_p7encdata.html", ++ "doc/html/man3/PKCS12_parse.html", ++ "doc/html/man3/PKCS5_PBE_keyivgen.html", ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html", ++ "doc/html/man3/PKCS7_decrypt.html", ++ "doc/html/man3/PKCS7_encrypt.html", ++ "doc/html/man3/PKCS7_get_octet_string.html", ++ "doc/html/man3/PKCS7_sign.html", ++ "doc/html/man3/PKCS7_sign_add_signer.html", ++ "doc/html/man3/PKCS7_type_is_other.html", ++ "doc/html/man3/PKCS7_verify.html", ++ "doc/html/man3/PKCS8_encrypt.html", ++ "doc/html/man3/PKCS8_pkey_add1_attr.html", ++ "doc/html/man3/RAND_add.html", ++ "doc/html/man3/RAND_bytes.html", ++ "doc/html/man3/RAND_cleanup.html", ++ "doc/html/man3/RAND_egd.html", ++ "doc/html/man3/RAND_get0_primary.html", ++ "doc/html/man3/RAND_load_file.html", ++ "doc/html/man3/RAND_set_DRBG_type.html", ++ "doc/html/man3/RAND_set_rand_method.html", ++ "doc/html/man3/RC4_set_key.html", ++ "doc/html/man3/RIPEMD160_Init.html", ++ "doc/html/man3/RSA_blinding_on.html", ++ "doc/html/man3/RSA_check_key.html", ++ "doc/html/man3/RSA_generate_key.html", ++ "doc/html/man3/RSA_get0_key.html", ++ "doc/html/man3/RSA_meth_new.html", ++ "doc/html/man3/RSA_new.html", ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html", ++ "doc/html/man3/RSA_print.html", ++ "doc/html/man3/RSA_private_encrypt.html", ++ "doc/html/man3/RSA_public_encrypt.html", ++ "doc/html/man3/RSA_set_method.html", ++ "doc/html/man3/RSA_sign.html", ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html", ++ "doc/html/man3/RSA_size.html", ++ "doc/html/man3/SCT_new.html", ++ "doc/html/man3/SCT_print.html", ++ "doc/html/man3/SCT_validate.html", ++ "doc/html/man3/SHA256_Init.html", ++ "doc/html/man3/SMIME_read_ASN1.html", ++ "doc/html/man3/SMIME_read_CMS.html", ++ "doc/html/man3/SMIME_read_PKCS7.html", ++ "doc/html/man3/SMIME_write_ASN1.html", ++ "doc/html/man3/SMIME_write_CMS.html", ++ "doc/html/man3/SMIME_write_PKCS7.html", ++ "doc/html/man3/SRP_Calc_B.html", ++ "doc/html/man3/SRP_VBASE_new.html", ++ "doc/html/man3/SRP_create_verifier.html", ++ "doc/html/man3/SRP_user_pwd_new.html", ++ "doc/html/man3/SSL_CIPHER_get_name.html", ++ "doc/html/man3/SSL_COMP_add_compression_method.html", ++ "doc/html/man3/SSL_CONF_CTX_new.html", ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html", ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html", ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html", ++ "doc/html/man3/SSL_CONF_cmd.html", ++ "doc/html/man3/SSL_CONF_cmd_argv.html", ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_session.html", ++ "doc/html/man3/SSL_CTX_config.html", ++ "doc/html/man3/SSL_CTX_ctrl.html", ++ "doc/html/man3/SSL_CTX_dane_enable.html", ++ "doc/html/man3/SSL_CTX_flush_sessions.html", ++ "doc/html/man3/SSL_CTX_free.html", ++ "doc/html/man3/SSL_CTX_get0_param.html", ++ "doc/html/man3/SSL_CTX_get_verify_mode.html", ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html", ++ "doc/html/man3/SSL_CTX_load_verify_locations.html", ++ "doc/html/man3/SSL_CTX_new.html", ++ "doc/html/man3/SSL_CTX_sess_number.html", ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html", ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html", ++ "doc/html/man3/SSL_CTX_sessions.html", ++ "doc/html/man3/SSL_CTX_set0_CA_list.html", ++ "doc/html/man3/SSL_CTX_set1_curves.html", ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html", ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html", ++ "doc/html/man3/SSL_CTX_set_cipher_list.html", ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html", ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html", ++ "doc/html/man3/SSL_CTX_set_info_callback.html", ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html", ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html", ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html", ++ "doc/html/man3/SSL_CTX_set_mode.html", ++ "doc/html/man3/SSL_CTX_set_msg_callback.html", ++ "doc/html/man3/SSL_CTX_set_num_tickets.html", ++ "doc/html/man3/SSL_CTX_set_options.html", ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html", ++ "doc/html/man3/SSL_CTX_set_quic_method.html", ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html", ++ "doc/html/man3/SSL_CTX_set_read_ahead.html", ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html", ++ "doc/html/man3/SSL_CTX_set_security_level.html", ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html", ++ "doc/html/man3/SSL_CTX_set_session_id_context.html", ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html", ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html", ++ "doc/html/man3/SSL_CTX_set_srp_password.html", ++ "doc/html/man3/SSL_CTX_set_ssl_version.html", ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html", ++ "doc/html/man3/SSL_CTX_set_timeout.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html", ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html", ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html", ++ "doc/html/man3/SSL_CTX_set_verify.html", ++ "doc/html/man3/SSL_CTX_use_certificate.html", ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html", ++ "doc/html/man3/SSL_CTX_use_serverinfo.html", ++ "doc/html/man3/SSL_SESSION_free.html", ++ "doc/html/man3/SSL_SESSION_get0_cipher.html", ++ "doc/html/man3/SSL_SESSION_get0_hostname.html", ++ "doc/html/man3/SSL_SESSION_get0_id_context.html", ++ "doc/html/man3/SSL_SESSION_get0_peer.html", ++ "doc/html/man3/SSL_SESSION_get_compress_id.html", ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html", ++ "doc/html/man3/SSL_SESSION_get_time.html", ++ "doc/html/man3/SSL_SESSION_has_ticket.html", ++ "doc/html/man3/SSL_SESSION_is_resumable.html", ++ "doc/html/man3/SSL_SESSION_print.html", ++ "doc/html/man3/SSL_SESSION_set1_id.html", ++ "doc/html/man3/SSL_accept.html", ++ "doc/html/man3/SSL_alert_type_string.html", ++ "doc/html/man3/SSL_alloc_buffers.html", ++ "doc/html/man3/SSL_check_chain.html", ++ "doc/html/man3/SSL_clear.html", ++ "doc/html/man3/SSL_connect.html", ++ "doc/html/man3/SSL_do_handshake.html", ++ "doc/html/man3/SSL_export_keying_material.html", ++ "doc/html/man3/SSL_extension_supported.html", ++ "doc/html/man3/SSL_free.html", ++ "doc/html/man3/SSL_get0_peer_scts.html", ++ "doc/html/man3/SSL_get_SSL_CTX.html", ++ "doc/html/man3/SSL_get_all_async_fds.html", ++ "doc/html/man3/SSL_get_certificate.html", ++ "doc/html/man3/SSL_get_ciphers.html", ++ "doc/html/man3/SSL_get_client_random.html", ++ "doc/html/man3/SSL_get_current_cipher.html", ++ "doc/html/man3/SSL_get_default_timeout.html", ++ "doc/html/man3/SSL_get_error.html", ++ "doc/html/man3/SSL_get_extms_support.html", ++ "doc/html/man3/SSL_get_fd.html", ++ "doc/html/man3/SSL_get_peer_cert_chain.html", ++ "doc/html/man3/SSL_get_peer_certificate.html", ++ "doc/html/man3/SSL_get_peer_signature_nid.html", ++ "doc/html/man3/SSL_get_peer_tmp_key.html", ++ "doc/html/man3/SSL_get_psk_identity.html", ++ "doc/html/man3/SSL_get_rbio.html", ++ "doc/html/man3/SSL_get_session.html", ++ "doc/html/man3/SSL_get_shared_sigalgs.html", ++ "doc/html/man3/SSL_get_verify_result.html", ++ "doc/html/man3/SSL_get_version.html", ++ "doc/html/man3/SSL_group_to_name.html", ++ "doc/html/man3/SSL_in_init.html", ++ "doc/html/man3/SSL_key_update.html", ++ "doc/html/man3/SSL_library_init.html", ++ "doc/html/man3/SSL_load_client_CA_file.html", ++ "doc/html/man3/SSL_new.html", ++ "doc/html/man3/SSL_pending.html", ++ "doc/html/man3/SSL_read.html", ++ "doc/html/man3/SSL_read_early_data.html", ++ "doc/html/man3/SSL_rstate_string.html", ++ "doc/html/man3/SSL_session_reused.html", ++ "doc/html/man3/SSL_set1_host.html", ++ "doc/html/man3/SSL_set_async_callback.html", ++ "doc/html/man3/SSL_set_bio.html", ++ "doc/html/man3/SSL_set_connect_state.html", ++ "doc/html/man3/SSL_set_fd.html", ++ "doc/html/man3/SSL_set_retry_verify.html", ++ "doc/html/man3/SSL_set_session.html", ++ "doc/html/man3/SSL_set_shutdown.html", ++ "doc/html/man3/SSL_set_verify_result.html", ++ "doc/html/man3/SSL_shutdown.html", ++ "doc/html/man3/SSL_state_string.html", ++ "doc/html/man3/SSL_want.html", ++ "doc/html/man3/SSL_write.html", ++ "doc/html/man3/TS_RESP_CTX_new.html", ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html", ++ "doc/html/man3/UI_STRING.html", ++ "doc/html/man3/UI_UTIL_read_pw.html", ++ "doc/html/man3/UI_create_method.html", ++ "doc/html/man3/UI_new.html", ++ "doc/html/man3/X509V3_get_d2i.html", ++ "doc/html/man3/X509V3_set_ctx.html", ++ "doc/html/man3/X509_ALGOR_dup.html", ++ "doc/html/man3/X509_CRL_get0_by_serial.html", ++ "doc/html/man3/X509_EXTENSION_set_object.html", ++ "doc/html/man3/X509_LOOKUP.html", ++ "doc/html/man3/X509_LOOKUP_hash_dir.html", ++ "doc/html/man3/X509_LOOKUP_meth_new.html", ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html", ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html", ++ "doc/html/man3/X509_NAME_get0_der.html", ++ "doc/html/man3/X509_NAME_get_index_by_NID.html", ++ "doc/html/man3/X509_NAME_print_ex.html", ++ "doc/html/man3/X509_PUBKEY_new.html", ++ "doc/html/man3/X509_SIG_get0.html", ++ "doc/html/man3/X509_STORE_CTX_get_error.html", ++ "doc/html/man3/X509_STORE_CTX_new.html", ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", ++ "doc/html/man3/X509_STORE_add_cert.html", ++ "doc/html/man3/X509_STORE_get0_param.html", ++ "doc/html/man3/X509_STORE_new.html", ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html", ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html", ++ "doc/html/man3/X509_add_cert.html", ++ "doc/html/man3/X509_check_ca.html", ++ "doc/html/man3/X509_check_host.html", ++ "doc/html/man3/X509_check_issued.html", ++ "doc/html/man3/X509_check_private_key.html", ++ "doc/html/man3/X509_check_purpose.html", ++ "doc/html/man3/X509_cmp.html", ++ "doc/html/man3/X509_cmp_time.html", ++ "doc/html/man3/X509_digest.html", ++ "doc/html/man3/X509_dup.html", ++ "doc/html/man3/X509_get0_distinguishing_id.html", ++ "doc/html/man3/X509_get0_notBefore.html", ++ "doc/html/man3/X509_get0_signature.html", ++ "doc/html/man3/X509_get0_uids.html", ++ "doc/html/man3/X509_get_extension_flags.html", ++ "doc/html/man3/X509_get_pubkey.html", ++ "doc/html/man3/X509_get_serialNumber.html", ++ "doc/html/man3/X509_get_subject_name.html", ++ "doc/html/man3/X509_get_version.html", ++ "doc/html/man3/X509_load_http.html", ++ "doc/html/man3/X509_new.html", ++ "doc/html/man3/X509_sign.html", ++ "doc/html/man3/X509_verify.html", ++ "doc/html/man3/X509_verify_cert.html", ++ "doc/html/man3/X509v3_get_ext_by_NID.html", ++ "doc/html/man3/b2i_PVK_bio_ex.html", ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html", ++ "doc/html/man3/d2i_PrivateKey.html", ++ "doc/html/man3/d2i_RSAPrivateKey.html", ++ "doc/html/man3/d2i_SSL_SESSION.html", ++ "doc/html/man3/d2i_X509.html", ++ "doc/html/man3/i2d_CMS_bio_stream.html", ++ "doc/html/man3/i2d_PKCS7_bio_stream.html", ++ "doc/html/man3/i2d_re_X509_tbs.html", ++ "doc/html/man3/o2i_SCT_LIST.html", ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" ++ ], ++ "man5" => [ ++ "doc/html/man5/config.html", ++ "doc/html/man5/fips_config.html", ++ "doc/html/man5/x509v3_config.html" ++ ], ++ "man7" => [ ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html", ++ "doc/html/man7/EVP_CIPHER-AES.html", ++ "doc/html/man7/EVP_CIPHER-ARIA.html", ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html", ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html", ++ "doc/html/man7/EVP_CIPHER-CAST.html", ++ "doc/html/man7/EVP_CIPHER-CHACHA.html", ++ "doc/html/man7/EVP_CIPHER-DES.html", ++ "doc/html/man7/EVP_CIPHER-IDEA.html", ++ "doc/html/man7/EVP_CIPHER-RC2.html", ++ "doc/html/man7/EVP_CIPHER-RC4.html", ++ "doc/html/man7/EVP_CIPHER-RC5.html", ++ "doc/html/man7/EVP_CIPHER-SEED.html", ++ "doc/html/man7/EVP_CIPHER-SM4.html", ++ "doc/html/man7/EVP_KDF-HKDF.html", ++ "doc/html/man7/EVP_KDF-KB.html", ++ "doc/html/man7/EVP_KDF-KRB5KDF.html", ++ "doc/html/man7/EVP_KDF-PBKDF1.html", ++ "doc/html/man7/EVP_KDF-PBKDF2.html", ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html", ++ "doc/html/man7/EVP_KDF-SCRYPT.html", ++ "doc/html/man7/EVP_KDF-SS.html", ++ "doc/html/man7/EVP_KDF-SSHKDF.html", ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html", ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html", ++ "doc/html/man7/EVP_KDF-X942-ASN1.html", ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html", ++ "doc/html/man7/EVP_KDF-X963.html", ++ "doc/html/man7/EVP_KEM-RSA.html", ++ "doc/html/man7/EVP_KEYEXCH-DH.html", ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html", ++ "doc/html/man7/EVP_KEYEXCH-X25519.html", ++ "doc/html/man7/EVP_MAC-BLAKE2.html", ++ "doc/html/man7/EVP_MAC-CMAC.html", ++ "doc/html/man7/EVP_MAC-GMAC.html", ++ "doc/html/man7/EVP_MAC-HMAC.html", ++ "doc/html/man7/EVP_MAC-KMAC.html", ++ "doc/html/man7/EVP_MAC-Poly1305.html", ++ "doc/html/man7/EVP_MAC-Siphash.html", ++ "doc/html/man7/EVP_MD-BLAKE2.html", ++ "doc/html/man7/EVP_MD-MD2.html", ++ "doc/html/man7/EVP_MD-MD4.html", ++ "doc/html/man7/EVP_MD-MD5-SHA1.html", ++ "doc/html/man7/EVP_MD-MD5.html", ++ "doc/html/man7/EVP_MD-MDC2.html", ++ "doc/html/man7/EVP_MD-RIPEMD160.html", ++ "doc/html/man7/EVP_MD-SHA1.html", ++ "doc/html/man7/EVP_MD-SHA2.html", ++ "doc/html/man7/EVP_MD-SHA3.html", ++ "doc/html/man7/EVP_MD-SHAKE.html", ++ "doc/html/man7/EVP_MD-SM3.html", ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html", ++ "doc/html/man7/EVP_MD-common.html", ++ "doc/html/man7/EVP_PKEY-DH.html", ++ "doc/html/man7/EVP_PKEY-DSA.html", ++ "doc/html/man7/EVP_PKEY-EC.html", ++ "doc/html/man7/EVP_PKEY-FFC.html", ++ "doc/html/man7/EVP_PKEY-HMAC.html", ++ "doc/html/man7/EVP_PKEY-RSA.html", ++ "doc/html/man7/EVP_PKEY-SM2.html", ++ "doc/html/man7/EVP_PKEY-X25519.html", ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html", ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html", ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html", ++ "doc/html/man7/EVP_RAND-SEED-SRC.html", ++ "doc/html/man7/EVP_RAND-TEST-RAND.html", ++ "doc/html/man7/EVP_RAND.html", ++ "doc/html/man7/EVP_SIGNATURE-DSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html", ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html", ++ "doc/html/man7/EVP_SIGNATURE-RSA.html", ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html", ++ "doc/html/man7/OSSL_PROVIDER-base.html", ++ "doc/html/man7/OSSL_PROVIDER-default.html", ++ "doc/html/man7/OSSL_PROVIDER-legacy.html", ++ "doc/html/man7/OSSL_PROVIDER-null.html", ++ "doc/html/man7/RAND.html", ++ "doc/html/man7/RSA-PSS.html", ++ "doc/html/man7/X25519.html", ++ "doc/html/man7/bio.html", ++ "doc/html/man7/crypto.html", ++ "doc/html/man7/ct.html", ++ "doc/html/man7/des_modes.html", ++ "doc/html/man7/evp.html", ++ "doc/html/man7/fips_module.html", ++ "doc/html/man7/life_cycle-cipher.html", ++ "doc/html/man7/life_cycle-digest.html", ++ "doc/html/man7/life_cycle-kdf.html", ++ "doc/html/man7/life_cycle-mac.html", ++ "doc/html/man7/life_cycle-pkey.html", ++ "doc/html/man7/life_cycle-rand.html", ++ "doc/html/man7/migration_guide.html", ++ "doc/html/man7/openssl-core.h.html", ++ "doc/html/man7/openssl-core_dispatch.h.html", ++ "doc/html/man7/openssl-core_names.h.html", ++ "doc/html/man7/openssl-env.html", ++ "doc/html/man7/openssl-glossary.html", ++ "doc/html/man7/openssl-threads.html", ++ "doc/html/man7/openssl_user_macros.html", ++ "doc/html/man7/ossl_store-file.html", ++ "doc/html/man7/ossl_store.html", ++ "doc/html/man7/passphrase-encoding.html", ++ "doc/html/man7/property.html", ++ "doc/html/man7/provider-asym_cipher.html", ++ "doc/html/man7/provider-base.html", ++ "doc/html/man7/provider-cipher.html", ++ "doc/html/man7/provider-decoder.html", ++ "doc/html/man7/provider-digest.html", ++ "doc/html/man7/provider-encoder.html", ++ "doc/html/man7/provider-kdf.html", ++ "doc/html/man7/provider-kem.html", ++ "doc/html/man7/provider-keyexch.html", ++ "doc/html/man7/provider-keymgmt.html", ++ "doc/html/man7/provider-mac.html", ++ "doc/html/man7/provider-object.html", ++ "doc/html/man7/provider-rand.html", ++ "doc/html/man7/provider-signature.html", ++ "doc/html/man7/provider-storemgmt.html", ++ "doc/html/man7/provider.html", ++ "doc/html/man7/proxy-certificates.html", ++ "doc/html/man7/ssl.html", ++ "doc/html/man7/x509.html" ++ ] ++ }, ++ "imagedocs" => { ++ "man7" => [ ++ "doc/man7/img/cipher.png", ++ "doc/man7/img/digest.png", ++ "doc/man7/img/kdf.png", ++ "doc/man7/img/mac.png", ++ "doc/man7/img/pkey.png", ++ "doc/man7/img/rand.png" ++ ] ++ }, ++ "includes" => { ++ "apps/asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/ca.o" => [ ++ "apps" ++ ], ++ "apps/ciphers.o" => [ ++ "apps" ++ ], ++ "apps/cmp.o" => [ ++ "apps" ++ ], ++ "apps/cms.o" => [ ++ "apps" ++ ], ++ "apps/crl.o" => [ ++ "apps" ++ ], ++ "apps/crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/dgst.o" => [ ++ "apps" ++ ], ++ "apps/dhparam.o" => [ ++ "apps" ++ ], ++ "apps/dsa.o" => [ ++ "apps" ++ ], ++ "apps/dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/ec.o" => [ ++ "apps" ++ ], ++ "apps/ecparam.o" => [ ++ "apps" ++ ], ++ "apps/enc.o" => [ ++ "apps" ++ ], ++ "apps/engine.o" => [ ++ "apps" ++ ], ++ "apps/errstr.o" => [ ++ "apps" ++ ], ++ "apps/fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/gendsa.o" => [ ++ "apps" ++ ], ++ "apps/genpkey.o" => [ ++ "apps" ++ ], ++ "apps/genrsa.o" => [ ++ "apps" ++ ], ++ "apps/info.o" => [ ++ "apps" ++ ], ++ "apps/kdf.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/libapps.a" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/list.o" => [ ++ "apps" ++ ], ++ "apps/mac.o" => [ ++ "apps" ++ ], ++ "apps/nseq.o" => [ ++ "apps" ++ ], ++ "apps/ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps" ++ ], ++ "apps/openssl.o" => [ ++ "apps" ++ ], ++ "apps/passwd.o" => [ ++ "apps" ++ ], ++ "apps/pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/pkey.o" => [ ++ "apps" ++ ], ++ "apps/pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/prime.o" => [ ++ "apps" ++ ], ++ "apps/progs.c" => [ ++ "." ++ ], ++ "apps/progs.o" => [ ++ "apps" ++ ], ++ "apps/rand.o" => [ ++ "apps" ++ ], ++ "apps/rehash.o" => [ ++ "apps" ++ ], ++ "apps/req.o" => [ ++ "apps" ++ ], ++ "apps/rsa.o" => [ ++ "apps" ++ ], ++ "apps/rsautl.o" => [ ++ "apps" ++ ], ++ "apps/s_client.o" => [ ++ "apps" ++ ], ++ "apps/s_server.o" => [ ++ "apps" ++ ], ++ "apps/s_time.o" => [ ++ "apps" ++ ], ++ "apps/sess_id.o" => [ ++ "apps" ++ ], ++ "apps/smime.o" => [ ++ "apps" ++ ], ++ "apps/speed.o" => [ ++ "apps" ++ ], ++ "apps/spkac.o" => [ ++ "apps" ++ ], ++ "apps/srp.o" => [ ++ "apps" ++ ], ++ "apps/storeutl.o" => [ ++ "apps" ++ ], ++ "apps/ts.o" => [ ++ "apps" ++ ], ++ "apps/verify.o" => [ ++ "apps" ++ ], ++ "apps/version.o" => [ ++ "apps" ++ ], ++ "apps/x509.o" => [ ++ "apps" ++ ], ++ "crypto/aes/aes-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesfx-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/bsaes-armv7.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/libcrypto-lib-aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/libfips-lib-aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/arm64cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/armv4cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv8-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/liblegacy-lib-bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparct4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9a-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/vis3-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/cpuid.o" => [ ++ "." ++ ], ++ "crypto/cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/des/dest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_s390x_nistp.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/info.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/md5/md5-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghashv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/s390xcpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/keccak1600-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/libfips-lib-sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv4-large.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sparcv9.o" => [ ++ "crypto" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc" ++ ], ++ "fuzz/asn1-test" => [ ++ "include" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "include" ++ ], ++ "fuzz/bignum-test" => [ ++ "include" ++ ], ++ "fuzz/bndiv-test" => [ ++ "include" ++ ], ++ "fuzz/client-test" => [ ++ "include" ++ ], ++ "fuzz/cmp-test" => [ ++ "include" ++ ], ++ "fuzz/cms-test" => [ ++ "include" ++ ], ++ "fuzz/conf-test" => [ ++ "include" ++ ], ++ "fuzz/crl-test" => [ ++ "include" ++ ], ++ "fuzz/ct-test" => [ ++ "include" ++ ], ++ "fuzz/server-test" => [ ++ "include" ++ ], ++ "fuzz/x509-test" => [ ++ "include" ++ ], ++ "libcrypto" => [ ++ ".", ++ "include", ++ "providers/common/include", ++ "providers/implementations/include" ++ ], ++ "libcrypto.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "libssl" => [ ++ ".", ++ "include" ++ ], ++ "libssl.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der" ++ ], ++ "providers/fips" => [ ++ "include" ++ ], ++ "providers/implementations/encode_decode/encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/legacy" => [ ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libcommon.a" => [ ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libdefault.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libfips.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/liblegacy.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "test/aborttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/acvp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/aesgcmtest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/afalgtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/algorithmid_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_decode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_encode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_string_table_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynciotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynctest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bad_dtls_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_callback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_core_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_enc_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_memleak_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_prefix_text" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bioprinttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bn_internal_test" => [ ++ ".", ++ "include", ++ "crypto/bn", ++ "apps/include" ++ ], ++ "test/bntest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/buildtest_c_aes" => [ ++ "include" ++ ], ++ "test/buildtest_c_async" => [ ++ "include" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "include" ++ ], ++ "test/buildtest_c_bn" => [ ++ "include" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "include" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "include" ++ ], ++ "test/buildtest_c_cast" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "include" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "include" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "include" ++ ], ++ "test/buildtest_c_core" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "include" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_des" => [ ++ "include" ++ ], ++ "test/buildtest_c_dh" => [ ++ "include" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "include" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "include" ++ ], ++ "test/buildtest_c_ec" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_engine" => [ ++ "include" ++ ], ++ "test/buildtest_c_evp" => [ ++ "include" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_http" => [ ++ "include" ++ ], ++ "test/buildtest_c_idea" => [ ++ "include" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "include" ++ ], ++ "test/buildtest_c_macros" => [ ++ "include" ++ ], ++ "test/buildtest_c_md4" => [ ++ "include" ++ ], ++ "test/buildtest_c_md5" => [ ++ "include" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_modes" => [ ++ "include" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "include" ++ ], ++ "test/buildtest_c_objects" => [ ++ "include" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "include" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "include" ++ ], ++ "test/buildtest_c_params" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "include" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "include" ++ ], ++ "test/buildtest_c_provider" => [ ++ "include" ++ ], ++ "test/buildtest_c_quic" => [ ++ "include" ++ ], ++ "test/buildtest_c_rand" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "include" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "include" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_seed" => [ ++ "include" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "include" ++ ], ++ "test/buildtest_c_sha" => [ ++ "include" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "include" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "include" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_stack" => [ ++ "include" ++ ], ++ "test/buildtest_c_store" => [ ++ "include" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "include" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_ts" => [ ++ "include" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "include" ++ ], ++ "test/buildtest_c_types" => [ ++ "include" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "include" ++ ], ++ "test/casttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/chacha_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipher_overhead_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipherbytes_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cipherlist_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ciphername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/clienthellotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_asn_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_client_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_ctx_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_hdr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_msg_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_protect_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_server_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_status_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_vfy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmsapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/conf_include_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/confdump" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/constant_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/context_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/crltest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ct_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ctype_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/curve448_internal_test" => [ ++ ".", ++ "include", ++ "apps/include", ++ "crypto/ec/curve448" ++ ], ++ "test/d2i_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/danetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/defltfips_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/destest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dhtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/drbgtest" => [ ++ "include", ++ "apps/include", ++ "providers/common/include" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtls_mtu_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/dtlstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtlsv1listentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ec_internal_test" => [ ++ "include", ++ "crypto/ec", ++ "apps/include" ++ ], ++ "test/ecdsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ecstresstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ectest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/endecode_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/endecoder_legacy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/enginetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/errtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test2" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_libctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exdatatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/fatalerrtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ffc_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/gmdifftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/hexstr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/hmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/http_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ideatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/igetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/keymgmt_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/lhash_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/libtestutil.a" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/localetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/memleaktest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/modes_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/namemap_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ocspapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ossl_store_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/p_test" => [ ++ "include", ++ "." ++ ], ++ "test/packettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/param_build_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_api_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_conversion_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/pbelutest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pbetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pem_read_depr_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs12_format_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs7_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/poly1305_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/property_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/prov_config_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provfetchtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_fallback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_internal_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/provider_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/rand_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rand_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc4test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc5test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/recordlentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_complex" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_mp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ ".", ++ "include", ++ "crypto/rsa", ++ "apps/include" ++ ], ++ "test/rsa_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/secmemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/servername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sha_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/siphash_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sm2_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm3_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm4_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sparse_array_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/srptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_old_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslapitest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/sslbuffertest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslcorrupttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/stack_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sysdefaulttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/test_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest_fips" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/time_offset_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13ccstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13encryptiontest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/uitest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/upcallstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/user_property_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3ext" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3nametest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/verify_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/versions" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/wpackettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/x509_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509aux" => [ ++ "include", ++ "apps/include" ++ ], ++ "util/wrap.pl" => [ ++ "." ++ ] ++ }, ++ "ldadd" => {}, ++ "libraries" => [ ++ "apps/libapps.a", ++ "libcrypto", ++ "libssl", ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a", ++ "test/libtestutil.a" ++ ], ++ "mandocs" => { ++ "man1" => [ ++ "doc/man/man1/CA.pl.1", ++ "doc/man/man1/openssl-asn1parse.1", ++ "doc/man/man1/openssl-ca.1", ++ "doc/man/man1/openssl-ciphers.1", ++ "doc/man/man1/openssl-cmds.1", ++ "doc/man/man1/openssl-cmp.1", ++ "doc/man/man1/openssl-cms.1", ++ "doc/man/man1/openssl-crl.1", ++ "doc/man/man1/openssl-crl2pkcs7.1", ++ "doc/man/man1/openssl-dgst.1", ++ "doc/man/man1/openssl-dhparam.1", ++ "doc/man/man1/openssl-dsa.1", ++ "doc/man/man1/openssl-dsaparam.1", ++ "doc/man/man1/openssl-ec.1", ++ "doc/man/man1/openssl-ecparam.1", ++ "doc/man/man1/openssl-enc.1", ++ "doc/man/man1/openssl-engine.1", ++ "doc/man/man1/openssl-errstr.1", ++ "doc/man/man1/openssl-fipsinstall.1", ++ "doc/man/man1/openssl-format-options.1", ++ "doc/man/man1/openssl-gendsa.1", ++ "doc/man/man1/openssl-genpkey.1", ++ "doc/man/man1/openssl-genrsa.1", ++ "doc/man/man1/openssl-info.1", ++ "doc/man/man1/openssl-kdf.1", ++ "doc/man/man1/openssl-list.1", ++ "doc/man/man1/openssl-mac.1", ++ "doc/man/man1/openssl-namedisplay-options.1", ++ "doc/man/man1/openssl-nseq.1", ++ "doc/man/man1/openssl-ocsp.1", ++ "doc/man/man1/openssl-passphrase-options.1", ++ "doc/man/man1/openssl-passwd.1", ++ "doc/man/man1/openssl-pkcs12.1", ++ "doc/man/man1/openssl-pkcs7.1", ++ "doc/man/man1/openssl-pkcs8.1", ++ "doc/man/man1/openssl-pkey.1", ++ "doc/man/man1/openssl-pkeyparam.1", ++ "doc/man/man1/openssl-pkeyutl.1", ++ "doc/man/man1/openssl-prime.1", ++ "doc/man/man1/openssl-rand.1", ++ "doc/man/man1/openssl-rehash.1", ++ "doc/man/man1/openssl-req.1", ++ "doc/man/man1/openssl-rsa.1", ++ "doc/man/man1/openssl-rsautl.1", ++ "doc/man/man1/openssl-s_client.1", ++ "doc/man/man1/openssl-s_server.1", ++ "doc/man/man1/openssl-s_time.1", ++ "doc/man/man1/openssl-sess_id.1", ++ "doc/man/man1/openssl-smime.1", ++ "doc/man/man1/openssl-speed.1", ++ "doc/man/man1/openssl-spkac.1", ++ "doc/man/man1/openssl-srp.1", ++ "doc/man/man1/openssl-storeutl.1", ++ "doc/man/man1/openssl-ts.1", ++ "doc/man/man1/openssl-verification-options.1", ++ "doc/man/man1/openssl-verify.1", ++ "doc/man/man1/openssl-version.1", ++ "doc/man/man1/openssl-x509.1", ++ "doc/man/man1/openssl.1", ++ "doc/man/man1/tsget.1" ++ ], ++ "man3" => [ ++ "doc/man/man3/ADMISSIONS.3", ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3", ++ "doc/man/man3/ASN1_INTEGER_get_int64.3", ++ "doc/man/man3/ASN1_INTEGER_new.3", ++ "doc/man/man3/ASN1_ITEM_lookup.3", ++ "doc/man/man3/ASN1_OBJECT_new.3", ++ "doc/man/man3/ASN1_STRING_TABLE_add.3", ++ "doc/man/man3/ASN1_STRING_length.3", ++ "doc/man/man3/ASN1_STRING_new.3", ++ "doc/man/man3/ASN1_STRING_print_ex.3", ++ "doc/man/man3/ASN1_TIME_set.3", ++ "doc/man/man3/ASN1_TYPE_get.3", ++ "doc/man/man3/ASN1_aux_cb.3", ++ "doc/man/man3/ASN1_generate_nconf.3", ++ "doc/man/man3/ASN1_item_d2i_bio.3", ++ "doc/man/man3/ASN1_item_new.3", ++ "doc/man/man3/ASN1_item_sign.3", ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3", ++ "doc/man/man3/ASYNC_start_job.3", ++ "doc/man/man3/BF_encrypt.3", ++ "doc/man/man3/BIO_ADDR.3", ++ "doc/man/man3/BIO_ADDRINFO.3", ++ "doc/man/man3/BIO_connect.3", ++ "doc/man/man3/BIO_ctrl.3", ++ "doc/man/man3/BIO_f_base64.3", ++ "doc/man/man3/BIO_f_buffer.3", ++ "doc/man/man3/BIO_f_cipher.3", ++ "doc/man/man3/BIO_f_md.3", ++ "doc/man/man3/BIO_f_null.3", ++ "doc/man/man3/BIO_f_prefix.3", ++ "doc/man/man3/BIO_f_readbuffer.3", ++ "doc/man/man3/BIO_f_ssl.3", ++ "doc/man/man3/BIO_find_type.3", ++ "doc/man/man3/BIO_get_data.3", ++ "doc/man/man3/BIO_get_ex_new_index.3", ++ "doc/man/man3/BIO_meth_new.3", ++ "doc/man/man3/BIO_new.3", ++ "doc/man/man3/BIO_new_CMS.3", ++ "doc/man/man3/BIO_parse_hostserv.3", ++ "doc/man/man3/BIO_printf.3", ++ "doc/man/man3/BIO_push.3", ++ "doc/man/man3/BIO_read.3", ++ "doc/man/man3/BIO_s_accept.3", ++ "doc/man/man3/BIO_s_bio.3", ++ "doc/man/man3/BIO_s_connect.3", ++ "doc/man/man3/BIO_s_core.3", ++ "doc/man/man3/BIO_s_fd.3", ++ "doc/man/man3/BIO_s_file.3", ++ "doc/man/man3/BIO_s_mem.3", ++ "doc/man/man3/BIO_s_null.3", ++ "doc/man/man3/BIO_s_socket.3", ++ "doc/man/man3/BIO_set_callback.3", ++ "doc/man/man3/BIO_should_retry.3", ++ "doc/man/man3/BIO_socket_wait.3", ++ "doc/man/man3/BN_BLINDING_new.3", ++ "doc/man/man3/BN_CTX_new.3", ++ "doc/man/man3/BN_CTX_start.3", ++ "doc/man/man3/BN_add.3", ++ "doc/man/man3/BN_add_word.3", ++ "doc/man/man3/BN_bn2bin.3", ++ "doc/man/man3/BN_cmp.3", ++ "doc/man/man3/BN_copy.3", ++ "doc/man/man3/BN_generate_prime.3", ++ "doc/man/man3/BN_mod_exp_mont.3", ++ "doc/man/man3/BN_mod_inverse.3", ++ "doc/man/man3/BN_mod_mul_montgomery.3", ++ "doc/man/man3/BN_mod_mul_reciprocal.3", ++ "doc/man/man3/BN_new.3", ++ "doc/man/man3/BN_num_bytes.3", ++ "doc/man/man3/BN_rand.3", ++ "doc/man/man3/BN_security_bits.3", ++ "doc/man/man3/BN_set_bit.3", ++ "doc/man/man3/BN_swap.3", ++ "doc/man/man3/BN_zero.3", ++ "doc/man/man3/BUF_MEM_new.3", ++ "doc/man/man3/CMS_EncryptedData_decrypt.3", ++ "doc/man/man3/CMS_EncryptedData_encrypt.3", ++ "doc/man/man3/CMS_EnvelopedData_create.3", ++ "doc/man/man3/CMS_add0_cert.3", ++ "doc/man/man3/CMS_add1_recipient_cert.3", ++ "doc/man/man3/CMS_add1_signer.3", ++ "doc/man/man3/CMS_compress.3", ++ "doc/man/man3/CMS_data_create.3", ++ "doc/man/man3/CMS_decrypt.3", ++ "doc/man/man3/CMS_digest_create.3", ++ "doc/man/man3/CMS_encrypt.3", ++ "doc/man/man3/CMS_final.3", ++ "doc/man/man3/CMS_get0_RecipientInfos.3", ++ "doc/man/man3/CMS_get0_SignerInfos.3", ++ "doc/man/man3/CMS_get0_type.3", ++ "doc/man/man3/CMS_get1_ReceiptRequest.3", ++ "doc/man/man3/CMS_sign.3", ++ "doc/man/man3/CMS_sign_receipt.3", ++ "doc/man/man3/CMS_uncompress.3", ++ "doc/man/man3/CMS_verify.3", ++ "doc/man/man3/CMS_verify_receipt.3", ++ "doc/man/man3/CONF_modules_free.3", ++ "doc/man/man3/CONF_modules_load_file.3", ++ "doc/man/man3/CRYPTO_THREAD_run_once.3", ++ "doc/man/man3/CRYPTO_get_ex_new_index.3", ++ "doc/man/man3/CRYPTO_memcmp.3", ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3", ++ "doc/man/man3/CTLOG_STORE_new.3", ++ "doc/man/man3/CTLOG_new.3", ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3", ++ "doc/man/man3/DEFINE_STACK_OF.3", ++ "doc/man/man3/DES_random_key.3", ++ "doc/man/man3/DH_generate_key.3", ++ "doc/man/man3/DH_generate_parameters.3", ++ "doc/man/man3/DH_get0_pqg.3", ++ "doc/man/man3/DH_get_1024_160.3", ++ "doc/man/man3/DH_meth_new.3", ++ "doc/man/man3/DH_new.3", ++ "doc/man/man3/DH_new_by_nid.3", ++ "doc/man/man3/DH_set_method.3", ++ "doc/man/man3/DH_size.3", ++ "doc/man/man3/DSA_SIG_new.3", ++ "doc/man/man3/DSA_do_sign.3", ++ "doc/man/man3/DSA_dup_DH.3", ++ "doc/man/man3/DSA_generate_key.3", ++ "doc/man/man3/DSA_generate_parameters.3", ++ "doc/man/man3/DSA_get0_pqg.3", ++ "doc/man/man3/DSA_meth_new.3", ++ "doc/man/man3/DSA_new.3", ++ "doc/man/man3/DSA_set_method.3", ++ "doc/man/man3/DSA_sign.3", ++ "doc/man/man3/DSA_size.3", ++ "doc/man/man3/DTLS_get_data_mtu.3", ++ "doc/man/man3/DTLS_set_timer_cb.3", ++ "doc/man/man3/DTLSv1_listen.3", ++ "doc/man/man3/ECDSA_SIG_new.3", ++ "doc/man/man3/ECPKParameters_print.3", ++ "doc/man/man3/EC_GFp_simple_method.3", ++ "doc/man/man3/EC_GROUP_copy.3", ++ "doc/man/man3/EC_GROUP_new.3", ++ "doc/man/man3/EC_KEY_get_enc_flags.3", ++ "doc/man/man3/EC_KEY_new.3", ++ "doc/man/man3/EC_POINT_add.3", ++ "doc/man/man3/EC_POINT_new.3", ++ "doc/man/man3/ENGINE_add.3", ++ "doc/man/man3/ERR_GET_LIB.3", ++ "doc/man/man3/ERR_clear_error.3", ++ "doc/man/man3/ERR_error_string.3", ++ "doc/man/man3/ERR_get_error.3", ++ "doc/man/man3/ERR_load_crypto_strings.3", ++ "doc/man/man3/ERR_load_strings.3", ++ "doc/man/man3/ERR_new.3", ++ "doc/man/man3/ERR_print_errors.3", ++ "doc/man/man3/ERR_put_error.3", ++ "doc/man/man3/ERR_remove_state.3", ++ "doc/man/man3/ERR_set_mark.3", ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3", ++ "doc/man/man3/EVP_BytesToKey.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3", ++ "doc/man/man3/EVP_CIPHER_meth_new.3", ++ "doc/man/man3/EVP_DigestInit.3", ++ "doc/man/man3/EVP_DigestSignInit.3", ++ "doc/man/man3/EVP_DigestVerifyInit.3", ++ "doc/man/man3/EVP_EncodeInit.3", ++ "doc/man/man3/EVP_EncryptInit.3", ++ "doc/man/man3/EVP_KDF.3", ++ "doc/man/man3/EVP_KEM_free.3", ++ "doc/man/man3/EVP_KEYEXCH_free.3", ++ "doc/man/man3/EVP_KEYMGMT.3", ++ "doc/man/man3/EVP_MAC.3", ++ "doc/man/man3/EVP_MD_meth_new.3", ++ "doc/man/man3/EVP_OpenInit.3", ++ "doc/man/man3/EVP_PBE_CipherInit.3", ++ "doc/man/man3/EVP_PKEY2PKCS8.3", ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3", ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3", ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", ++ "doc/man/man3/EVP_PKEY_CTX_new.3", ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3", ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3", ++ "doc/man/man3/EVP_PKEY_check.3", ++ "doc/man/man3/EVP_PKEY_copy_parameters.3", ++ "doc/man/man3/EVP_PKEY_decapsulate.3", ++ "doc/man/man3/EVP_PKEY_decrypt.3", ++ "doc/man/man3/EVP_PKEY_derive.3", ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3", ++ "doc/man/man3/EVP_PKEY_encapsulate.3", ++ "doc/man/man3/EVP_PKEY_encrypt.3", ++ "doc/man/man3/EVP_PKEY_fromdata.3", ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3", ++ "doc/man/man3/EVP_PKEY_get_field_type.3", ++ "doc/man/man3/EVP_PKEY_get_group_name.3", ++ "doc/man/man3/EVP_PKEY_get_size.3", ++ "doc/man/man3/EVP_PKEY_gettable_params.3", ++ "doc/man/man3/EVP_PKEY_is_a.3", ++ "doc/man/man3/EVP_PKEY_keygen.3", ++ "doc/man/man3/EVP_PKEY_meth_get_count.3", ++ "doc/man/man3/EVP_PKEY_meth_new.3", ++ "doc/man/man3/EVP_PKEY_new.3", ++ "doc/man/man3/EVP_PKEY_print_private.3", ++ "doc/man/man3/EVP_PKEY_set1_RSA.3", ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3", ++ "doc/man/man3/EVP_PKEY_set_type.3", ++ "doc/man/man3/EVP_PKEY_settable_params.3", ++ "doc/man/man3/EVP_PKEY_sign.3", ++ "doc/man/man3/EVP_PKEY_todata.3", ++ "doc/man/man3/EVP_PKEY_verify.3", ++ "doc/man/man3/EVP_PKEY_verify_recover.3", ++ "doc/man/man3/EVP_RAND.3", ++ "doc/man/man3/EVP_SIGNATURE.3", ++ "doc/man/man3/EVP_SealInit.3", ++ "doc/man/man3/EVP_SignInit.3", ++ "doc/man/man3/EVP_VerifyInit.3", ++ "doc/man/man3/EVP_aes_128_gcm.3", ++ "doc/man/man3/EVP_aria_128_gcm.3", ++ "doc/man/man3/EVP_bf_cbc.3", ++ "doc/man/man3/EVP_blake2b512.3", ++ "doc/man/man3/EVP_camellia_128_ecb.3", ++ "doc/man/man3/EVP_cast5_cbc.3", ++ "doc/man/man3/EVP_chacha20.3", ++ "doc/man/man3/EVP_des_cbc.3", ++ "doc/man/man3/EVP_desx_cbc.3", ++ "doc/man/man3/EVP_idea_cbc.3", ++ "doc/man/man3/EVP_md2.3", ++ "doc/man/man3/EVP_md4.3", ++ "doc/man/man3/EVP_md5.3", ++ "doc/man/man3/EVP_mdc2.3", ++ "doc/man/man3/EVP_rc2_cbc.3", ++ "doc/man/man3/EVP_rc4.3", ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3", ++ "doc/man/man3/EVP_ripemd160.3", ++ "doc/man/man3/EVP_seed_cbc.3", ++ "doc/man/man3/EVP_set_default_properties.3", ++ "doc/man/man3/EVP_sha1.3", ++ "doc/man/man3/EVP_sha224.3", ++ "doc/man/man3/EVP_sha3_224.3", ++ "doc/man/man3/EVP_sm3.3", ++ "doc/man/man3/EVP_sm4_cbc.3", ++ "doc/man/man3/EVP_whirlpool.3", ++ "doc/man/man3/HMAC.3", ++ "doc/man/man3/MD5.3", ++ "doc/man/man3/MDC2_Init.3", ++ "doc/man/man3/NCONF_new_ex.3", ++ "doc/man/man3/OBJ_nid2obj.3", ++ "doc/man/man3/OCSP_REQUEST_new.3", ++ "doc/man/man3/OCSP_cert_to_id.3", ++ "doc/man/man3/OCSP_request_add1_nonce.3", ++ "doc/man/man3/OCSP_resp_find_status.3", ++ "doc/man/man3/OCSP_response_status.3", ++ "doc/man/man3/OCSP_sendreq_new.3", ++ "doc/man/man3/OPENSSL_Applink.3", ++ "doc/man/man3/OPENSSL_FILE.3", ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3", ++ "doc/man/man3/OPENSSL_LH_stats.3", ++ "doc/man/man3/OPENSSL_config.3", ++ "doc/man/man3/OPENSSL_fork_prepare.3", ++ "doc/man/man3/OPENSSL_hexchar2int.3", ++ "doc/man/man3/OPENSSL_ia32cap.3", ++ "doc/man/man3/OPENSSL_init_crypto.3", ++ "doc/man/man3/OPENSSL_init_ssl.3", ++ "doc/man/man3/OPENSSL_instrument_bus.3", ++ "doc/man/man3/OPENSSL_load_builtin_modules.3", ++ "doc/man/man3/OPENSSL_malloc.3", ++ "doc/man/man3/OPENSSL_s390xcap.3", ++ "doc/man/man3/OPENSSL_secure_malloc.3", ++ "doc/man/man3/OPENSSL_strcasecmp.3", ++ "doc/man/man3/OSSL_CMP_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3", ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3", ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3", ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3", ++ "doc/man/man3/OSSL_CMP_exec_certreq.3", ++ "doc/man/man3/OSSL_CMP_log_open.3", ++ "doc/man/man3/OSSL_CMP_validate_msg.3", ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3", ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3", ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3", ++ "doc/man/man3/OSSL_DECODER.3", ++ "doc/man/man3/OSSL_DECODER_CTX.3", ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_DECODER_from_bio.3", ++ "doc/man/man3/OSSL_ENCODER.3", ++ "doc/man/man3/OSSL_ENCODER_CTX.3", ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_ENCODER_to_bio.3", ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3", ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3", ++ "doc/man/man3/OSSL_HTTP_parse_url.3", ++ "doc/man/man3/OSSL_HTTP_transfer.3", ++ "doc/man/man3/OSSL_LIB_CTX.3", ++ "doc/man/man3/OSSL_PARAM.3", ++ "doc/man/man3/OSSL_PARAM_BLD.3", ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3", ++ "doc/man/man3/OSSL_PARAM_dup.3", ++ "doc/man/man3/OSSL_PARAM_int.3", ++ "doc/man/man3/OSSL_PROVIDER.3", ++ "doc/man/man3/OSSL_SELF_TEST_new.3", ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3", ++ "doc/man/man3/OSSL_STORE_INFO.3", ++ "doc/man/man3/OSSL_STORE_LOADER.3", ++ "doc/man/man3/OSSL_STORE_SEARCH.3", ++ "doc/man/man3/OSSL_STORE_attach.3", ++ "doc/man/man3/OSSL_STORE_expect.3", ++ "doc/man/man3/OSSL_STORE_open.3", ++ "doc/man/man3/OSSL_trace_enabled.3", ++ "doc/man/man3/OSSL_trace_get_category_num.3", ++ "doc/man/man3/OSSL_trace_set_channel.3", ++ "doc/man/man3/OpenSSL_add_all_algorithms.3", ++ "doc/man/man3/OpenSSL_version.3", ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", ++ "doc/man/man3/PEM_bytes_read_bio.3", ++ "doc/man/man3/PEM_read.3", ++ "doc/man/man3/PEM_read_CMS.3", ++ "doc/man/man3/PEM_read_bio_PrivateKey.3", ++ "doc/man/man3/PEM_read_bio_ex.3", ++ "doc/man/man3/PEM_write_bio_CMS_stream.3", ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3", ++ "doc/man/man3/PKCS12_PBE_keyivgen.3", ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3", ++ "doc/man/man3/PKCS12_add_CSPName_asc.3", ++ "doc/man/man3/PKCS12_add_cert.3", ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3", ++ "doc/man/man3/PKCS12_add_localkeyid.3", ++ "doc/man/man3/PKCS12_add_safe.3", ++ "doc/man/man3/PKCS12_create.3", ++ "doc/man/man3/PKCS12_decrypt_skey.3", ++ "doc/man/man3/PKCS12_gen_mac.3", ++ "doc/man/man3/PKCS12_get_friendlyname.3", ++ "doc/man/man3/PKCS12_init.3", ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3", ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3", ++ "doc/man/man3/PKCS12_newpass.3", ++ "doc/man/man3/PKCS12_pack_p7encdata.3", ++ "doc/man/man3/PKCS12_parse.3", ++ "doc/man/man3/PKCS5_PBE_keyivgen.3", ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3", ++ "doc/man/man3/PKCS7_decrypt.3", ++ "doc/man/man3/PKCS7_encrypt.3", ++ "doc/man/man3/PKCS7_get_octet_string.3", ++ "doc/man/man3/PKCS7_sign.3", ++ "doc/man/man3/PKCS7_sign_add_signer.3", ++ "doc/man/man3/PKCS7_type_is_other.3", ++ "doc/man/man3/PKCS7_verify.3", ++ "doc/man/man3/PKCS8_encrypt.3", ++ "doc/man/man3/PKCS8_pkey_add1_attr.3", ++ "doc/man/man3/RAND_add.3", ++ "doc/man/man3/RAND_bytes.3", ++ "doc/man/man3/RAND_cleanup.3", ++ "doc/man/man3/RAND_egd.3", ++ "doc/man/man3/RAND_get0_primary.3", ++ "doc/man/man3/RAND_load_file.3", ++ "doc/man/man3/RAND_set_DRBG_type.3", ++ "doc/man/man3/RAND_set_rand_method.3", ++ "doc/man/man3/RC4_set_key.3", ++ "doc/man/man3/RIPEMD160_Init.3", ++ "doc/man/man3/RSA_blinding_on.3", ++ "doc/man/man3/RSA_check_key.3", ++ "doc/man/man3/RSA_generate_key.3", ++ "doc/man/man3/RSA_get0_key.3", ++ "doc/man/man3/RSA_meth_new.3", ++ "doc/man/man3/RSA_new.3", ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3", ++ "doc/man/man3/RSA_print.3", ++ "doc/man/man3/RSA_private_encrypt.3", ++ "doc/man/man3/RSA_public_encrypt.3", ++ "doc/man/man3/RSA_set_method.3", ++ "doc/man/man3/RSA_sign.3", ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3", ++ "doc/man/man3/RSA_size.3", ++ "doc/man/man3/SCT_new.3", ++ "doc/man/man3/SCT_print.3", ++ "doc/man/man3/SCT_validate.3", ++ "doc/man/man3/SHA256_Init.3", ++ "doc/man/man3/SMIME_read_ASN1.3", ++ "doc/man/man3/SMIME_read_CMS.3", ++ "doc/man/man3/SMIME_read_PKCS7.3", ++ "doc/man/man3/SMIME_write_ASN1.3", ++ "doc/man/man3/SMIME_write_CMS.3", ++ "doc/man/man3/SMIME_write_PKCS7.3", ++ "doc/man/man3/SRP_Calc_B.3", ++ "doc/man/man3/SRP_VBASE_new.3", ++ "doc/man/man3/SRP_create_verifier.3", ++ "doc/man/man3/SRP_user_pwd_new.3", ++ "doc/man/man3/SSL_CIPHER_get_name.3", ++ "doc/man/man3/SSL_COMP_add_compression_method.3", ++ "doc/man/man3/SSL_CONF_CTX_new.3", ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3", ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3", ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3", ++ "doc/man/man3/SSL_CONF_cmd.3", ++ "doc/man/man3/SSL_CONF_cmd_argv.3", ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_session.3", ++ "doc/man/man3/SSL_CTX_config.3", ++ "doc/man/man3/SSL_CTX_ctrl.3", ++ "doc/man/man3/SSL_CTX_dane_enable.3", ++ "doc/man/man3/SSL_CTX_flush_sessions.3", ++ "doc/man/man3/SSL_CTX_free.3", ++ "doc/man/man3/SSL_CTX_get0_param.3", ++ "doc/man/man3/SSL_CTX_get_verify_mode.3", ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3", ++ "doc/man/man3/SSL_CTX_load_verify_locations.3", ++ "doc/man/man3/SSL_CTX_new.3", ++ "doc/man/man3/SSL_CTX_sess_number.3", ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3", ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3", ++ "doc/man/man3/SSL_CTX_sessions.3", ++ "doc/man/man3/SSL_CTX_set0_CA_list.3", ++ "doc/man/man3/SSL_CTX_set1_curves.3", ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3", ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3", ++ "doc/man/man3/SSL_CTX_set_cipher_list.3", ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3", ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3", ++ "doc/man/man3/SSL_CTX_set_info_callback.3", ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3", ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3", ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3", ++ "doc/man/man3/SSL_CTX_set_mode.3", ++ "doc/man/man3/SSL_CTX_set_msg_callback.3", ++ "doc/man/man3/SSL_CTX_set_num_tickets.3", ++ "doc/man/man3/SSL_CTX_set_options.3", ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3", ++ "doc/man/man3/SSL_CTX_set_quic_method.3", ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3", ++ "doc/man/man3/SSL_CTX_set_read_ahead.3", ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3", ++ "doc/man/man3/SSL_CTX_set_security_level.3", ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3", ++ "doc/man/man3/SSL_CTX_set_session_id_context.3", ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3", ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3", ++ "doc/man/man3/SSL_CTX_set_srp_password.3", ++ "doc/man/man3/SSL_CTX_set_ssl_version.3", ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3", ++ "doc/man/man3/SSL_CTX_set_timeout.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3", ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3", ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3", ++ "doc/man/man3/SSL_CTX_set_verify.3", ++ "doc/man/man3/SSL_CTX_use_certificate.3", ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3", ++ "doc/man/man3/SSL_CTX_use_serverinfo.3", ++ "doc/man/man3/SSL_SESSION_free.3", ++ "doc/man/man3/SSL_SESSION_get0_cipher.3", ++ "doc/man/man3/SSL_SESSION_get0_hostname.3", ++ "doc/man/man3/SSL_SESSION_get0_id_context.3", ++ "doc/man/man3/SSL_SESSION_get0_peer.3", ++ "doc/man/man3/SSL_SESSION_get_compress_id.3", ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3", ++ "doc/man/man3/SSL_SESSION_get_time.3", ++ "doc/man/man3/SSL_SESSION_has_ticket.3", ++ "doc/man/man3/SSL_SESSION_is_resumable.3", ++ "doc/man/man3/SSL_SESSION_print.3", ++ "doc/man/man3/SSL_SESSION_set1_id.3", ++ "doc/man/man3/SSL_accept.3", ++ "doc/man/man3/SSL_alert_type_string.3", ++ "doc/man/man3/SSL_alloc_buffers.3", ++ "doc/man/man3/SSL_check_chain.3", ++ "doc/man/man3/SSL_clear.3", ++ "doc/man/man3/SSL_connect.3", ++ "doc/man/man3/SSL_do_handshake.3", ++ "doc/man/man3/SSL_export_keying_material.3", ++ "doc/man/man3/SSL_extension_supported.3", ++ "doc/man/man3/SSL_free.3", ++ "doc/man/man3/SSL_get0_peer_scts.3", ++ "doc/man/man3/SSL_get_SSL_CTX.3", ++ "doc/man/man3/SSL_get_all_async_fds.3", ++ "doc/man/man3/SSL_get_certificate.3", ++ "doc/man/man3/SSL_get_ciphers.3", ++ "doc/man/man3/SSL_get_client_random.3", ++ "doc/man/man3/SSL_get_current_cipher.3", ++ "doc/man/man3/SSL_get_default_timeout.3", ++ "doc/man/man3/SSL_get_error.3", ++ "doc/man/man3/SSL_get_extms_support.3", ++ "doc/man/man3/SSL_get_fd.3", ++ "doc/man/man3/SSL_get_peer_cert_chain.3", ++ "doc/man/man3/SSL_get_peer_certificate.3", ++ "doc/man/man3/SSL_get_peer_signature_nid.3", ++ "doc/man/man3/SSL_get_peer_tmp_key.3", ++ "doc/man/man3/SSL_get_psk_identity.3", ++ "doc/man/man3/SSL_get_rbio.3", ++ "doc/man/man3/SSL_get_session.3", ++ "doc/man/man3/SSL_get_shared_sigalgs.3", ++ "doc/man/man3/SSL_get_verify_result.3", ++ "doc/man/man3/SSL_get_version.3", ++ "doc/man/man3/SSL_group_to_name.3", ++ "doc/man/man3/SSL_in_init.3", ++ "doc/man/man3/SSL_key_update.3", ++ "doc/man/man3/SSL_library_init.3", ++ "doc/man/man3/SSL_load_client_CA_file.3", ++ "doc/man/man3/SSL_new.3", ++ "doc/man/man3/SSL_pending.3", ++ "doc/man/man3/SSL_read.3", ++ "doc/man/man3/SSL_read_early_data.3", ++ "doc/man/man3/SSL_rstate_string.3", ++ "doc/man/man3/SSL_session_reused.3", ++ "doc/man/man3/SSL_set1_host.3", ++ "doc/man/man3/SSL_set_async_callback.3", ++ "doc/man/man3/SSL_set_bio.3", ++ "doc/man/man3/SSL_set_connect_state.3", ++ "doc/man/man3/SSL_set_fd.3", ++ "doc/man/man3/SSL_set_retry_verify.3", ++ "doc/man/man3/SSL_set_session.3", ++ "doc/man/man3/SSL_set_shutdown.3", ++ "doc/man/man3/SSL_set_verify_result.3", ++ "doc/man/man3/SSL_shutdown.3", ++ "doc/man/man3/SSL_state_string.3", ++ "doc/man/man3/SSL_want.3", ++ "doc/man/man3/SSL_write.3", ++ "doc/man/man3/TS_RESP_CTX_new.3", ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3", ++ "doc/man/man3/UI_STRING.3", ++ "doc/man/man3/UI_UTIL_read_pw.3", ++ "doc/man/man3/UI_create_method.3", ++ "doc/man/man3/UI_new.3", ++ "doc/man/man3/X509V3_get_d2i.3", ++ "doc/man/man3/X509V3_set_ctx.3", ++ "doc/man/man3/X509_ALGOR_dup.3", ++ "doc/man/man3/X509_CRL_get0_by_serial.3", ++ "doc/man/man3/X509_EXTENSION_set_object.3", ++ "doc/man/man3/X509_LOOKUP.3", ++ "doc/man/man3/X509_LOOKUP_hash_dir.3", ++ "doc/man/man3/X509_LOOKUP_meth_new.3", ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3", ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3", ++ "doc/man/man3/X509_NAME_get0_der.3", ++ "doc/man/man3/X509_NAME_get_index_by_NID.3", ++ "doc/man/man3/X509_NAME_print_ex.3", ++ "doc/man/man3/X509_PUBKEY_new.3", ++ "doc/man/man3/X509_SIG_get0.3", ++ "doc/man/man3/X509_STORE_CTX_get_error.3", ++ "doc/man/man3/X509_STORE_CTX_new.3", ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", ++ "doc/man/man3/X509_STORE_add_cert.3", ++ "doc/man/man3/X509_STORE_get0_param.3", ++ "doc/man/man3/X509_STORE_new.3", ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3", ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3", ++ "doc/man/man3/X509_add_cert.3", ++ "doc/man/man3/X509_check_ca.3", ++ "doc/man/man3/X509_check_host.3", ++ "doc/man/man3/X509_check_issued.3", ++ "doc/man/man3/X509_check_private_key.3", ++ "doc/man/man3/X509_check_purpose.3", ++ "doc/man/man3/X509_cmp.3", ++ "doc/man/man3/X509_cmp_time.3", ++ "doc/man/man3/X509_digest.3", ++ "doc/man/man3/X509_dup.3", ++ "doc/man/man3/X509_get0_distinguishing_id.3", ++ "doc/man/man3/X509_get0_notBefore.3", ++ "doc/man/man3/X509_get0_signature.3", ++ "doc/man/man3/X509_get0_uids.3", ++ "doc/man/man3/X509_get_extension_flags.3", ++ "doc/man/man3/X509_get_pubkey.3", ++ "doc/man/man3/X509_get_serialNumber.3", ++ "doc/man/man3/X509_get_subject_name.3", ++ "doc/man/man3/X509_get_version.3", ++ "doc/man/man3/X509_load_http.3", ++ "doc/man/man3/X509_new.3", ++ "doc/man/man3/X509_sign.3", ++ "doc/man/man3/X509_verify.3", ++ "doc/man/man3/X509_verify_cert.3", ++ "doc/man/man3/X509v3_get_ext_by_NID.3", ++ "doc/man/man3/b2i_PVK_bio_ex.3", ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3", ++ "doc/man/man3/d2i_PrivateKey.3", ++ "doc/man/man3/d2i_RSAPrivateKey.3", ++ "doc/man/man3/d2i_SSL_SESSION.3", ++ "doc/man/man3/d2i_X509.3", ++ "doc/man/man3/i2d_CMS_bio_stream.3", ++ "doc/man/man3/i2d_PKCS7_bio_stream.3", ++ "doc/man/man3/i2d_re_X509_tbs.3", ++ "doc/man/man3/o2i_SCT_LIST.3", ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" ++ ], ++ "man5" => [ ++ "doc/man/man5/config.5", ++ "doc/man/man5/fips_config.5", ++ "doc/man/man5/x509v3_config.5" ++ ], ++ "man7" => [ ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7", ++ "doc/man/man7/EVP_CIPHER-AES.7", ++ "doc/man/man7/EVP_CIPHER-ARIA.7", ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7", ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7", ++ "doc/man/man7/EVP_CIPHER-CAST.7", ++ "doc/man/man7/EVP_CIPHER-CHACHA.7", ++ "doc/man/man7/EVP_CIPHER-DES.7", ++ "doc/man/man7/EVP_CIPHER-IDEA.7", ++ "doc/man/man7/EVP_CIPHER-RC2.7", ++ "doc/man/man7/EVP_CIPHER-RC4.7", ++ "doc/man/man7/EVP_CIPHER-RC5.7", ++ "doc/man/man7/EVP_CIPHER-SEED.7", ++ "doc/man/man7/EVP_CIPHER-SM4.7", ++ "doc/man/man7/EVP_KDF-HKDF.7", ++ "doc/man/man7/EVP_KDF-KB.7", ++ "doc/man/man7/EVP_KDF-KRB5KDF.7", ++ "doc/man/man7/EVP_KDF-PBKDF1.7", ++ "doc/man/man7/EVP_KDF-PBKDF2.7", ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7", ++ "doc/man/man7/EVP_KDF-SCRYPT.7", ++ "doc/man/man7/EVP_KDF-SS.7", ++ "doc/man/man7/EVP_KDF-SSHKDF.7", ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7", ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7", ++ "doc/man/man7/EVP_KDF-X942-ASN1.7", ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7", ++ "doc/man/man7/EVP_KDF-X963.7", ++ "doc/man/man7/EVP_KEM-RSA.7", ++ "doc/man/man7/EVP_KEYEXCH-DH.7", ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7", ++ "doc/man/man7/EVP_KEYEXCH-X25519.7", ++ "doc/man/man7/EVP_MAC-BLAKE2.7", ++ "doc/man/man7/EVP_MAC-CMAC.7", ++ "doc/man/man7/EVP_MAC-GMAC.7", ++ "doc/man/man7/EVP_MAC-HMAC.7", ++ "doc/man/man7/EVP_MAC-KMAC.7", ++ "doc/man/man7/EVP_MAC-Poly1305.7", ++ "doc/man/man7/EVP_MAC-Siphash.7", ++ "doc/man/man7/EVP_MD-BLAKE2.7", ++ "doc/man/man7/EVP_MD-MD2.7", ++ "doc/man/man7/EVP_MD-MD4.7", ++ "doc/man/man7/EVP_MD-MD5-SHA1.7", ++ "doc/man/man7/EVP_MD-MD5.7", ++ "doc/man/man7/EVP_MD-MDC2.7", ++ "doc/man/man7/EVP_MD-RIPEMD160.7", ++ "doc/man/man7/EVP_MD-SHA1.7", ++ "doc/man/man7/EVP_MD-SHA2.7", ++ "doc/man/man7/EVP_MD-SHA3.7", ++ "doc/man/man7/EVP_MD-SHAKE.7", ++ "doc/man/man7/EVP_MD-SM3.7", ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7", ++ "doc/man/man7/EVP_MD-common.7", ++ "doc/man/man7/EVP_PKEY-DH.7", ++ "doc/man/man7/EVP_PKEY-DSA.7", ++ "doc/man/man7/EVP_PKEY-EC.7", ++ "doc/man/man7/EVP_PKEY-FFC.7", ++ "doc/man/man7/EVP_PKEY-HMAC.7", ++ "doc/man/man7/EVP_PKEY-RSA.7", ++ "doc/man/man7/EVP_PKEY-SM2.7", ++ "doc/man/man7/EVP_PKEY-X25519.7", ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7", ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7", ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7", ++ "doc/man/man7/EVP_RAND-SEED-SRC.7", ++ "doc/man/man7/EVP_RAND-TEST-RAND.7", ++ "doc/man/man7/EVP_RAND.7", ++ "doc/man/man7/EVP_SIGNATURE-DSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7", ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7", ++ "doc/man/man7/EVP_SIGNATURE-RSA.7", ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7", ++ "doc/man/man7/OSSL_PROVIDER-base.7", ++ "doc/man/man7/OSSL_PROVIDER-default.7", ++ "doc/man/man7/OSSL_PROVIDER-legacy.7", ++ "doc/man/man7/OSSL_PROVIDER-null.7", ++ "doc/man/man7/RAND.7", ++ "doc/man/man7/RSA-PSS.7", ++ "doc/man/man7/X25519.7", ++ "doc/man/man7/bio.7", ++ "doc/man/man7/crypto.7", ++ "doc/man/man7/ct.7", ++ "doc/man/man7/des_modes.7", ++ "doc/man/man7/evp.7", ++ "doc/man/man7/fips_module.7", ++ "doc/man/man7/life_cycle-cipher.7", ++ "doc/man/man7/life_cycle-digest.7", ++ "doc/man/man7/life_cycle-kdf.7", ++ "doc/man/man7/life_cycle-mac.7", ++ "doc/man/man7/life_cycle-pkey.7", ++ "doc/man/man7/life_cycle-rand.7", ++ "doc/man/man7/migration_guide.7", ++ "doc/man/man7/openssl-core.h.7", ++ "doc/man/man7/openssl-core_dispatch.h.7", ++ "doc/man/man7/openssl-core_names.h.7", ++ "doc/man/man7/openssl-env.7", ++ "doc/man/man7/openssl-glossary.7", ++ "doc/man/man7/openssl-threads.7", ++ "doc/man/man7/openssl_user_macros.7", ++ "doc/man/man7/ossl_store-file.7", ++ "doc/man/man7/ossl_store.7", ++ "doc/man/man7/passphrase-encoding.7", ++ "doc/man/man7/property.7", ++ "doc/man/man7/provider-asym_cipher.7", ++ "doc/man/man7/provider-base.7", ++ "doc/man/man7/provider-cipher.7", ++ "doc/man/man7/provider-decoder.7", ++ "doc/man/man7/provider-digest.7", ++ "doc/man/man7/provider-encoder.7", ++ "doc/man/man7/provider-kdf.7", ++ "doc/man/man7/provider-kem.7", ++ "doc/man/man7/provider-keyexch.7", ++ "doc/man/man7/provider-keymgmt.7", ++ "doc/man/man7/provider-mac.7", ++ "doc/man/man7/provider-object.7", ++ "doc/man/man7/provider-rand.7", ++ "doc/man/man7/provider-signature.7", ++ "doc/man/man7/provider-storemgmt.7", ++ "doc/man/man7/provider.7", ++ "doc/man/man7/proxy-certificates.7", ++ "doc/man/man7/ssl.7", ++ "doc/man/man7/x509.7" ++ ] ++ }, ++ "modules" => [ ++ "providers/fips", ++ "providers/legacy", ++ "test/p_test" ++ ], ++ "programs" => [ ++ "apps/openssl", ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test", ++ "test/aborttest", ++ "test/acvp_test", ++ "test/aesgcmtest", ++ "test/afalgtest", ++ "test/algorithmid_test", ++ "test/asn1_decode_test", ++ "test/asn1_dsa_internal_test", ++ "test/asn1_encode_test", ++ "test/asn1_internal_test", ++ "test/asn1_string_table_test", ++ "test/asn1_time_test", ++ "test/asynciotest", ++ "test/asynctest", ++ "test/bad_dtls_test", ++ "test/bftest", ++ "test/bio_callback_test", ++ "test/bio_core_test", ++ "test/bio_enc_test", ++ "test/bio_memleak_test", ++ "test/bio_prefix_text", ++ "test/bio_readbuffer_test", ++ "test/bioprinttest", ++ "test/bn_internal_test", ++ "test/bntest", ++ "test/buildtest_c_aes", ++ "test/buildtest_c_async", ++ "test/buildtest_c_blowfish", ++ "test/buildtest_c_bn", ++ "test/buildtest_c_buffer", ++ "test/buildtest_c_camellia", ++ "test/buildtest_c_cast", ++ "test/buildtest_c_cmac", ++ "test/buildtest_c_cmp_util", ++ "test/buildtest_c_conf_api", ++ "test/buildtest_c_conftypes", ++ "test/buildtest_c_core", ++ "test/buildtest_c_core_dispatch", ++ "test/buildtest_c_core_names", ++ "test/buildtest_c_core_object", ++ "test/buildtest_c_cryptoerr_legacy", ++ "test/buildtest_c_decoder", ++ "test/buildtest_c_des", ++ "test/buildtest_c_dh", ++ "test/buildtest_c_dsa", ++ "test/buildtest_c_dtls1", ++ "test/buildtest_c_e_os2", ++ "test/buildtest_c_ebcdic", ++ "test/buildtest_c_ec", ++ "test/buildtest_c_ecdh", ++ "test/buildtest_c_ecdsa", ++ "test/buildtest_c_encoder", ++ "test/buildtest_c_engine", ++ "test/buildtest_c_evp", ++ "test/buildtest_c_fips_names", ++ "test/buildtest_c_hmac", ++ "test/buildtest_c_http", ++ "test/buildtest_c_idea", ++ "test/buildtest_c_kdf", ++ "test/buildtest_c_macros", ++ "test/buildtest_c_md4", ++ "test/buildtest_c_md5", ++ "test/buildtest_c_mdc2", ++ "test/buildtest_c_modes", ++ "test/buildtest_c_obj_mac", ++ "test/buildtest_c_objects", ++ "test/buildtest_c_ossl_typ", ++ "test/buildtest_c_param_build", ++ "test/buildtest_c_params", ++ "test/buildtest_c_pem", ++ "test/buildtest_c_pem2", ++ "test/buildtest_c_prov_ssl", ++ "test/buildtest_c_provider", ++ "test/buildtest_c_quic", ++ "test/buildtest_c_rand", ++ "test/buildtest_c_rc2", ++ "test/buildtest_c_rc4", ++ "test/buildtest_c_ripemd", ++ "test/buildtest_c_rsa", ++ "test/buildtest_c_seed", ++ "test/buildtest_c_self_test", ++ "test/buildtest_c_sha", ++ "test/buildtest_c_srtp", ++ "test/buildtest_c_ssl2", ++ "test/buildtest_c_sslerr_legacy", ++ "test/buildtest_c_stack", ++ "test/buildtest_c_store", ++ "test/buildtest_c_symhacks", ++ "test/buildtest_c_tls1", ++ "test/buildtest_c_ts", ++ "test/buildtest_c_txt_db", ++ "test/buildtest_c_types", ++ "test/buildtest_c_whrlpool", ++ "test/casttest", ++ "test/chacha_internal_test", ++ "test/cipher_overhead_test", ++ "test/cipherbytes_test", ++ "test/cipherlist_test", ++ "test/ciphername_test", ++ "test/clienthellotest", ++ "test/cmactest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/cmsapitest", ++ "test/conf_include_test", ++ "test/confdump", ++ "test/constant_time_test", ++ "test/context_internal_test", ++ "test/crltest", ++ "test/ct_test", ++ "test/ctype_internal_test", ++ "test/curve448_internal_test", ++ "test/d2i_test", ++ "test/danetest", ++ "test/defltfips_test", ++ "test/destest", ++ "test/dhtest", ++ "test/drbgtest", ++ "test/dsa_no_digest_size_test", ++ "test/dsatest", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/dtlsv1listentest", ++ "test/ec_internal_test", ++ "test/ecdsatest", ++ "test/ecstresstest", ++ "test/ectest", ++ "test/endecode_test", ++ "test/endecoder_legacy_test", ++ "test/enginetest", ++ "test/errtest", ++ "test/evp_extra_test", ++ "test/evp_extra_test2", ++ "test/evp_fetch_prov_test", ++ "test/evp_kdf_test", ++ "test/evp_libctx_test", ++ "test/evp_pkey_ctx_new_from_name", ++ "test/evp_pkey_dparams_test", ++ "test/evp_pkey_provided_test", ++ "test/evp_test", ++ "test/exdatatest", ++ "test/exptest", ++ "test/fatalerrtest", ++ "test/ffc_internal_test", ++ "test/gmdifftest", ++ "test/hexstr_test", ++ "test/hmactest", ++ "test/http_test", ++ "test/ideatest", ++ "test/igetest", ++ "test/keymgmt_internal_test", ++ "test/lhash_test", ++ "test/localetest", ++ "test/mdc2_internal_test", ++ "test/mdc2test", ++ "test/memleaktest", ++ "test/modes_internal_test", ++ "test/namemap_internal_test", ++ "test/ocspapitest", ++ "test/ossl_store_test", ++ "test/packettest", ++ "test/param_build_test", ++ "test/params_api_test", ++ "test/params_conversion_test", ++ "test/params_test", ++ "test/pbelutest", ++ "test/pbetest", ++ "test/pem_read_depr_test", ++ "test/pemtest", ++ "test/pkcs12_format_test", ++ "test/pkcs7_test", ++ "test/pkey_meth_kdf_test", ++ "test/pkey_meth_test", ++ "test/poly1305_internal_test", ++ "test/property_test", ++ "test/prov_config_test", ++ "test/provfetchtest", ++ "test/provider_fallback_test", ++ "test/provider_internal_test", ++ "test/provider_pkey_test", ++ "test/provider_status_test", ++ "test/provider_test", ++ "test/rand_status_test", ++ "test/rand_test", ++ "test/rc2test", ++ "test/rc4test", ++ "test/rc5test", ++ "test/rdrand_sanitytest", ++ "test/recordlentest", ++ "test/rsa_complex", ++ "test/rsa_mp_test", ++ "test/rsa_sp800_56b_test", ++ "test/rsa_test", ++ "test/sanitytest", ++ "test/secmemtest", ++ "test/servername_test", ++ "test/sha_test", ++ "test/siphash_internal_test", ++ "test/sm2_internal_test", ++ "test/sm3_internal_test", ++ "test/sm4_internal_test", ++ "test/sparse_array_test", ++ "test/srptest", ++ "test/ssl_cert_table_internal_test", ++ "test/ssl_ctx_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/stack_test", ++ "test/sysdefaulttest", ++ "test/test_test", ++ "test/threadstest", ++ "test/threadstest_fips", ++ "test/time_offset_test", ++ "test/tls13ccstest", ++ "test/tls13encryptiontest", ++ "test/uitest", ++ "test/upcallstest", ++ "test/user_property_test", ++ "test/v3ext", ++ "test/v3nametest", ++ "test/verify_extra_test", ++ "test/versions", ++ "test/wpackettest", ++ "test/x509_check_cert_pkey_test", ++ "test/x509_dup_cert_test", ++ "test/x509_internal_test", ++ "test/x509_time_test", ++ "test/x509aux" ++ ], ++ "scripts" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl", ++ "tools/c_rehash", ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ], ++ "shared_sources" => {}, ++ "sources" => { ++ "apps/CA.pl" => [ ++ "apps/CA.pl.in" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/libapps-lib-app_libctx.o" => [ ++ "apps/lib/app_libctx.c" ++ ], ++ "apps/lib/libapps-lib-app_params.o" => [ ++ "apps/lib/app_params.c" ++ ], ++ "apps/lib/libapps-lib-app_provider.o" => [ ++ "apps/lib/app_provider.c" ++ ], ++ "apps/lib/libapps-lib-app_rand.o" => [ ++ "apps/lib/app_rand.c" ++ ], ++ "apps/lib/libapps-lib-app_x509.o" => [ ++ "apps/lib/app_x509.c" ++ ], ++ "apps/lib/libapps-lib-apps.o" => [ ++ "apps/lib/apps.c" ++ ], ++ "apps/lib/libapps-lib-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/lib/libapps-lib-columns.o" => [ ++ "apps/lib/columns.c" ++ ], ++ "apps/lib/libapps-lib-engine.o" => [ ++ "apps/lib/engine.c" ++ ], ++ "apps/lib/libapps-lib-engine_loader.o" => [ ++ "apps/lib/engine_loader.c" ++ ], ++ "apps/lib/libapps-lib-fmt.o" => [ ++ "apps/lib/fmt.c" ++ ], ++ "apps/lib/libapps-lib-http_server.o" => [ ++ "apps/lib/http_server.c" ++ ], ++ "apps/lib/libapps-lib-names.o" => [ ++ "apps/lib/names.c" ++ ], ++ "apps/lib/libapps-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/libapps-lib-s_cb.o" => [ ++ "apps/lib/s_cb.c" ++ ], ++ "apps/lib/libapps-lib-s_socket.o" => [ ++ "apps/lib/s_socket.c" ++ ], ++ "apps/lib/libapps-lib-tlssrp_depr.o" => [ ++ "apps/lib/tlssrp_depr.c" ++ ], ++ "apps/lib/libtestutil-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/uitest-bin-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/libapps.a" => [ ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o" ++ ], ++ "apps/openssl" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/openssl-bin-asn1parse.o", ++ "apps/openssl-bin-ca.o", ++ "apps/openssl-bin-ciphers.o", ++ "apps/openssl-bin-cmp.o", ++ "apps/openssl-bin-cms.o", ++ "apps/openssl-bin-crl.o", ++ "apps/openssl-bin-crl2pkcs7.o", ++ "apps/openssl-bin-dgst.o", ++ "apps/openssl-bin-dhparam.o", ++ "apps/openssl-bin-dsa.o", ++ "apps/openssl-bin-dsaparam.o", ++ "apps/openssl-bin-ec.o", ++ "apps/openssl-bin-ecparam.o", ++ "apps/openssl-bin-enc.o", ++ "apps/openssl-bin-engine.o", ++ "apps/openssl-bin-errstr.o", ++ "apps/openssl-bin-fipsinstall.o", ++ "apps/openssl-bin-gendsa.o", ++ "apps/openssl-bin-genpkey.o", ++ "apps/openssl-bin-genrsa.o", ++ "apps/openssl-bin-info.o", ++ "apps/openssl-bin-kdf.o", ++ "apps/openssl-bin-list.o", ++ "apps/openssl-bin-mac.o", ++ "apps/openssl-bin-nseq.o", ++ "apps/openssl-bin-ocsp.o", ++ "apps/openssl-bin-openssl.o", ++ "apps/openssl-bin-passwd.o", ++ "apps/openssl-bin-pkcs12.o", ++ "apps/openssl-bin-pkcs7.o", ++ "apps/openssl-bin-pkcs8.o", ++ "apps/openssl-bin-pkey.o", ++ "apps/openssl-bin-pkeyparam.o", ++ "apps/openssl-bin-pkeyutl.o", ++ "apps/openssl-bin-prime.o", ++ "apps/openssl-bin-progs.o", ++ "apps/openssl-bin-rand.o", ++ "apps/openssl-bin-rehash.o", ++ "apps/openssl-bin-req.o", ++ "apps/openssl-bin-rsa.o", ++ "apps/openssl-bin-rsautl.o", ++ "apps/openssl-bin-s_client.o", ++ "apps/openssl-bin-s_server.o", ++ "apps/openssl-bin-s_time.o", ++ "apps/openssl-bin-sess_id.o", ++ "apps/openssl-bin-smime.o", ++ "apps/openssl-bin-speed.o", ++ "apps/openssl-bin-spkac.o", ++ "apps/openssl-bin-srp.o", ++ "apps/openssl-bin-storeutl.o", ++ "apps/openssl-bin-ts.o", ++ "apps/openssl-bin-verify.o", ++ "apps/openssl-bin-version.o", ++ "apps/openssl-bin-x509.o" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/asn1parse.c" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/ca.c" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/ciphers.c" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/cmp.c" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/cms.c" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/crl.c" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/crl2pkcs7.c" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/dgst.c" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/dhparam.c" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/dsa.c" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/dsaparam.c" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/ec.c" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/ecparam.c" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/enc.c" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/engine.c" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/errstr.c" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/fipsinstall.c" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/gendsa.c" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/genpkey.c" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/genrsa.c" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/info.c" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/kdf.c" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/list.c" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/mac.c" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/nseq.c" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/ocsp.c" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/openssl.c" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/passwd.c" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/pkcs12.c" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/pkcs7.c" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/pkcs8.c" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/pkey.c" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/pkeyparam.c" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/pkeyutl.c" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/prime.c" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.c" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/rand.c" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/rehash.c" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/req.c" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/rsa.c" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/rsautl.c" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/s_client.c" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/s_server.c" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/s_time.c" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/sess_id.c" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/smime.c" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/speed.c" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/spkac.c" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/srp.c" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/storeutl.c" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/ts.c" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/verify.c" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/version.c" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/x509.c" ++ ], ++ "apps/tsget.pl" => [ ++ "apps/tsget.in" ++ ], ++ "crypto/aes/libcrypto-lib-aes-sw_64.o" => [ ++ "crypto/aes/aes-sw_64.S" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cfb.o" => [ ++ "crypto/aes/aes_cfb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ige.o" => [ ++ "crypto/aes/aes_ige.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ofb.o" => [ ++ "crypto/aes/aes_ofb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_wrap.o" => [ ++ "crypto/aes/aes_wrap.c" ++ ], ++ "crypto/aes/libfips-lib-aes-sw_64.o" => [ ++ "crypto/aes/aes-sw_64.S" ++ ], ++ "crypto/aes/libfips-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libfips-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libfips-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aria/libcrypto-lib-aria.o" => [ ++ "crypto/aria/aria.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ ++ "crypto/asn1/a_bitstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o" => [ ++ "crypto/asn1/a_d2i_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_digest.o" => [ ++ "crypto/asn1/a_digest.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_dup.o" => [ ++ "crypto/asn1/a_dup.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_gentm.o" => [ ++ "crypto/asn1/a_gentm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o" => [ ++ "crypto/asn1/a_i2d_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_int.o" => [ ++ "crypto/asn1/a_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_mbstr.o" => [ ++ "crypto/asn1/a_mbstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_object.o" => [ ++ "crypto/asn1/a_object.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_octet.o" => [ ++ "crypto/asn1/a_octet.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_print.o" => [ ++ "crypto/asn1/a_print.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_sign.o" => [ ++ "crypto/asn1/a_sign.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strex.o" => [ ++ "crypto/asn1/a_strex.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strnid.o" => [ ++ "crypto/asn1/a_strnid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_time.o" => [ ++ "crypto/asn1/a_time.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_type.o" => [ ++ "crypto/asn1/a_type.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utctm.o" => [ ++ "crypto/asn1/a_utctm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utf8.o" => [ ++ "crypto/asn1/a_utf8.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_verify.o" => [ ++ "crypto/asn1/a_verify.c" ++ ], ++ "crypto/asn1/libcrypto-lib-ameth_lib.o" => [ ++ "crypto/asn1/ameth_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_err.o" => [ ++ "crypto/asn1/asn1_err.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_gen.o" => [ ++ "crypto/asn1/asn1_gen.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o" => [ ++ "crypto/asn1/asn1_item_list.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_lib.o" => [ ++ "crypto/asn1/asn1_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_parse.o" => [ ++ "crypto/asn1/asn1_parse.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mime.o" => [ ++ "crypto/asn1/asn_mime.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_moid.o" => [ ++ "crypto/asn1/asn_moid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o" => [ ++ "crypto/asn1/asn_mstbl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_pack.o" => [ ++ "crypto/asn1/asn_pack.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_asn1.o" => [ ++ "crypto/asn1/bio_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_ndef.o" => [ ++ "crypto/asn1/bio_ndef.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_param.o" => [ ++ "crypto/asn1/d2i_param.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pr.o" => [ ++ "crypto/asn1/d2i_pr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pu.o" => [ ++ "crypto/asn1/d2i_pu.c" ++ ], ++ "crypto/asn1/libcrypto-lib-evp_asn1.o" => [ ++ "crypto/asn1/evp_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_int.o" => [ ++ "crypto/asn1/f_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_string.o" => [ ++ "crypto/asn1/f_string.c" ++ ], ++ "crypto/asn1/libcrypto-lib-i2d_evp.o" => [ ++ "crypto/asn1/i2d_evp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-n_pkey.o" => [ ++ "crypto/asn1/n_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-nsseq.o" => [ ++ "crypto/asn1/nsseq.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbe.o" => [ ++ "crypto/asn1/p5_pbe.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o" => [ ++ "crypto/asn1/p5_pbev2.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o" => [ ++ "crypto/asn1/p5_scrypt.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p8_pkey.o" => [ ++ "crypto/asn1/p8_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_bitst.o" => [ ++ "crypto/asn1/t_bitst.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_pkey.o" => [ ++ "crypto/asn1/t_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_spki.o" => [ ++ "crypto/asn1/t_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_dec.o" => [ ++ "crypto/asn1/tasn_dec.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_enc.o" => [ ++ "crypto/asn1/tasn_enc.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_fre.o" => [ ++ "crypto/asn1/tasn_fre.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_new.o" => [ ++ "crypto/asn1/tasn_new.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_prn.o" => [ ++ "crypto/asn1/tasn_prn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_scn.o" => [ ++ "crypto/asn1/tasn_scn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_typ.o" => [ ++ "crypto/asn1/tasn_typ.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_utl.o" => [ ++ "crypto/asn1/tasn_utl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_algor.o" => [ ++ "crypto/asn1/x_algor.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_bignum.o" => [ ++ "crypto/asn1/x_bignum.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_info.o" => [ ++ "crypto/asn1/x_info.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_int64.o" => [ ++ "crypto/asn1/x_int64.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_long.o" => [ ++ "crypto/asn1/x_long.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_pkey.o" => [ ++ "crypto/asn1/x_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_sig.o" => [ ++ "crypto/asn1/x_sig.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_spki.o" => [ ++ "crypto/asn1/x_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_val.o" => [ ++ "crypto/asn1/x_val.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_null.o" => [ ++ "crypto/async/arch/async_null.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_posix.o" => [ ++ "crypto/async/arch/async_posix.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_win.o" => [ ++ "crypto/async/arch/async_win.c" ++ ], ++ "crypto/async/libcrypto-lib-async.o" => [ ++ "crypto/async/async.c" ++ ], ++ "crypto/async/libcrypto-lib-async_err.o" => [ ++ "crypto/async/async_err.c" ++ ], ++ "crypto/async/libcrypto-lib-async_wait.o" => [ ++ "crypto/async/async_wait.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_cfb64.o" => [ ++ "crypto/bf/bf_cfb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ecb.o" => [ ++ "crypto/bf/bf_ecb.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_enc.o" => [ ++ "crypto/bf/bf_enc.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ofb64.o" => [ ++ "crypto/bf/bf_ofb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_skey.o" => [ ++ "crypto/bf/bf_skey.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_buff.o" => [ ++ "crypto/bio/bf_buff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_lbuf.o" => [ ++ "crypto/bio/bf_lbuf.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_nbio.o" => [ ++ "crypto/bio/bf_nbio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_null.o" => [ ++ "crypto/bio/bf_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_prefix.o" => [ ++ "crypto/bio/bf_prefix.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_readbuff.o" => [ ++ "crypto/bio/bf_readbuff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_addr.o" => [ ++ "crypto/bio/bio_addr.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_cb.o" => [ ++ "crypto/bio/bio_cb.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_dump.o" => [ ++ "crypto/bio/bio_dump.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_err.o" => [ ++ "crypto/bio/bio_err.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_lib.o" => [ ++ "crypto/bio/bio_lib.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_meth.o" => [ ++ "crypto/bio/bio_meth.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_print.o" => [ ++ "crypto/bio/bio_print.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock.o" => [ ++ "crypto/bio/bio_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock2.o" => [ ++ "crypto/bio/bio_sock2.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_acpt.o" => [ ++ "crypto/bio/bss_acpt.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_bio.o" => [ ++ "crypto/bio/bss_bio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_conn.o" => [ ++ "crypto/bio/bss_conn.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_core.o" => [ ++ "crypto/bio/bss_core.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_dgram.o" => [ ++ "crypto/bio/bss_dgram.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_fd.o" => [ ++ "crypto/bio/bss_fd.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_file.o" => [ ++ "crypto/bio/bss_file.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_log.o" => [ ++ "crypto/bio/bss_log.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_mem.o" => [ ++ "crypto/bio/bss_mem.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_null.o" => [ ++ "crypto/bio/bss_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_sock.o" => [ ++ "crypto/bio/bss_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" => [ ++ "crypto/bio/ossl_core_bio.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/libcrypto-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_depr.o" => [ ++ "crypto/bn/bn_depr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_err.o" => [ ++ "crypto/bn/bn_err.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_print.o" => [ ++ "crypto/bn/bn_print.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_srp.o" => [ ++ "crypto/bn/bn_srp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_x931p.o" => [ ++ "crypto/bn/bn_x931p.c" ++ ], ++ "crypto/bn/libcrypto-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/bn/libfips-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/libfips-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libfips-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libfips-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libfips-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libfips-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libfips-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libfips-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libfips-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libfips-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libfips-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libfips-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libfips-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libfips-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libfips-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libfips-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/libfips-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/bn/liblegacy-lib-bn-sw_64.o" => [ ++ "crypto/bn/bn-sw_64.S" ++ ], ++ "crypto/bn/liblegacy-lib-sw_64-mont.o" => [ ++ "crypto/bn/sw_64-mont.S" ++ ], ++ "crypto/buffer/libcrypto-lib-buf_err.o" => [ ++ "crypto/buffer/buf_err.c" ++ ], ++ "crypto/buffer/libcrypto-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/buffer/libfips-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/camellia/libcrypto-lib-camellia.o" => [ ++ "crypto/camellia/camellia.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o" => [ ++ "crypto/camellia/cmll_cbc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o" => [ ++ "crypto/camellia/cmll_cfb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o" => [ ++ "crypto/camellia/cmll_ctr.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o" => [ ++ "crypto/camellia/cmll_ecb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_misc.o" => [ ++ "crypto/camellia/cmll_misc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" => [ ++ "crypto/camellia/cmll_ofb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_cfb64.o" => [ ++ "crypto/cast/c_cfb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ecb.o" => [ ++ "crypto/cast/c_ecb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_enc.o" => [ ++ "crypto/cast/c_enc.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ofb64.o" => [ ++ "crypto/cast/c_ofb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_skey.o" => [ ++ "crypto/cast/c_skey.c" ++ ], ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" => [ ++ "crypto/chacha/chacha_enc.c" ++ ], ++ "crypto/cmac/libcrypto-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmac/libfips-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_asn.o" => [ ++ "crypto/cmp/cmp_asn.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_client.o" => [ ++ "crypto/cmp/cmp_client.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o" => [ ++ "crypto/cmp/cmp_ctx.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_err.o" => [ ++ "crypto/cmp/cmp_err.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ ++ "crypto/cmp/cmp_hdr.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_http.o" => [ ++ "crypto/cmp/cmp_http.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_msg.o" => [ ++ "crypto/cmp/cmp_msg.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_protect.o" => [ ++ "crypto/cmp/cmp_protect.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_server.o" => [ ++ "crypto/cmp/cmp_server.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_status.o" => [ ++ "crypto/cmp/cmp_status.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_util.o" => [ ++ "crypto/cmp/cmp_util.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" => [ ++ "crypto/cmp/cmp_vfy.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_asn1.o" => [ ++ "crypto/cms/cms_asn1.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_att.o" => [ ++ "crypto/cms/cms_att.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_cd.o" => [ ++ "crypto/cms/cms_cd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dd.o" => [ ++ "crypto/cms/cms_dd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dh.o" => [ ++ "crypto/cms/cms_dh.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ec.o" => [ ++ "crypto/cms/cms_ec.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_enc.o" => [ ++ "crypto/cms/cms_enc.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_env.o" => [ ++ "crypto/cms/cms_env.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_err.o" => [ ++ "crypto/cms/cms_err.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ess.o" => [ ++ "crypto/cms/cms_ess.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_io.o" => [ ++ "crypto/cms/cms_io.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_kari.o" => [ ++ "crypto/cms/cms_kari.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_lib.o" => [ ++ "crypto/cms/cms_lib.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_pwri.o" => [ ++ "crypto/cms/cms_pwri.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_rsa.o" => [ ++ "crypto/cms/cms_rsa.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_sd.o" => [ ++ "crypto/cms/cms_sd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_smime.o" => [ ++ "crypto/cms/cms_smime.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_api.o" => [ ++ "crypto/conf/conf_api.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_def.o" => [ ++ "crypto/conf/conf_def.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_err.o" => [ ++ "crypto/conf/conf_err.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_lib.o" => [ ++ "crypto/conf/conf_lib.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mall.o" => [ ++ "crypto/conf/conf_mall.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mod.o" => [ ++ "crypto/conf/conf_mod.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_sap.o" => [ ++ "crypto/conf/conf_sap.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_ssl.o" => [ ++ "crypto/conf/conf_ssl.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_asn.o" => [ ++ "crypto/crmf/crmf_asn.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_err.o" => [ ++ "crypto/crmf/crmf_err.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_lib.o" => [ ++ "crypto/crmf/crmf_lib.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" => [ ++ "crypto/crmf/crmf_pbm.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_b64.o" => [ ++ "crypto/ct/ct_b64.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_err.o" => [ ++ "crypto/ct/ct_err.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_log.o" => [ ++ "crypto/ct/ct_log.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_oct.o" => [ ++ "crypto/ct/ct_oct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_policy.o" => [ ++ "crypto/ct/ct_policy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_prn.o" => [ ++ "crypto/ct/ct_prn.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct.o" => [ ++ "crypto/ct/ct_sct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o" => [ ++ "crypto/ct/ct_sct_ctx.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_vfy.o" => [ ++ "crypto/ct/ct_vfy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" => [ ++ "crypto/ct/ct_x509v3.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_cksm.o" => [ ++ "crypto/des/cbc_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_enc.o" => [ ++ "crypto/des/cbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64ede.o" => [ ++ "crypto/des/cfb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64enc.o" => [ ++ "crypto/des/cfb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb_enc.o" => [ ++ "crypto/des/cfb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb_enc.o" => [ ++ "crypto/des/ecb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt.o" => [ ++ "crypto/des/fcrypt.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64ede.o" => [ ++ "crypto/des/ofb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64enc.o" => [ ++ "crypto/des/ofb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb_enc.o" => [ ++ "crypto/des/ofb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-pcbc_enc.o" => [ ++ "crypto/des/pcbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-qud_cksm.o" => [ ++ "crypto/des/qud_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-rand_key.o" => [ ++ "crypto/des/rand_key.c" ++ ], ++ "crypto/des/libcrypto-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/libcrypto-lib-str2key.o" => [ ++ "crypto/des/str2key.c" ++ ], ++ "crypto/des/libcrypto-lib-xcbc_enc.o" => [ ++ "crypto/des/xcbc_enc.c" ++ ], ++ "crypto/des/libfips-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libfips-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libfips-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libfips-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/liblegacy-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/liblegacy-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_ameth.o" => [ ++ "crypto/dh/dh_ameth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_asn1.o" => [ ++ "crypto/dh/dh_asn1.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_depr.o" => [ ++ "crypto/dh/dh_depr.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_err.o" => [ ++ "crypto/dh/dh_err.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_meth.o" => [ ++ "crypto/dh/dh_meth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_pmeth.o" => [ ++ "crypto/dh/dh_pmeth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_prn.o" => [ ++ "crypto/dh/dh_prn.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o" => [ ++ "crypto/dh/dh_rfc5114.c" ++ ], ++ "crypto/dh/libfips-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libfips-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libfips-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libfips-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libfips-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libfips-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libfips-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o" => [ ++ "crypto/dsa/dsa_ameth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o" => [ ++ "crypto/dsa/dsa_asn1.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_depr.o" => [ ++ "crypto/dsa/dsa_depr.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_err.o" => [ ++ "crypto/dsa/dsa_err.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_meth.o" => [ ++ "crypto/dsa/dsa_meth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o" => [ ++ "crypto/dsa/dsa_pmeth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_prn.o" => [ ++ "crypto/dsa/dsa_prn.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dl.o" => [ ++ "crypto/dso/dso_dl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o" => [ ++ "crypto/dso/dso_dlfcn.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_err.o" => [ ++ "crypto/dso/dso_err.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_lib.o" => [ ++ "crypto/dso/dso_lib.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_openssl.o" => [ ++ "crypto/dso/dso_openssl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_vms.o" => [ ++ "crypto/dso/dso_vms.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_win32.o" => [ ++ "crypto/dso/dso_win32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/libcrypto-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_ameth.o" => [ ++ "crypto/ec/ec_ameth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_deprecated.o" => [ ++ "crypto/ec/ec_deprecated.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_err.o" => [ ++ "crypto/ec/ec_err.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_pmeth.o" => [ ++ "crypto/ec/ec_pmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_print.o" => [ ++ "crypto/ec/ec_print.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libcrypto-lib-eck_prn.o" => [ ++ "crypto/ec/eck_prn.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto/ec/ecx_meth.c" ++ ], ++ "crypto/ec/libfips-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libfips-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libfips-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libfips-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libfips-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libfips-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libfips-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libfips-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libfips-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o" => [ ++ "crypto/encode_decode/decoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o" => [ ++ "crypto/encode_decode/decoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o" => [ ++ "crypto/encode_decode/decoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o" => [ ++ "crypto/encode_decode/decoder_pkey.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o" => [ ++ "crypto/encode_decode/encoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o" => [ ++ "crypto/encode_decode/encoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o" => [ ++ "crypto/encode_decode/encoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" => [ ++ "crypto/encode_decode/encoder_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_all.o" => [ ++ "crypto/engine/eng_all.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_cnf.o" => [ ++ "crypto/engine/eng_cnf.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_ctrl.o" => [ ++ "crypto/engine/eng_ctrl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_dyn.o" => [ ++ "crypto/engine/eng_dyn.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_err.o" => [ ++ "crypto/engine/eng_err.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_fat.o" => [ ++ "crypto/engine/eng_fat.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_init.o" => [ ++ "crypto/engine/eng_init.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_lib.o" => [ ++ "crypto/engine/eng_lib.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_list.o" => [ ++ "crypto/engine/eng_list.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_openssl.o" => [ ++ "crypto/engine/eng_openssl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_pkey.o" => [ ++ "crypto/engine/eng_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_rdrand.o" => [ ++ "crypto/engine/eng_rdrand.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_table.o" => [ ++ "crypto/engine/eng_table.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_asnmth.o" => [ ++ "crypto/engine/tb_asnmth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_cipher.o" => [ ++ "crypto/engine/tb_cipher.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dh.o" => [ ++ "crypto/engine/tb_dh.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_digest.o" => [ ++ "crypto/engine/tb_digest.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dsa.o" => [ ++ "crypto/engine/tb_dsa.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_eckey.o" => [ ++ "crypto/engine/tb_eckey.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o" => [ ++ "crypto/engine/tb_pkmeth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rand.o" => [ ++ "crypto/engine/tb_rand.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rsa.o" => [ ++ "crypto/engine/tb_rsa.c" ++ ], ++ "crypto/err/libcrypto-lib-err.o" => [ ++ "crypto/err/err.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all.o" => [ ++ "crypto/err/err_all.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all_legacy.o" => [ ++ "crypto/err/err_all_legacy.c" ++ ], ++ "crypto/err/libcrypto-lib-err_blocks.o" => [ ++ "crypto/err/err_blocks.c" ++ ], ++ "crypto/err/libcrypto-lib-err_prn.o" => [ ++ "crypto/err/err_prn.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_asn1.o" => [ ++ "crypto/ess/ess_asn1.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_err.o" => [ ++ "crypto/ess/ess_err.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_lib.o" => [ ++ "crypto/ess/ess_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_b64.o" => [ ++ "crypto/evp/bio_b64.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_enc.o" => [ ++ "crypto/evp/bio_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_md.o" => [ ++ "crypto/evp/bio_md.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_ok.o" => [ ++ "crypto/evp/bio_ok.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_allc.o" => [ ++ "crypto/evp/c_allc.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_alld.o" => [ ++ "crypto/evp/c_alld.c" ++ ], ++ "crypto/evp/libcrypto-lib-cmeth_lib.o" => [ ++ "crypto/evp/cmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o" => [ ++ "crypto/evp/ctrl_params_translate.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_ctrl.o" => [ ++ "crypto/evp/dh_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o" => [ ++ "crypto/evp/dsa_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto/evp/e_aes.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha256.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto/evp/e_aria.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_bf.o" => [ ++ "crypto/evp/e_bf.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto/evp/e_camellia.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_cast.o" => [ ++ "crypto/evp/e_cast.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o" => [ ++ "crypto/evp/e_chacha20_poly1305.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto/evp/e_des.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto/evp/e_des3.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_idea.o" => [ ++ "crypto/evp/e_idea.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_null.o" => [ ++ "crypto/evp/e_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_old.o" => [ ++ "crypto/evp/e_old.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc2.o" => [ ++ "crypto/evp/e_rc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4.o" => [ ++ "crypto/evp/e_rc4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o" => [ ++ "crypto/evp/e_rc4_hmac_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc5.o" => [ ++ "crypto/evp/e_rc5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_seed.o" => [ ++ "crypto/evp/e_seed.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto/evp/e_sm4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o" => [ ++ "crypto/evp/e_xcbc_d.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_ctrl.o" => [ ++ "crypto/evp/ec_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-encode.o" => [ ++ "crypto/evp/encode.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_cnf.o" => [ ++ "crypto/evp/evp_cnf.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_err.o" => [ ++ "crypto/evp/evp_err.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_key.o" => [ ++ "crypto/evp/evp_key.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pbe.o" => [ ++ "crypto/evp/evp_pbe.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pkey.o" => [ ++ "crypto/evp/evp_pkey.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libcrypto-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_blake2.o" => [ ++ "crypto/evp/legacy_blake2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md4.o" => [ ++ "crypto/evp/legacy_md4.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5.o" => [ ++ "crypto/evp/legacy_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o" => [ ++ "crypto/evp/legacy_md5_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o" => [ ++ "crypto/evp/legacy_mdc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o" => [ ++ "crypto/evp/legacy_ripemd.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_sha.o" => [ ++ "crypto/evp/legacy_sha.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_wp.o" => [ ++ "crypto/evp/legacy_wp.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_null.o" => [ ++ "crypto/evp/m_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-names.o" => [ ++ "crypto/evp/names.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt.o" => [ ++ "crypto/evp/p5_crpt.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt2.o" => [ ++ "crypto/evp/p5_crpt2.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_dec.o" => [ ++ "crypto/evp/p_dec.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_enc.o" => [ ++ "crypto/evp/p_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_legacy.o" => [ ++ "crypto/evp/p_legacy.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_open.o" => [ ++ "crypto/evp/p_open.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_seal.o" => [ ++ "crypto/evp/p_seal.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_sign.o" => [ ++ "crypto/evp/p_sign.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_verify.o" => [ ++ "crypto/evp/p_verify.c" ++ ], ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o" => [ ++ "crypto/evp/pbe_scrypt.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/evp/libfips-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libfips-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libfips-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libfips-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libfips-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libfips-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libfips-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libfips-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libfips-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libfips-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libfips-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libfips-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libfips-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libfips-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libfips-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libfips-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/hmac/libcrypto-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/hmac/libfips-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/http/libcrypto-lib-http_client.o" => [ ++ "crypto/http/http_client.c" ++ ], ++ "crypto/http/libcrypto-lib-http_err.o" => [ ++ "crypto/http/http_err.c" ++ ], ++ "crypto/http/libcrypto-lib-http_lib.o" => [ ++ "crypto/http/http_lib.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cbc.o" => [ ++ "crypto/idea/i_cbc.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cfb64.o" => [ ++ "crypto/idea/i_cfb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ecb.o" => [ ++ "crypto/idea/i_ecb.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ofb64.o" => [ ++ "crypto/idea/i_ofb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_skey.o" => [ ++ "crypto/idea/i_skey.c" ++ ], ++ "crypto/kdf/libcrypto-lib-kdf_err.o" => [ ++ "crypto/kdf/kdf_err.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lh_stats.o" => [ ++ "crypto/lhash/lh_stats.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/lhash/libfips-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/libcrypto-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libcrypto-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libcrypto-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libcrypto-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libcrypto-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libcrypto-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libcrypto-lib-cpt_err.o" => [ ++ "crypto/cpt_err.c" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libcrypto-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libcrypto-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/cversion.c" ++ ], ++ "crypto/libcrypto-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libcrypto-lib-ebcdic.o" => [ ++ "crypto/ebcdic.c" ++ ], ++ "crypto/libcrypto-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libcrypto-lib-getenv.o" => [ ++ "crypto/getenv.c" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/info.c" ++ ], ++ "crypto/libcrypto-lib-init.o" => [ ++ "crypto/init.c" ++ ], ++ "crypto/libcrypto-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libcrypto-lib-mem.o" => [ ++ "crypto/mem.c" ++ ], ++ "crypto/libcrypto-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libcrypto-lib-mem_sec.o" => [ ++ "crypto/mem_sec.c" ++ ], ++ "crypto/libcrypto-lib-o_dir.o" => [ ++ "crypto/o_dir.c" ++ ], ++ "crypto/libcrypto-lib-o_fopen.o" => [ ++ "crypto/o_fopen.c" ++ ], ++ "crypto/libcrypto-lib-o_init.o" => [ ++ "crypto/o_init.c" ++ ], ++ "crypto/libcrypto-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libcrypto-lib-o_time.o" => [ ++ "crypto/o_time.c" ++ ], ++ "crypto/libcrypto-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libcrypto-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libcrypto-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libcrypto-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libcrypto-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libcrypto-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libcrypto-lib-passphrase.o" => [ ++ "crypto/passphrase.c" ++ ], ++ "crypto/libcrypto-lib-provider.o" => [ ++ "crypto/provider.c" ++ ], ++ "crypto/libcrypto-lib-provider_child.o" => [ ++ "crypto/provider_child.c" ++ ], ++ "crypto/libcrypto-lib-provider_conf.o" => [ ++ "crypto/provider_conf.c" ++ ], ++ "crypto/libcrypto-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libcrypto-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libcrypto-lib-punycode.o" => [ ++ "crypto/punycode.c" ++ ], ++ "crypto/libcrypto-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libcrypto-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libcrypto-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libcrypto-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libcrypto-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libcrypto-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/libcrypto-lib-trace.o" => [ ++ "crypto/trace.c" ++ ], ++ "crypto/libcrypto-lib-uid.o" => [ ++ "crypto/uid.c" ++ ], ++ "crypto/libfips-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libfips-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libfips-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libfips-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libfips-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libfips-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libfips-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libfips-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libfips-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libfips-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libfips-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libfips-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libfips-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libfips-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libfips-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libfips-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libfips-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libfips-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libfips-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libfips-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libfips-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libfips-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libfips-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libfips-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libfips-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libfips-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libfips-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_dgst.o" => [ ++ "crypto/md4/md4_dgst.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_one.o" => [ ++ "crypto/md4/md4_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o" => [ ++ "crypto/mdc2/mdc2_one.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ ++ "crypto/mdc2/mdc2dgst.c" ++ ], ++ "crypto/modes/libcrypto-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cts128.o" => [ ++ "crypto/modes/cts128.c" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ocb128.o" => [ ++ "crypto/modes/ocb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-siv128.o" => [ ++ "crypto/modes/siv128.c" ++ ], ++ "crypto/modes/libcrypto-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libcrypto-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/modes/libfips-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libfips-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libfips-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libfips-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libfips-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libfips-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libfips-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/objects/libcrypto-lib-o_names.o" => [ ++ "crypto/objects/o_names.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_dat.o" => [ ++ "crypto/objects/obj_dat.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_err.o" => [ ++ "crypto/objects/obj_err.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_lib.o" => [ ++ "crypto/objects/obj_lib.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_xref.o" => [ ++ "crypto/objects/obj_xref.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o" => [ ++ "crypto/ocsp/ocsp_asn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o" => [ ++ "crypto/ocsp/ocsp_cl.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o" => [ ++ "crypto/ocsp/ocsp_err.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o" => [ ++ "crypto/ocsp/ocsp_ext.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o" => [ ++ "crypto/ocsp/ocsp_http.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o" => [ ++ "crypto/ocsp/ocsp_lib.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o" => [ ++ "crypto/ocsp/ocsp_prn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o" => [ ++ "crypto/ocsp/ocsp_srv.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o" => [ ++ "crypto/ocsp/ocsp_vfy.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ ++ "crypto/ocsp/v3_ocsp.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_all.o" => [ ++ "crypto/pem/pem_all.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_err.o" => [ ++ "crypto/pem/pem_err.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_info.o" => [ ++ "crypto/pem/pem_info.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_lib.o" => [ ++ "crypto/pem/pem_lib.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_oth.o" => [ ++ "crypto/pem/pem_oth.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pk8.o" => [ ++ "crypto/pem/pem_pk8.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pkey.o" => [ ++ "crypto/pem/pem_pkey.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_sign.o" => [ ++ "crypto/pem/pem_sign.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_x509.o" => [ ++ "crypto/pem/pem_x509.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_xaux.o" => [ ++ "crypto/pem/pem_xaux.c" ++ ], ++ "crypto/pem/libcrypto-lib-pvkfmt.o" => [ ++ "crypto/pem/pvkfmt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_add.o" => [ ++ "crypto/pkcs12/p12_add.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o" => [ ++ "crypto/pkcs12/p12_asn.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o" => [ ++ "crypto/pkcs12/p12_attr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o" => [ ++ "crypto/pkcs12/p12_crpt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o" => [ ++ "crypto/pkcs12/p12_crt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o" => [ ++ "crypto/pkcs12/p12_decr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_init.o" => [ ++ "crypto/pkcs12/p12_init.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_key.o" => [ ++ "crypto/pkcs12/p12_key.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o" => [ ++ "crypto/pkcs12/p12_kiss.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o" => [ ++ "crypto/pkcs12/p12_mutl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o" => [ ++ "crypto/pkcs12/p12_npas.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o" => [ ++ "crypto/pkcs12/p12_p8d.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o" => [ ++ "crypto/pkcs12/p12_p8e.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o" => [ ++ "crypto/pkcs12/p12_sbag.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o" => [ ++ "crypto/pkcs12/p12_utl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" => [ ++ "crypto/pkcs12/pk12err.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o" => [ ++ "crypto/pkcs7/bio_pk7.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o" => [ ++ "crypto/pkcs7/pk7_asn1.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o" => [ ++ "crypto/pkcs7/pk7_attr.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o" => [ ++ "crypto/pkcs7/pk7_doit.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o" => [ ++ "crypto/pkcs7/pk7_lib.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o" => [ ++ "crypto/pkcs7/pk7_mime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o" => [ ++ "crypto/pkcs7/pk7_smime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" => [ ++ "crypto/pkcs7/pkcs7err.c" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o" => [ ++ "crypto/poly1305/poly1305-sw_64.S" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305.o" => [ ++ "crypto/poly1305/poly1305.c" ++ ], ++ "crypto/property/libcrypto-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libcrypto-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libcrypto-lib-property_err.o" => [ ++ "crypto/property/property_err.c" ++ ], ++ "crypto/property/libcrypto-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libcrypto-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libcrypto-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/property/libfips-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libfips-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libfips-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libfips-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libfips-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/rand/libcrypto-lib-prov_seed.o" => [ ++ "crypto/rand/prov_seed.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_deprecated.o" => [ ++ "crypto/rand/rand_deprecated.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_err.o" => [ ++ "crypto/rand/rand_err.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_meth.o" => [ ++ "crypto/rand/rand_meth.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_pool.o" => [ ++ "crypto/rand/rand_pool.c" ++ ], ++ "crypto/rand/libcrypto-lib-randfile.o" => [ ++ "crypto/rand/randfile.c" ++ ], ++ "crypto/rand/libfips-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o" => [ ++ "crypto/rc2/rc2_cbc.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o" => [ ++ "crypto/rc2/rc2_ecb.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_skey.o" => [ ++ "crypto/rc2/rc2_skey.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o" => [ ++ "crypto/rc2/rc2cfb64.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" => [ ++ "crypto/rc2/rc2ofb64.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_enc.o" => [ ++ "crypto/rc4/rc4_enc.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" => [ ++ "crypto/rc4/rc4_skey.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o" => [ ++ "crypto/ripemd/rmd_dgst.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" => [ ++ "crypto/ripemd/rmd_one.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o" => [ ++ "crypto/rsa/rsa_ameth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o" => [ ++ "crypto/rsa/rsa_asn1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_depr.o" => [ ++ "crypto/rsa/rsa_depr.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_err.o" => [ ++ "crypto/rsa/rsa_err.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_meth.o" => [ ++ "crypto/rsa/rsa_meth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp.o" => [ ++ "crypto/rsa/rsa_mp.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o" => [ ++ "crypto/rsa/rsa_pmeth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_prn.o" => [ ++ "crypto/rsa/rsa_prn.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_saos.o" => [ ++ "crypto/rsa/rsa_saos.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o" => [ ++ "crypto/rsa/rsa_x931g.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o" => [ ++ "crypto/rsa/rsa_acvp_test_params.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed.o" => [ ++ "crypto/seed/seed.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cbc.o" => [ ++ "crypto/seed/seed_cbc.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cfb.o" => [ ++ "crypto/seed/seed_cfb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ecb.o" => [ ++ "crypto/seed/seed_ecb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ofb.o" => [ ++ "crypto/seed/seed_ofb.c" ++ ], ++ "crypto/sha/libcrypto-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o" => [ ++ "crypto/sha/sha1-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha1_one.o" => [ ++ "crypto/sha/sha1_one.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o" => [ ++ "crypto/sha/sha256-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o" => [ ++ "crypto/sha/sha512-sw_64.S" ++ ], ++ "crypto/sha/libcrypto-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/sha/libfips-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libfips-lib-sha1-sw_64.o" => [ ++ "crypto/sha/sha1-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libfips-lib-sha256-sw_64.o" => [ ++ "crypto/sha/sha256-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libfips-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libfips-lib-sha512-sw_64.o" => [ ++ "crypto/sha/sha512-sw_64.S" ++ ], ++ "crypto/sha/libfips-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/siphash/libcrypto-lib-siphash.o" => [ ++ "crypto/siphash/siphash.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ ++ "crypto/sm2/sm2_crypt.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_err.o" => [ ++ "crypto/sm2/sm2_err.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_key.o" => [ ++ "crypto/sm2/sm2_key.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" => [ ++ "crypto/sm2/sm2_sign.c" ++ ], ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o" => [ ++ "crypto/sm3/legacy_sm3.c" ++ ], ++ "crypto/sm3/libcrypto-lib-sm3.o" => [ ++ "crypto/sm3/sm3.c" ++ ], ++ "crypto/sm4/libcrypto-lib-sm4.o" => [ ++ "crypto/sm4/sm4.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_lib.o" => [ ++ "crypto/srp/srp_lib.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_vfy.o" => [ ++ "crypto/srp/srp_vfy.c" ++ ], ++ "crypto/stack/libcrypto-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/stack/libfips-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/store/libcrypto-lib-store_err.o" => [ ++ "crypto/store/store_err.c" ++ ], ++ "crypto/store/libcrypto-lib-store_init.o" => [ ++ "crypto/store/store_init.c" ++ ], ++ "crypto/store/libcrypto-lib-store_lib.o" => [ ++ "crypto/store/store_lib.c" ++ ], ++ "crypto/store/libcrypto-lib-store_meth.o" => [ ++ "crypto/store/store_meth.c" ++ ], ++ "crypto/store/libcrypto-lib-store_register.o" => [ ++ "crypto/store/store_register.c" ++ ], ++ "crypto/store/libcrypto-lib-store_result.o" => [ ++ "crypto/store/store_result.c" ++ ], ++ "crypto/store/libcrypto-lib-store_strings.o" => [ ++ "crypto/store/store_strings.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_asn1.o" => [ ++ "crypto/ts/ts_asn1.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_conf.o" => [ ++ "crypto/ts/ts_conf.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_err.o" => [ ++ "crypto/ts/ts_err.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_lib.o" => [ ++ "crypto/ts/ts_lib.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_print.o" => [ ++ "crypto/ts/ts_req_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_utils.o" => [ ++ "crypto/ts/ts_req_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o" => [ ++ "crypto/ts/ts_rsp_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o" => [ ++ "crypto/ts/ts_rsp_sign.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o" => [ ++ "crypto/ts/ts_rsp_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o" => [ ++ "crypto/ts/ts_rsp_verify.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" => [ ++ "crypto/ts/ts_verify_ctx.c" ++ ], ++ "crypto/txt_db/libcrypto-lib-txt_db.o" => [ ++ "crypto/txt_db/txt_db.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_err.o" => [ ++ "crypto/ui/ui_err.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_lib.o" => [ ++ "crypto/ui/ui_lib.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_null.o" => [ ++ "crypto/ui/ui_null.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_openssl.o" => [ ++ "crypto/ui/ui_openssl.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_util.o" => [ ++ "crypto/ui/ui_util.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_block.o" => [ ++ "crypto/whrlpool/wp_block.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" => [ ++ "crypto/whrlpool/wp_dgst.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_dir.o" => [ ++ "crypto/x509/by_dir.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_file.o" => [ ++ "crypto/x509/by_file.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_store.o" => [ ++ "crypto/x509/by_store.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_cache.o" => [ ++ "crypto/x509/pcy_cache.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_data.o" => [ ++ "crypto/x509/pcy_data.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_lib.o" => [ ++ "crypto/x509/pcy_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_map.o" => [ ++ "crypto/x509/pcy_map.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_node.o" => [ ++ "crypto/x509/pcy_node.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_tree.o" => [ ++ "crypto/x509/pcy_tree.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_crl.o" => [ ++ "crypto/x509/t_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_req.o" => [ ++ "crypto/x509/t_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_x509.o" => [ ++ "crypto/x509/t_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_addr.o" => [ ++ "crypto/x509/v3_addr.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_admis.o" => [ ++ "crypto/x509/v3_admis.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akeya.o" => [ ++ "crypto/x509/v3_akeya.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akid.o" => [ ++ "crypto/x509/v3_akid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_asid.o" => [ ++ "crypto/x509/v3_asid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bcons.o" => [ ++ "crypto/x509/v3_bcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bitst.o" => [ ++ "crypto/x509/v3_bitst.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_conf.o" => [ ++ "crypto/x509/v3_conf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_cpols.o" => [ ++ "crypto/x509/v3_cpols.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_crld.o" => [ ++ "crypto/x509/v3_crld.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_enum.o" => [ ++ "crypto/x509/v3_enum.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_extku.o" => [ ++ "crypto/x509/v3_extku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_genn.o" => [ ++ "crypto/x509/v3_genn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ia5.o" => [ ++ "crypto/x509/v3_ia5.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_info.o" => [ ++ "crypto/x509/v3_info.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_int.o" => [ ++ "crypto/x509/v3_int.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ist.o" => [ ++ "crypto/x509/v3_ist.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_lib.o" => [ ++ "crypto/x509/v3_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ncons.o" => [ ++ "crypto/x509/v3_ncons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pci.o" => [ ++ "crypto/x509/v3_pci.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcia.o" => [ ++ "crypto/x509/v3_pcia.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcons.o" => [ ++ "crypto/x509/v3_pcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pku.o" => [ ++ "crypto/x509/v3_pku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pmaps.o" => [ ++ "crypto/x509/v3_pmaps.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_prn.o" => [ ++ "crypto/x509/v3_prn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_purp.o" => [ ++ "crypto/x509/v3_purp.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_san.o" => [ ++ "crypto/x509/v3_san.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_skid.o" => [ ++ "crypto/x509/v3_skid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ ++ "crypto/x509/v3_sxnet.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ ++ "crypto/x509/v3_tlsf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utf8.o" => [ ++ "crypto/x509/v3_utf8.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utl.o" => [ ++ "crypto/x509/v3_utl.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3err.o" => [ ++ "crypto/x509/v3err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_att.o" => [ ++ "crypto/x509/x509_att.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_cmp.o" => [ ++ "crypto/x509/x509_cmp.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_d2.o" => [ ++ "crypto/x509/x509_d2.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_def.o" => [ ++ "crypto/x509/x509_def.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_err.o" => [ ++ "crypto/x509/x509_err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_ext.o" => [ ++ "crypto/x509/x509_ext.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_lu.o" => [ ++ "crypto/x509/x509_lu.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_meth.o" => [ ++ "crypto/x509/x509_meth.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_obj.o" => [ ++ "crypto/x509/x509_obj.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_r2x.o" => [ ++ "crypto/x509/x509_r2x.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_req.o" => [ ++ "crypto/x509/x509_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_set.o" => [ ++ "crypto/x509/x509_set.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_trust.o" => [ ++ "crypto/x509/x509_trust.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_txt.o" => [ ++ "crypto/x509/x509_txt.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_v3.o" => [ ++ "crypto/x509/x509_v3.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vfy.o" => [ ++ "crypto/x509/x509_vfy.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vpm.o" => [ ++ "crypto/x509/x509_vpm.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509cset.o" => [ ++ "crypto/x509/x509cset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509name.o" => [ ++ "crypto/x509/x509name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509rset.o" => [ ++ "crypto/x509/x509rset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509spki.o" => [ ++ "crypto/x509/x509spki.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509type.o" => [ ++ "crypto/x509/x509type.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_all.o" => [ ++ "crypto/x509/x_all.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_attrib.o" => [ ++ "crypto/x509/x_attrib.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_crl.o" => [ ++ "crypto/x509/x_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_exten.o" => [ ++ "crypto/x509/x_exten.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_name.o" => [ ++ "crypto/x509/x_name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_pubkey.o" => [ ++ "crypto/x509/x_pubkey.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_req.o" => [ ++ "crypto/x509/x_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509.o" => [ ++ "crypto/x509/x_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509a.o" => [ ++ "crypto/x509/x_x509a.c" ++ ], ++ "engines/libcrypto-lib-e_capi.o" => [ ++ "engines/e_capi.c" ++ ], ++ "engines/libcrypto-lib-e_padlock.o" => [ ++ "engines/e_padlock.c" ++ ], ++ "fuzz/asn1-test" => [ ++ "fuzz/asn1-test-bin-asn1.o", ++ "fuzz/asn1-test-bin-fuzz_rand.o", ++ "fuzz/asn1-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1-test-bin-asn1.o" => [ ++ "fuzz/asn1.c" ++ ], ++ "fuzz/asn1-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/asn1-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "fuzz/asn1parse-test-bin-asn1parse.o", ++ "fuzz/asn1parse-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1parse-test-bin-asn1parse.o" => [ ++ "fuzz/asn1parse.c" ++ ], ++ "fuzz/asn1parse-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bignum-test" => [ ++ "fuzz/bignum-test-bin-bignum.o", ++ "fuzz/bignum-test-bin-test-corpus.o" ++ ], ++ "fuzz/bignum-test-bin-bignum.o" => [ ++ "fuzz/bignum.c" ++ ], ++ "fuzz/bignum-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bndiv-test" => [ ++ "fuzz/bndiv-test-bin-bndiv.o", ++ "fuzz/bndiv-test-bin-test-corpus.o" ++ ], ++ "fuzz/bndiv-test-bin-bndiv.o" => [ ++ "fuzz/bndiv.c" ++ ], ++ "fuzz/bndiv-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/client-test" => [ ++ "fuzz/client-test-bin-client.o", ++ "fuzz/client-test-bin-fuzz_rand.o", ++ "fuzz/client-test-bin-test-corpus.o" ++ ], ++ "fuzz/client-test-bin-client.o" => [ ++ "fuzz/client.c" ++ ], ++ "fuzz/client-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/client-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cmp-test" => [ ++ "fuzz/cmp-test-bin-cmp.o", ++ "fuzz/cmp-test-bin-fuzz_rand.o", ++ "fuzz/cmp-test-bin-test-corpus.o" ++ ], ++ "fuzz/cmp-test-bin-cmp.o" => [ ++ "fuzz/cmp.c" ++ ], ++ "fuzz/cmp-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/cmp-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cms-test" => [ ++ "fuzz/cms-test-bin-cms.o", ++ "fuzz/cms-test-bin-test-corpus.o" ++ ], ++ "fuzz/cms-test-bin-cms.o" => [ ++ "fuzz/cms.c" ++ ], ++ "fuzz/cms-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/conf-test" => [ ++ "fuzz/conf-test-bin-conf.o", ++ "fuzz/conf-test-bin-test-corpus.o" ++ ], ++ "fuzz/conf-test-bin-conf.o" => [ ++ "fuzz/conf.c" ++ ], ++ "fuzz/conf-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/crl-test" => [ ++ "fuzz/crl-test-bin-crl.o", ++ "fuzz/crl-test-bin-test-corpus.o" ++ ], ++ "fuzz/crl-test-bin-crl.o" => [ ++ "fuzz/crl.c" ++ ], ++ "fuzz/crl-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/ct-test" => [ ++ "fuzz/ct-test-bin-ct.o", ++ "fuzz/ct-test-bin-test-corpus.o" ++ ], ++ "fuzz/ct-test-bin-ct.o" => [ ++ "fuzz/ct.c" ++ ], ++ "fuzz/ct-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/server-test" => [ ++ "fuzz/server-test-bin-fuzz_rand.o", ++ "fuzz/server-test-bin-server.o", ++ "fuzz/server-test-bin-test-corpus.o" ++ ], ++ "fuzz/server-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/server-test-bin-server.o" => [ ++ "fuzz/server.c" ++ ], ++ "fuzz/server-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test" => [ ++ "fuzz/x509-test-bin-fuzz_rand.o", ++ "fuzz/x509-test-bin-test-corpus.o", ++ "fuzz/x509-test-bin-x509.o" ++ ], ++ "fuzz/x509-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/x509-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test-bin-x509.o" => [ ++ "fuzz/x509.c" ++ ], ++ "libcrypto" => [ ++ "crypto/aes/libcrypto-lib-aes-sw_64.o", ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aria/libcrypto-lib-aria.o", ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o", ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o", ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o", ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o", ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o", ++ "crypto/bn/libcrypto-lib-bn-sw_64.o", ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/bn/libcrypto-lib-sw_64-mont.o", ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o", ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o", ++ "crypto/chacha/libcrypto-lib-chacha_enc.o", ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o", ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o", ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o", ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o", ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o", ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o", ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o", ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o", ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o", ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o", ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o", ++ "crypto/kdf/libcrypto-lib-kdf_err.o", ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o", ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o", ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o", ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o", ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o", ++ "crypto/poly1305/libcrypto-lib-poly1305-sw_64.o", ++ "crypto/poly1305/libcrypto-lib-poly1305.o", ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o", ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o", ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o", ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o", ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512-sw_64.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/siphash/libcrypto-lib-siphash.o", ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o", ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o", ++ "crypto/sm4/libcrypto-lib-sm4.o", ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o", ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o", ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o", ++ "crypto/txt_db/libcrypto-lib-txt_db.o", ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o", ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o", ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o", ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o", ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "libssl" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/der/der_digests_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/der/der_dsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/der/der_dsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/der/der_dsa_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/der/der_ec_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/der/der_ec_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/der/der_ec_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/der/der_ecx_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/der/der_ecx_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/der/der_rsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/der/der_rsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/der/der_wrap_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/der/der_sm2_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/der/der_sm2_key.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/der/der_sm2_sig.c" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/libcommon-lib-provider_ctx.o" => [ ++ "providers/common/provider_ctx.c" ++ ], ++ "providers/common/libcommon-lib-provider_err.o" => [ ++ "providers/common/provider_err.c" ++ ], ++ "providers/common/libdefault-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libdefault-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libdefault-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libdefault-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libdefault-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck_default.o" => [ ++ "providers/common/securitycheck_default.c" ++ ], ++ "providers/common/libfips-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libfips-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libfips-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libfips-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libfips-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libfips-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libfips-lib-securitycheck_fips.o" => [ ++ "providers/common/securitycheck_fips.c" ++ ], ++ "providers/fips" => [ ++ "providers/fips.ld", ++ "providers/fips/fips-dso-fips_entry.o" ++ ], ++ "providers/fips/fips-dso-fips_entry.o" => [ ++ "providers/fips/fips_entry.c" ++ ], ++ "providers/fips/libfips-lib-fipsprov.o" => [ ++ "providers/fips/fipsprov.c" ++ ], ++ "providers/fips/libfips-lib-self_test.o" => [ ++ "providers/fips/self_test.c" ++ ], ++ "providers/fips/libfips-lib-self_test_kats.o" => [ ++ "providers/fips/self_test_kats.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o" => [ ++ "providers/implementations/asymciphers/sm2_enc.c" ++ ], ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o" => [ ++ "providers/implementations/ciphers/ciphercommon.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o" => [ ++ "providers/implementations/ciphers/ciphercommon_block.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o" => [ ++ "providers/implementations/ciphers/cipher_aria.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o" => [ ++ "providers/implementations/ciphers/cipher_camellia.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o" => [ ++ "providers/implementations/ciphers/cipher_camellia_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o" => [ ++ "providers/implementations/ciphers/cipher_null.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ ++ "providers/implementations/ciphers/cipher_sm4.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_sm4_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o" => [ ++ "providers/implementations/ciphers/cipher_cast5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_cast5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o" => [ ++ "providers/implementations/ciphers/cipher_des.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o" => [ ++ "providers/implementations/ciphers/cipher_des_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o" => [ ++ "providers/implementations/ciphers/cipher_desx.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o" => [ ++ "providers/implementations/ciphers/cipher_desx_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o" => [ ++ "providers/implementations/ciphers/cipher_idea.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o" => [ ++ "providers/implementations/ciphers/cipher_idea_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o" => [ ++ "providers/implementations/ciphers/cipher_rc2.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc2_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o" => [ ++ "providers/implementations/ciphers/cipher_rc4.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o" => [ ++ "providers/implementations/ciphers/cipher_seed.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o" => [ ++ "providers/implementations/ciphers/cipher_seed_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/digests/libcommon-lib-digestcommon.o" => [ ++ "providers/implementations/digests/digestcommon.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o" => [ ++ "providers/implementations/digests/blake2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o" => [ ++ "providers/implementations/digests/blake2b_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o" => [ ++ "providers/implementations/digests/blake2s_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_prov.o" => [ ++ "providers/implementations/digests/md5_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o" => [ ++ "providers/implementations/digests/md5_sha1_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-null_prov.o" => [ ++ "providers/implementations/digests/null_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o" => [ ++ "providers/implementations/digests/sm3_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o" => [ ++ "providers/implementations/digests/md4_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o" => [ ++ "providers/implementations/digests/mdc2_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o" => [ ++ "providers/implementations/digests/ripemd_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" => [ ++ "providers/implementations/digests/wp_prov.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o" => [ ++ "providers/implementations/encode_decode/decode_der2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o" => [ ++ "providers/implementations/encode_decode/decode_epki2pki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o" => [ ++ "providers/implementations/encode_decode/decode_msblob2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o" => [ ++ "providers/implementations/encode_decode/decode_pem2der.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o" => [ ++ "providers/implementations/encode_decode/decode_pvk2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o" => [ ++ "providers/implementations/encode_decode/decode_spki2typespki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/implementations/encode_decode/encode_key2any.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o" => [ ++ "providers/implementations/encode_decode/encode_key2blob.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o" => [ ++ "providers/implementations/encode_decode/encode_key2ms.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o" => [ ++ "providers/implementations/encode_decode/encode_key2text.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ ++ "providers/implementations/encode_decode/endecoder_common.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o" => [ ++ "providers/implementations/kdfs/krb5kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o" => [ ++ "providers/implementations/kdfs/pkcs12kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o" => [ ++ "providers/implementations/kdfs/scrypt.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ ++ "providers/implementations/kdfs/pbkdf1.c" ++ ], ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ ++ "providers/implementations/macs/blake2b_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o" => [ ++ "providers/implementations/macs/blake2s_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o" => [ ++ "providers/implementations/macs/poly1305_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o" => [ ++ "providers/implementations/macs/siphash_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-seed_src.o" => [ ++ "providers/implementations/rands/seed_src.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/libfips-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libfips-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o" => [ ++ "providers/implementations/rands/seeding/rand_cpu_x86.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o" => [ ++ "providers/implementations/rands/seeding/rand_tsc.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o" => [ ++ "providers/implementations/rands/seeding/rand_unix.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" => [ ++ "providers/implementations/rands/seeding/rand_win.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/implementations/signature/sm2_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ ++ "providers/implementations/storemgmt/file_store.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ ++ "providers/implementations/storemgmt/file_store_any2obj.c" ++ ], ++ "providers/legacy" => [ ++ "providers/legacy-dso-legacyprov.o", ++ "providers/legacy.ld" ++ ], ++ "providers/legacy-dso-legacyprov.o" => [ ++ "providers/legacyprov.c" ++ ], ++ "providers/libcommon.a" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "providers/libcrypto-lib-baseprov.o" => [ ++ "providers/baseprov.c" ++ ], ++ "providers/libcrypto-lib-defltprov.o" => [ ++ "providers/defltprov.c" ++ ], ++ "providers/libcrypto-lib-nullprov.o" => [ ++ "providers/nullprov.c" ++ ], ++ "providers/libcrypto-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o", ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", ++ "ssl/libdefault-lib-s3_cbc.o" ++ ], ++ "providers/libfips.a" => [ ++ "crypto/aes/libfips-lib-aes-sw_64.o", ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o", ++ "crypto/bn/libfips-lib-bn-sw_64.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/bn/libfips-lib-sw_64-mont.o", ++ "crypto/buffer/libfips-lib-buffer.o", ++ "crypto/cmac/libfips-lib-cmac.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o", ++ "crypto/hmac/libfips-lib-hmac.o", ++ "crypto/lhash/libfips-lib-lhash.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o", ++ "crypto/rand/libfips-lib-rand_lib.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1-sw_64.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256-sw_64.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512-sw_64.o", ++ "crypto/sha/libfips-lib-sha512.o", ++ "crypto/stack/libfips-lib-stack.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o", ++ "providers/libcommon.a", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "providers/liblegacy-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/liblegacy.a" => [ ++ "crypto/bn/liblegacy-lib-bn-sw_64.o", ++ "crypto/bn/liblegacy-lib-sw_64-mont.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", ++ "providers/liblegacy-lib-prov_running.o" ++ ], ++ "ssl/libdefault-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libfips-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libssl-lib-bio_ssl.o" => [ ++ "ssl/bio_ssl.c" ++ ], ++ "ssl/libssl-lib-d1_lib.o" => [ ++ "ssl/d1_lib.c" ++ ], ++ "ssl/libssl-lib-d1_msg.o" => [ ++ "ssl/d1_msg.c" ++ ], ++ "ssl/libssl-lib-d1_srtp.o" => [ ++ "ssl/d1_srtp.c" ++ ], ++ "ssl/libssl-lib-methods.o" => [ ++ "ssl/methods.c" ++ ], ++ "ssl/libssl-lib-pqueue.o" => [ ++ "ssl/pqueue.c" ++ ], ++ "ssl/libssl-lib-s3_enc.o" => [ ++ "ssl/s3_enc.c" ++ ], ++ "ssl/libssl-lib-s3_lib.o" => [ ++ "ssl/s3_lib.c" ++ ], ++ "ssl/libssl-lib-s3_msg.o" => [ ++ "ssl/s3_msg.c" ++ ], ++ "ssl/libssl-lib-ssl_asn1.o" => [ ++ "ssl/ssl_asn1.c" ++ ], ++ "ssl/libssl-lib-ssl_cert.o" => [ ++ "ssl/ssl_cert.c" ++ ], ++ "ssl/libssl-lib-ssl_ciph.o" => [ ++ "ssl/ssl_ciph.c" ++ ], ++ "ssl/libssl-lib-ssl_conf.o" => [ ++ "ssl/ssl_conf.c" ++ ], ++ "ssl/libssl-lib-ssl_err.o" => [ ++ "ssl/ssl_err.c" ++ ], ++ "ssl/libssl-lib-ssl_err_legacy.o" => [ ++ "ssl/ssl_err_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_init.o" => [ ++ "ssl/ssl_init.c" ++ ], ++ "ssl/libssl-lib-ssl_lib.o" => [ ++ "ssl/ssl_lib.c" ++ ], ++ "ssl/libssl-lib-ssl_mcnf.o" => [ ++ "ssl/ssl_mcnf.c" ++ ], ++ "ssl/libssl-lib-ssl_quic.o" => [ ++ "ssl/ssl_quic.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa.o" => [ ++ "ssl/ssl_rsa.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa_legacy.o" => [ ++ "ssl/ssl_rsa_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_sess.o" => [ ++ "ssl/ssl_sess.c" ++ ], ++ "ssl/libssl-lib-ssl_stat.o" => [ ++ "ssl/ssl_stat.c" ++ ], ++ "ssl/libssl-lib-ssl_txt.o" => [ ++ "ssl/ssl_txt.c" ++ ], ++ "ssl/libssl-lib-ssl_utst.o" => [ ++ "ssl/ssl_utst.c" ++ ], ++ "ssl/libssl-lib-t1_enc.o" => [ ++ "ssl/t1_enc.c" ++ ], ++ "ssl/libssl-lib-t1_lib.o" => [ ++ "ssl/t1_lib.c" ++ ], ++ "ssl/libssl-lib-t1_trce.o" => [ ++ "ssl/t1_trce.c" ++ ], ++ "ssl/libssl-lib-tls13_enc.o" => [ ++ "ssl/tls13_enc.c" ++ ], ++ "ssl/libssl-lib-tls_depr.o" => [ ++ "ssl/tls_depr.c" ++ ], ++ "ssl/libssl-lib-tls_srp.o" => [ ++ "ssl/tls_srp.c" ++ ], ++ "ssl/record/libcommon-lib-tls_pad.o" => [ ++ "ssl/record/tls_pad.c" ++ ], ++ "ssl/record/libssl-lib-dtls1_bitmap.o" => [ ++ "ssl/record/dtls1_bitmap.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_d1.o" => [ ++ "ssl/record/rec_layer_d1.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_s3.o" => [ ++ "ssl/record/rec_layer_s3.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_buffer.o" => [ ++ "ssl/record/ssl3_buffer.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record.o" => [ ++ "ssl/record/ssl3_record.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ ++ "ssl/record/ssl3_record_tls13.c" ++ ], ++ "ssl/statem/libssl-lib-extensions.o" => [ ++ "ssl/statem/extensions.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_clnt.o" => [ ++ "ssl/statem/extensions_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_cust.o" => [ ++ "ssl/statem/extensions_cust.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_srvr.o" => [ ++ "ssl/statem/extensions_srvr.c" ++ ], ++ "ssl/statem/libssl-lib-statem.o" => [ ++ "ssl/statem/statem.c" ++ ], ++ "ssl/statem/libssl-lib-statem_clnt.o" => [ ++ "ssl/statem/statem_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-statem_dtls.o" => [ ++ "ssl/statem/statem_dtls.c" ++ ], ++ "ssl/statem/libssl-lib-statem_lib.o" => [ ++ "ssl/statem/statem_lib.c" ++ ], ++ "ssl/statem/libssl-lib-statem_quic.o" => [ ++ "ssl/statem/statem_quic.c" ++ ], ++ "ssl/statem/libssl-lib-statem_srvr.o" => [ ++ "ssl/statem/statem_srvr.c" ++ ], ++ "test/aborttest" => [ ++ "test/aborttest-bin-aborttest.o" ++ ], ++ "test/aborttest-bin-aborttest.o" => [ ++ "test/aborttest.c" ++ ], ++ "test/acvp_test" => [ ++ "test/acvp_test-bin-acvp_test.o" ++ ], ++ "test/acvp_test-bin-acvp_test.o" => [ ++ "test/acvp_test.c" ++ ], ++ "test/aesgcmtest" => [ ++ "test/aesgcmtest-bin-aesgcmtest.o" ++ ], ++ "test/aesgcmtest-bin-aesgcmtest.o" => [ ++ "test/aesgcmtest.c" ++ ], ++ "test/afalgtest" => [ ++ "test/afalgtest-bin-afalgtest.o" ++ ], ++ "test/afalgtest-bin-afalgtest.o" => [ ++ "test/afalgtest.c" ++ ], ++ "test/algorithmid_test" => [ ++ "test/algorithmid_test-bin-algorithmid_test.o" ++ ], ++ "test/algorithmid_test-bin-algorithmid_test.o" => [ ++ "test/algorithmid_test.c" ++ ], ++ "test/asn1_decode_test" => [ ++ "test/asn1_decode_test-bin-asn1_decode_test.o" ++ ], ++ "test/asn1_decode_test-bin-asn1_decode_test.o" => [ ++ "test/asn1_decode_test.c" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" ++ ], ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" => [ ++ "test/asn1_dsa_internal_test.c" ++ ], ++ "test/asn1_encode_test" => [ ++ "test/asn1_encode_test-bin-asn1_encode_test.o" ++ ], ++ "test/asn1_encode_test-bin-asn1_encode_test.o" => [ ++ "test/asn1_encode_test.c" ++ ], ++ "test/asn1_internal_test" => [ ++ "test/asn1_internal_test-bin-asn1_internal_test.o" ++ ], ++ "test/asn1_internal_test-bin-asn1_internal_test.o" => [ ++ "test/asn1_internal_test.c" ++ ], ++ "test/asn1_string_table_test" => [ ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" ++ ], ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" => [ ++ "test/asn1_string_table_test.c" ++ ], ++ "test/asn1_time_test" => [ ++ "test/asn1_time_test-bin-asn1_time_test.o" ++ ], ++ "test/asn1_time_test-bin-asn1_time_test.o" => [ ++ "test/asn1_time_test.c" ++ ], ++ "test/asynciotest" => [ ++ "test/asynciotest-bin-asynciotest.o", ++ "test/helpers/asynciotest-bin-ssltestlib.o" ++ ], ++ "test/asynciotest-bin-asynciotest.o" => [ ++ "test/asynciotest.c" ++ ], ++ "test/asynctest" => [ ++ "test/asynctest-bin-asynctest.o" ++ ], ++ "test/asynctest-bin-asynctest.o" => [ ++ "test/asynctest.c" ++ ], ++ "test/bad_dtls_test" => [ ++ "test/bad_dtls_test-bin-bad_dtls_test.o" ++ ], ++ "test/bad_dtls_test-bin-bad_dtls_test.o" => [ ++ "test/bad_dtls_test.c" ++ ], ++ "test/bftest" => [ ++ "test/bftest-bin-bftest.o" ++ ], ++ "test/bftest-bin-bftest.o" => [ ++ "test/bftest.c" ++ ], ++ "test/bio_callback_test" => [ ++ "test/bio_callback_test-bin-bio_callback_test.o" ++ ], ++ "test/bio_callback_test-bin-bio_callback_test.o" => [ ++ "test/bio_callback_test.c" ++ ], ++ "test/bio_core_test" => [ ++ "test/bio_core_test-bin-bio_core_test.o" ++ ], ++ "test/bio_core_test-bin-bio_core_test.o" => [ ++ "test/bio_core_test.c" ++ ], ++ "test/bio_enc_test" => [ ++ "test/bio_enc_test-bin-bio_enc_test.o" ++ ], ++ "test/bio_enc_test-bin-bio_enc_test.o" => [ ++ "test/bio_enc_test.c" ++ ], ++ "test/bio_memleak_test" => [ ++ "test/bio_memleak_test-bin-bio_memleak_test.o" ++ ], ++ "test/bio_memleak_test-bin-bio_memleak_test.o" => [ ++ "test/bio_memleak_test.c" ++ ], ++ "test/bio_prefix_text" => [ ++ "test/bio_prefix_text-bin-bio_prefix_text.o" ++ ], ++ "test/bio_prefix_text-bin-bio_prefix_text.o" => [ ++ "test/bio_prefix_text.c" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" ++ ], ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ ++ "test/bio_readbuffer_test.c" ++ ], ++ "test/bioprinttest" => [ ++ "test/bioprinttest-bin-bioprinttest.o" ++ ], ++ "test/bioprinttest-bin-bioprinttest.o" => [ ++ "test/bioprinttest.c" ++ ], ++ "test/bn_internal_test" => [ ++ "test/bn_internal_test-bin-bn_internal_test.o" ++ ], ++ "test/bn_internal_test-bin-bn_internal_test.o" => [ ++ "test/bn_internal_test.c" ++ ], ++ "test/bntest" => [ ++ "test/bntest-bin-bntest.o" ++ ], ++ "test/bntest-bin-bntest.o" => [ ++ "test/bntest.c" ++ ], ++ "test/buildtest_c_aes" => [ ++ "test/buildtest_c_aes-bin-buildtest_aes.o" ++ ], ++ "test/buildtest_c_aes-bin-buildtest_aes.o" => [ ++ "test/buildtest_aes.c" ++ ], ++ "test/buildtest_c_async" => [ ++ "test/buildtest_c_async-bin-buildtest_async.o" ++ ], ++ "test/buildtest_c_async-bin-buildtest_async.o" => [ ++ "test/buildtest_async.c" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" ++ ], ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" => [ ++ "test/buildtest_blowfish.c" ++ ], ++ "test/buildtest_c_bn" => [ ++ "test/buildtest_c_bn-bin-buildtest_bn.o" ++ ], ++ "test/buildtest_c_bn-bin-buildtest_bn.o" => [ ++ "test/buildtest_bn.c" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" ++ ], ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ ++ "test/buildtest_buffer.c" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ++ ], ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" => [ ++ "test/buildtest_camellia.c" ++ ], ++ "test/buildtest_c_cast" => [ ++ "test/buildtest_c_cast-bin-buildtest_cast.o" ++ ], ++ "test/buildtest_c_cast-bin-buildtest_cast.o" => [ ++ "test/buildtest_cast.c" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" ++ ], ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" => [ ++ "test/buildtest_cmac.c" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" ++ ], ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" => [ ++ "test/buildtest_cmp_util.c" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" ++ ], ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" => [ ++ "test/buildtest_conf_api.c" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" ++ ], ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" => [ ++ "test/buildtest_conftypes.c" ++ ], ++ "test/buildtest_c_core" => [ ++ "test/buildtest_c_core-bin-buildtest_core.o" ++ ], ++ "test/buildtest_c_core-bin-buildtest_core.o" => [ ++ "test/buildtest_core.c" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" ++ ], ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ ++ "test/buildtest_core_dispatch.c" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" ++ ], ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ ++ "test/buildtest_core_names.c" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ++ ], ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" => [ ++ "test/buildtest_core_object.c" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" ++ ], ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" => [ ++ "test/buildtest_cryptoerr_legacy.c" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" ++ ], ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" => [ ++ "test/buildtest_decoder.c" ++ ], ++ "test/buildtest_c_des" => [ ++ "test/buildtest_c_des-bin-buildtest_des.o" ++ ], ++ "test/buildtest_c_des-bin-buildtest_des.o" => [ ++ "test/buildtest_des.c" ++ ], ++ "test/buildtest_c_dh" => [ ++ "test/buildtest_c_dh-bin-buildtest_dh.o" ++ ], ++ "test/buildtest_c_dh-bin-buildtest_dh.o" => [ ++ "test/buildtest_dh.c" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" ++ ], ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" => [ ++ "test/buildtest_dsa.c" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" ++ ], ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" => [ ++ "test/buildtest_dtls1.c" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" ++ ], ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ ++ "test/buildtest_e_os2.c" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ++ ], ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" => [ ++ "test/buildtest_ebcdic.c" ++ ], ++ "test/buildtest_c_ec" => [ ++ "test/buildtest_c_ec-bin-buildtest_ec.o" ++ ], ++ "test/buildtest_c_ec-bin-buildtest_ec.o" => [ ++ "test/buildtest_ec.c" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" ++ ], ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" => [ ++ "test/buildtest_ecdh.c" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" ++ ], ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" => [ ++ "test/buildtest_ecdsa.c" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" ++ ], ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" => [ ++ "test/buildtest_encoder.c" ++ ], ++ "test/buildtest_c_engine" => [ ++ "test/buildtest_c_engine-bin-buildtest_engine.o" ++ ], ++ "test/buildtest_c_engine-bin-buildtest_engine.o" => [ ++ "test/buildtest_engine.c" ++ ], ++ "test/buildtest_c_evp" => [ ++ "test/buildtest_c_evp-bin-buildtest_evp.o" ++ ], ++ "test/buildtest_c_evp-bin-buildtest_evp.o" => [ ++ "test/buildtest_evp.c" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" ++ ], ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" => [ ++ "test/buildtest_fips_names.c" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" ++ ], ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ ++ "test/buildtest_hmac.c" ++ ], ++ "test/buildtest_c_http" => [ ++ "test/buildtest_c_http-bin-buildtest_http.o" ++ ], ++ "test/buildtest_c_http-bin-buildtest_http.o" => [ ++ "test/buildtest_http.c" ++ ], ++ "test/buildtest_c_idea" => [ ++ "test/buildtest_c_idea-bin-buildtest_idea.o" ++ ], ++ "test/buildtest_c_idea-bin-buildtest_idea.o" => [ ++ "test/buildtest_idea.c" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ++ ], ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" => [ ++ "test/buildtest_kdf.c" ++ ], ++ "test/buildtest_c_macros" => [ ++ "test/buildtest_c_macros-bin-buildtest_macros.o" ++ ], ++ "test/buildtest_c_macros-bin-buildtest_macros.o" => [ ++ "test/buildtest_macros.c" ++ ], ++ "test/buildtest_c_md4" => [ ++ "test/buildtest_c_md4-bin-buildtest_md4.o" ++ ], ++ "test/buildtest_c_md4-bin-buildtest_md4.o" => [ ++ "test/buildtest_md4.c" ++ ], ++ "test/buildtest_c_md5" => [ ++ "test/buildtest_c_md5-bin-buildtest_md5.o" ++ ], ++ "test/buildtest_c_md5-bin-buildtest_md5.o" => [ ++ "test/buildtest_md5.c" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" ++ ], ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ ++ "test/buildtest_mdc2.c" ++ ], ++ "test/buildtest_c_modes" => [ ++ "test/buildtest_c_modes-bin-buildtest_modes.o" ++ ], ++ "test/buildtest_c_modes-bin-buildtest_modes.o" => [ ++ "test/buildtest_modes.c" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" ++ ], ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" => [ ++ "test/buildtest_obj_mac.c" ++ ], ++ "test/buildtest_c_objects" => [ ++ "test/buildtest_c_objects-bin-buildtest_objects.o" ++ ], ++ "test/buildtest_c_objects-bin-buildtest_objects.o" => [ ++ "test/buildtest_objects.c" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" ++ ], ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" => [ ++ "test/buildtest_ossl_typ.c" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" ++ ], ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" => [ ++ "test/buildtest_param_build.c" ++ ], ++ "test/buildtest_c_params" => [ ++ "test/buildtest_c_params-bin-buildtest_params.o" ++ ], ++ "test/buildtest_c_params-bin-buildtest_params.o" => [ ++ "test/buildtest_params.c" ++ ], ++ "test/buildtest_c_pem" => [ ++ "test/buildtest_c_pem-bin-buildtest_pem.o" ++ ], ++ "test/buildtest_c_pem-bin-buildtest_pem.o" => [ ++ "test/buildtest_pem.c" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" ++ ], ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" => [ ++ "test/buildtest_pem2.c" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" ++ ], ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" => [ ++ "test/buildtest_prov_ssl.c" ++ ], ++ "test/buildtest_c_provider" => [ ++ "test/buildtest_c_provider-bin-buildtest_provider.o" ++ ], ++ "test/buildtest_c_provider-bin-buildtest_provider.o" => [ ++ "test/buildtest_provider.c" ++ ], ++ "test/buildtest_c_quic" => [ ++ "test/buildtest_c_quic-bin-buildtest_quic.o" ++ ], ++ "test/buildtest_c_quic-bin-buildtest_quic.o" => [ ++ "test/buildtest_quic.c" ++ ], ++ "test/buildtest_c_rand" => [ ++ "test/buildtest_c_rand-bin-buildtest_rand.o" ++ ], ++ "test/buildtest_c_rand-bin-buildtest_rand.o" => [ ++ "test/buildtest_rand.c" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" ++ ], ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" => [ ++ "test/buildtest_rc2.c" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" ++ ], ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" => [ ++ "test/buildtest_rc4.c" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" ++ ], ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" => [ ++ "test/buildtest_ripemd.c" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" ++ ], ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" => [ ++ "test/buildtest_rsa.c" ++ ], ++ "test/buildtest_c_seed" => [ ++ "test/buildtest_c_seed-bin-buildtest_seed.o" ++ ], ++ "test/buildtest_c_seed-bin-buildtest_seed.o" => [ ++ "test/buildtest_seed.c" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" ++ ], ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" => [ ++ "test/buildtest_self_test.c" ++ ], ++ "test/buildtest_c_sha" => [ ++ "test/buildtest_c_sha-bin-buildtest_sha.o" ++ ], ++ "test/buildtest_c_sha-bin-buildtest_sha.o" => [ ++ "test/buildtest_sha.c" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" ++ ], ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" => [ ++ "test/buildtest_srtp.c" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" ++ ], ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" => [ ++ "test/buildtest_ssl2.c" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" ++ ], ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" => [ ++ "test/buildtest_sslerr_legacy.c" ++ ], ++ "test/buildtest_c_stack" => [ ++ "test/buildtest_c_stack-bin-buildtest_stack.o" ++ ], ++ "test/buildtest_c_stack-bin-buildtest_stack.o" => [ ++ "test/buildtest_stack.c" ++ ], ++ "test/buildtest_c_store" => [ ++ "test/buildtest_c_store-bin-buildtest_store.o" ++ ], ++ "test/buildtest_c_store-bin-buildtest_store.o" => [ ++ "test/buildtest_store.c" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" ++ ], ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ ++ "test/buildtest_symhacks.c" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ++ ], ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" => [ ++ "test/buildtest_tls1.c" ++ ], ++ "test/buildtest_c_ts" => [ ++ "test/buildtest_c_ts-bin-buildtest_ts.o" ++ ], ++ "test/buildtest_c_ts-bin-buildtest_ts.o" => [ ++ "test/buildtest_ts.c" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" ++ ], ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" => [ ++ "test/buildtest_txt_db.c" ++ ], ++ "test/buildtest_c_types" => [ ++ "test/buildtest_c_types-bin-buildtest_types.o" ++ ], ++ "test/buildtest_c_types-bin-buildtest_types.o" => [ ++ "test/buildtest_types.c" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" ++ ], ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ ++ "test/buildtest_whrlpool.c" ++ ], ++ "test/casttest" => [ ++ "test/casttest-bin-casttest.o" ++ ], ++ "test/casttest-bin-casttest.o" => [ ++ "test/casttest.c" ++ ], ++ "test/chacha_internal_test" => [ ++ "test/chacha_internal_test-bin-chacha_internal_test.o" ++ ], ++ "test/chacha_internal_test-bin-chacha_internal_test.o" => [ ++ "test/chacha_internal_test.c" ++ ], ++ "test/cipher_overhead_test" => [ ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" ++ ], ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" => [ ++ "test/cipher_overhead_test.c" ++ ], ++ "test/cipherbytes_test" => [ ++ "test/cipherbytes_test-bin-cipherbytes_test.o" ++ ], ++ "test/cipherbytes_test-bin-cipherbytes_test.o" => [ ++ "test/cipherbytes_test.c" ++ ], ++ "test/cipherlist_test" => [ ++ "test/cipherlist_test-bin-cipherlist_test.o" ++ ], ++ "test/cipherlist_test-bin-cipherlist_test.o" => [ ++ "test/cipherlist_test.c" ++ ], ++ "test/ciphername_test" => [ ++ "test/ciphername_test-bin-ciphername_test.o" ++ ], ++ "test/ciphername_test-bin-ciphername_test.o" => [ ++ "test/ciphername_test.c" ++ ], ++ "test/clienthellotest" => [ ++ "test/clienthellotest-bin-clienthellotest.o" ++ ], ++ "test/clienthellotest-bin-clienthellotest.o" => [ ++ "test/clienthellotest.c" ++ ], ++ "test/cmactest" => [ ++ "test/cmactest-bin-cmactest.o" ++ ], ++ "test/cmactest-bin-cmactest.o" => [ ++ "test/cmactest.c" ++ ], ++ "test/cmp_asn_test" => [ ++ "test/cmp_asn_test-bin-cmp_asn_test.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_asn_test-bin-cmp_asn_test.o" => [ ++ "test/cmp_asn_test.c" ++ ], ++ "test/cmp_client_test" => [ ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "test/cmp_client_test-bin-cmp_client_test.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_client_test-bin-cmp_client_test.o" => [ ++ "test/cmp_client_test.c" ++ ], ++ "test/cmp_ctx_test" => [ ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o" => [ ++ "test/cmp_ctx_test.c" ++ ], ++ "test/cmp_hdr_test" => [ ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o" => [ ++ "test/cmp_hdr_test.c" ++ ], ++ "test/cmp_msg_test" => [ ++ "test/cmp_msg_test-bin-cmp_msg_test.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_msg_test-bin-cmp_msg_test.o" => [ ++ "test/cmp_msg_test.c" ++ ], ++ "test/cmp_protect_test" => [ ++ "test/cmp_protect_test-bin-cmp_protect_test.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_protect_test-bin-cmp_protect_test.o" => [ ++ "test/cmp_protect_test.c" ++ ], ++ "test/cmp_server_test" => [ ++ "test/cmp_server_test-bin-cmp_server_test.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_server_test-bin-cmp_server_test.o" => [ ++ "test/cmp_server_test.c" ++ ], ++ "test/cmp_status_test" => [ ++ "test/cmp_status_test-bin-cmp_status_test.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_status_test-bin-cmp_status_test.o" => [ ++ "test/cmp_status_test.c" ++ ], ++ "test/cmp_vfy_test" => [ ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o" => [ ++ "test/cmp_vfy_test.c" ++ ], ++ "test/cmsapitest" => [ ++ "test/cmsapitest-bin-cmsapitest.o" ++ ], ++ "test/cmsapitest-bin-cmsapitest.o" => [ ++ "test/cmsapitest.c" ++ ], ++ "test/conf_include_test" => [ ++ "test/conf_include_test-bin-conf_include_test.o" ++ ], ++ "test/conf_include_test-bin-conf_include_test.o" => [ ++ "test/conf_include_test.c" ++ ], ++ "test/confdump" => [ ++ "test/confdump-bin-confdump.o" ++ ], ++ "test/confdump-bin-confdump.o" => [ ++ "test/confdump.c" ++ ], ++ "test/constant_time_test" => [ ++ "test/constant_time_test-bin-constant_time_test.o" ++ ], ++ "test/constant_time_test-bin-constant_time_test.o" => [ ++ "test/constant_time_test.c" ++ ], ++ "test/context_internal_test" => [ ++ "test/context_internal_test-bin-context_internal_test.o" ++ ], ++ "test/context_internal_test-bin-context_internal_test.o" => [ ++ "test/context_internal_test.c" ++ ], ++ "test/crltest" => [ ++ "test/crltest-bin-crltest.o" ++ ], ++ "test/crltest-bin-crltest.o" => [ ++ "test/crltest.c" ++ ], ++ "test/ct_test" => [ ++ "test/ct_test-bin-ct_test.o" ++ ], ++ "test/ct_test-bin-ct_test.o" => [ ++ "test/ct_test.c" ++ ], ++ "test/ctype_internal_test" => [ ++ "test/ctype_internal_test-bin-ctype_internal_test.o" ++ ], ++ "test/ctype_internal_test-bin-ctype_internal_test.o" => [ ++ "test/ctype_internal_test.c" ++ ], ++ "test/curve448_internal_test" => [ ++ "test/curve448_internal_test-bin-curve448_internal_test.o" ++ ], ++ "test/curve448_internal_test-bin-curve448_internal_test.o" => [ ++ "test/curve448_internal_test.c" ++ ], ++ "test/d2i_test" => [ ++ "test/d2i_test-bin-d2i_test.o" ++ ], ++ "test/d2i_test-bin-d2i_test.o" => [ ++ "test/d2i_test.c" ++ ], ++ "test/danetest" => [ ++ "test/danetest-bin-danetest.o" ++ ], ++ "test/danetest-bin-danetest.o" => [ ++ "test/danetest.c" ++ ], ++ "test/defltfips_test" => [ ++ "test/defltfips_test-bin-defltfips_test.o" ++ ], ++ "test/defltfips_test-bin-defltfips_test.o" => [ ++ "test/defltfips_test.c" ++ ], ++ "test/destest" => [ ++ "test/destest-bin-destest.o" ++ ], ++ "test/destest-bin-destest.o" => [ ++ "test/destest.c" ++ ], ++ "test/dhtest" => [ ++ "test/dhtest-bin-dhtest.o" ++ ], ++ "test/dhtest-bin-dhtest.o" => [ ++ "test/dhtest.c" ++ ], ++ "test/drbgtest" => [ ++ "test/drbgtest-bin-drbgtest.o" ++ ], ++ "test/drbgtest-bin-drbgtest.o" => [ ++ "test/drbgtest.c" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" ++ ], ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" => [ ++ "test/dsa_no_digest_size_test.c" ++ ], ++ "test/dsatest" => [ ++ "test/dsatest-bin-dsatest.o" ++ ], ++ "test/dsatest-bin-dsatest.o" => [ ++ "test/dsatest.c" ++ ], ++ "test/dtls_mtu_test" => [ ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" ++ ], ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o" => [ ++ "test/dtls_mtu_test.c" ++ ], ++ "test/dtlstest" => [ ++ "test/dtlstest-bin-dtlstest.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o" ++ ], ++ "test/dtlstest-bin-dtlstest.o" => [ ++ "test/dtlstest.c" ++ ], ++ "test/dtlsv1listentest" => [ ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" ++ ], ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" => [ ++ "test/dtlsv1listentest.c" ++ ], ++ "test/ec_internal_test" => [ ++ "test/ec_internal_test-bin-ec_internal_test.o" ++ ], ++ "test/ec_internal_test-bin-ec_internal_test.o" => [ ++ "test/ec_internal_test.c" ++ ], ++ "test/ecdsatest" => [ ++ "test/ecdsatest-bin-ecdsatest.o" ++ ], ++ "test/ecdsatest-bin-ecdsatest.o" => [ ++ "test/ecdsatest.c" ++ ], ++ "test/ecstresstest" => [ ++ "test/ecstresstest-bin-ecstresstest.o" ++ ], ++ "test/ecstresstest-bin-ecstresstest.o" => [ ++ "test/ecstresstest.c" ++ ], ++ "test/ectest" => [ ++ "test/ectest-bin-ectest.o" ++ ], ++ "test/ectest-bin-ectest.o" => [ ++ "test/ectest.c" ++ ], ++ "test/endecode_test" => [ ++ "test/endecode_test-bin-endecode_test.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" ++ ], ++ "test/endecode_test-bin-endecode_test.o" => [ ++ "test/endecode_test.c" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" ++ ], ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" => [ ++ "test/endecoder_legacy_test.c" ++ ], ++ "test/enginetest" => [ ++ "test/enginetest-bin-enginetest.o" ++ ], ++ "test/enginetest-bin-enginetest.o" => [ ++ "test/enginetest.c" ++ ], ++ "test/errtest" => [ ++ "test/errtest-bin-errtest.o" ++ ], ++ "test/errtest-bin-errtest.o" => [ ++ "test/errtest.c" ++ ], ++ "test/evp_extra_test" => [ ++ "test/evp_extra_test-bin-evp_extra_test.o" ++ ], ++ "test/evp_extra_test-bin-evp_extra_test.o" => [ ++ "test/evp_extra_test.c" ++ ], ++ "test/evp_extra_test2" => [ ++ "test/evp_extra_test2-bin-evp_extra_test2.o" ++ ], ++ "test/evp_extra_test2-bin-evp_extra_test2.o" => [ ++ "test/evp_extra_test2.c" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ++ ], ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" => [ ++ "test/evp_fetch_prov_test.c" ++ ], ++ "test/evp_kdf_test" => [ ++ "test/evp_kdf_test-bin-evp_kdf_test.o" ++ ], ++ "test/evp_kdf_test-bin-evp_kdf_test.o" => [ ++ "test/evp_kdf_test.c" ++ ], ++ "test/evp_libctx_test" => [ ++ "test/evp_libctx_test-bin-evp_libctx_test.o" ++ ], ++ "test/evp_libctx_test-bin-evp_libctx_test.o" => [ ++ "test/evp_libctx_test.c" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" ++ ], ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ ++ "test/evp_pkey_ctx_new_from_name.c" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ++ ], ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" => [ ++ "test/evp_pkey_dparams_test.c" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" ++ ], ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ ++ "test/evp_pkey_provided_test.c" ++ ], ++ "test/evp_test" => [ ++ "test/evp_test-bin-evp_test.o" ++ ], ++ "test/evp_test-bin-evp_test.o" => [ ++ "test/evp_test.c" ++ ], ++ "test/exdatatest" => [ ++ "test/exdatatest-bin-exdatatest.o" ++ ], ++ "test/exdatatest-bin-exdatatest.o" => [ ++ "test/exdatatest.c" ++ ], ++ "test/exptest" => [ ++ "test/exptest-bin-exptest.o" ++ ], ++ "test/exptest-bin-exptest.o" => [ ++ "test/exptest.c" ++ ], ++ "test/fatalerrtest" => [ ++ "test/fatalerrtest-bin-fatalerrtest.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" ++ ], ++ "test/fatalerrtest-bin-fatalerrtest.o" => [ ++ "test/fatalerrtest.c" ++ ], ++ "test/ffc_internal_test" => [ ++ "test/ffc_internal_test-bin-ffc_internal_test.o" ++ ], ++ "test/ffc_internal_test-bin-ffc_internal_test.o" => [ ++ "test/ffc_internal_test.c" ++ ], ++ "test/gmdifftest" => [ ++ "test/gmdifftest-bin-gmdifftest.o" ++ ], ++ "test/gmdifftest-bin-gmdifftest.o" => [ ++ "test/gmdifftest.c" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ "test/helpers/pkcs12.c" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ "test/helpers/handshake.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake_srp.o" => [ ++ "test/helpers/handshake_srp.c" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/hexstr_test" => [ ++ "test/hexstr_test-bin-hexstr_test.o" ++ ], ++ "test/hexstr_test-bin-hexstr_test.o" => [ ++ "test/hexstr_test.c" ++ ], ++ "test/hmactest" => [ ++ "test/hmactest-bin-hmactest.o" ++ ], ++ "test/hmactest-bin-hmactest.o" => [ ++ "test/hmactest.c" ++ ], ++ "test/http_test" => [ ++ "test/http_test-bin-http_test.o" ++ ], ++ "test/http_test-bin-http_test.o" => [ ++ "test/http_test.c" ++ ], ++ "test/ideatest" => [ ++ "test/ideatest-bin-ideatest.o" ++ ], ++ "test/ideatest-bin-ideatest.o" => [ ++ "test/ideatest.c" ++ ], ++ "test/igetest" => [ ++ "test/igetest-bin-igetest.o" ++ ], ++ "test/igetest-bin-igetest.o" => [ ++ "test/igetest.c" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ++ ], ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" => [ ++ "test/keymgmt_internal_test.c" ++ ], ++ "test/lhash_test" => [ ++ "test/lhash_test-bin-lhash_test.o" ++ ], ++ "test/lhash_test-bin-lhash_test.o" => [ ++ "test/lhash_test.c" ++ ], ++ "test/libtestutil.a" => [ ++ "apps/lib/libtestutil-lib-opt.o", ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "test/localetest" => [ ++ "test/localetest-bin-localetest.o" ++ ], ++ "test/localetest-bin-localetest.o" => [ ++ "test/localetest.c" ++ ], ++ "test/mdc2_internal_test" => [ ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" ++ ], ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" => [ ++ "test/mdc2_internal_test.c" ++ ], ++ "test/mdc2test" => [ ++ "test/mdc2test-bin-mdc2test.o" ++ ], ++ "test/mdc2test-bin-mdc2test.o" => [ ++ "test/mdc2test.c" ++ ], ++ "test/memleaktest" => [ ++ "test/memleaktest-bin-memleaktest.o" ++ ], ++ "test/memleaktest-bin-memleaktest.o" => [ ++ "test/memleaktest.c" ++ ], ++ "test/modes_internal_test" => [ ++ "test/modes_internal_test-bin-modes_internal_test.o" ++ ], ++ "test/modes_internal_test-bin-modes_internal_test.o" => [ ++ "test/modes_internal_test.c" ++ ], ++ "test/namemap_internal_test" => [ ++ "test/namemap_internal_test-bin-namemap_internal_test.o" ++ ], ++ "test/namemap_internal_test-bin-namemap_internal_test.o" => [ ++ "test/namemap_internal_test.c" ++ ], ++ "test/ocspapitest" => [ ++ "test/ocspapitest-bin-ocspapitest.o" ++ ], ++ "test/ocspapitest-bin-ocspapitest.o" => [ ++ "test/ocspapitest.c" ++ ], ++ "test/ossl_store_test" => [ ++ "test/ossl_store_test-bin-ossl_store_test.o" ++ ], ++ "test/ossl_store_test-bin-ossl_store_test.o" => [ ++ "test/ossl_store_test.c" ++ ], ++ "test/p_test" => [ ++ "test/p_test-dso-p_test.o", ++ "test/p_test.ld" ++ ], ++ "test/p_test-dso-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/packettest" => [ ++ "test/packettest-bin-packettest.o" ++ ], ++ "test/packettest-bin-packettest.o" => [ ++ "test/packettest.c" ++ ], ++ "test/param_build_test" => [ ++ "test/param_build_test-bin-param_build_test.o" ++ ], ++ "test/param_build_test-bin-param_build_test.o" => [ ++ "test/param_build_test.c" ++ ], ++ "test/params_api_test" => [ ++ "test/params_api_test-bin-params_api_test.o" ++ ], ++ "test/params_api_test-bin-params_api_test.o" => [ ++ "test/params_api_test.c" ++ ], ++ "test/params_conversion_test" => [ ++ "test/params_conversion_test-bin-params_conversion_test.o" ++ ], ++ "test/params_conversion_test-bin-params_conversion_test.o" => [ ++ "test/params_conversion_test.c" ++ ], ++ "test/params_test" => [ ++ "test/params_test-bin-params_test.o" ++ ], ++ "test/params_test-bin-params_test.o" => [ ++ "test/params_test.c" ++ ], ++ "test/pbelutest" => [ ++ "test/pbelutest-bin-pbelutest.o" ++ ], ++ "test/pbelutest-bin-pbelutest.o" => [ ++ "test/pbelutest.c" ++ ], ++ "test/pbetest" => [ ++ "test/pbetest-bin-pbetest.o" ++ ], ++ "test/pbetest-bin-pbetest.o" => [ ++ "test/pbetest.c" ++ ], ++ "test/pem_read_depr_test" => [ ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" ++ ], ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" => [ ++ "test/pem_read_depr_test.c" ++ ], ++ "test/pemtest" => [ ++ "test/pemtest-bin-pemtest.o" ++ ], ++ "test/pemtest-bin-pemtest.o" => [ ++ "test/pemtest.c" ++ ], ++ "test/pkcs12_format_test" => [ ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" ++ ], ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" => [ ++ "test/pkcs12_format_test.c" ++ ], ++ "test/pkcs7_test" => [ ++ "test/pkcs7_test-bin-pkcs7_test.o" ++ ], ++ "test/pkcs7_test-bin-pkcs7_test.o" => [ ++ "test/pkcs7_test.c" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" ++ ], ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" => [ ++ "test/pkey_meth_kdf_test.c" ++ ], ++ "test/pkey_meth_test" => [ ++ "test/pkey_meth_test-bin-pkey_meth_test.o" ++ ], ++ "test/pkey_meth_test-bin-pkey_meth_test.o" => [ ++ "test/pkey_meth_test.c" ++ ], ++ "test/poly1305_internal_test" => [ ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" ++ ], ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ ++ "test/poly1305_internal_test.c" ++ ], ++ "test/property_test" => [ ++ "test/property_test-bin-property_test.o" ++ ], ++ "test/property_test-bin-property_test.o" => [ ++ "test/property_test.c" ++ ], ++ "test/prov_config_test" => [ ++ "test/prov_config_test-bin-prov_config_test.o" ++ ], ++ "test/prov_config_test-bin-prov_config_test.o" => [ ++ "test/prov_config_test.c" ++ ], ++ "test/provfetchtest" => [ ++ "test/provfetchtest-bin-provfetchtest.o" ++ ], ++ "test/provfetchtest-bin-provfetchtest.o" => [ ++ "test/provfetchtest.c" ++ ], ++ "test/provider_fallback_test" => [ ++ "test/provider_fallback_test-bin-provider_fallback_test.o" ++ ], ++ "test/provider_fallback_test-bin-provider_fallback_test.o" => [ ++ "test/provider_fallback_test.c" ++ ], ++ "test/provider_internal_test" => [ ++ "test/provider_internal_test-bin-p_test.o", ++ "test/provider_internal_test-bin-provider_internal_test.o" ++ ], ++ "test/provider_internal_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_internal_test-bin-provider_internal_test.o" => [ ++ "test/provider_internal_test.c" ++ ], ++ "test/provider_pkey_test" => [ ++ "test/provider_pkey_test-bin-fake_rsaprov.o", ++ "test/provider_pkey_test-bin-provider_pkey_test.o" ++ ], ++ "test/provider_pkey_test-bin-fake_rsaprov.o" => [ ++ "test/fake_rsaprov.c" ++ ], ++ "test/provider_pkey_test-bin-provider_pkey_test.o" => [ ++ "test/provider_pkey_test.c" ++ ], ++ "test/provider_status_test" => [ ++ "test/provider_status_test-bin-provider_status_test.o" ++ ], ++ "test/provider_status_test-bin-provider_status_test.o" => [ ++ "test/provider_status_test.c" ++ ], ++ "test/provider_test" => [ ++ "test/provider_test-bin-p_test.o", ++ "test/provider_test-bin-provider_test.o" ++ ], ++ "test/provider_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_test-bin-provider_test.o" => [ ++ "test/provider_test.c" ++ ], ++ "test/rand_status_test" => [ ++ "test/rand_status_test-bin-rand_status_test.o" ++ ], ++ "test/rand_status_test-bin-rand_status_test.o" => [ ++ "test/rand_status_test.c" ++ ], ++ "test/rand_test" => [ ++ "test/rand_test-bin-rand_test.o" ++ ], ++ "test/rand_test-bin-rand_test.o" => [ ++ "test/rand_test.c" ++ ], ++ "test/rc2test" => [ ++ "test/rc2test-bin-rc2test.o" ++ ], ++ "test/rc2test-bin-rc2test.o" => [ ++ "test/rc2test.c" ++ ], ++ "test/rc4test" => [ ++ "test/rc4test-bin-rc4test.o" ++ ], ++ "test/rc4test-bin-rc4test.o" => [ ++ "test/rc4test.c" ++ ], ++ "test/rc5test" => [ ++ "test/rc5test-bin-rc5test.o" ++ ], ++ "test/rc5test-bin-rc5test.o" => [ ++ "test/rc5test.c" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" ++ ], ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ ++ "test/rdrand_sanitytest.c" ++ ], ++ "test/recordlentest" => [ ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/recordlentest-bin-recordlentest.o" ++ ], ++ "test/recordlentest-bin-recordlentest.o" => [ ++ "test/recordlentest.c" ++ ], ++ "test/rsa_complex" => [ ++ "test/rsa_complex-bin-rsa_complex.o" ++ ], ++ "test/rsa_complex-bin-rsa_complex.o" => [ ++ "test/rsa_complex.c" ++ ], ++ "test/rsa_mp_test" => [ ++ "test/rsa_mp_test-bin-rsa_mp_test.o" ++ ], ++ "test/rsa_mp_test-bin-rsa_mp_test.o" => [ ++ "test/rsa_mp_test.c" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" ++ ], ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" => [ ++ "test/rsa_sp800_56b_test.c" ++ ], ++ "test/rsa_test" => [ ++ "test/rsa_test-bin-rsa_test.o" ++ ], ++ "test/rsa_test-bin-rsa_test.o" => [ ++ "test/rsa_test.c" ++ ], ++ "test/sanitytest" => [ ++ "test/sanitytest-bin-sanitytest.o" ++ ], ++ "test/sanitytest-bin-sanitytest.o" => [ ++ "test/sanitytest.c" ++ ], ++ "test/secmemtest" => [ ++ "test/secmemtest-bin-secmemtest.o" ++ ], ++ "test/secmemtest-bin-secmemtest.o" => [ ++ "test/secmemtest.c" ++ ], ++ "test/servername_test" => [ ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/servername_test-bin-servername_test.o" ++ ], ++ "test/servername_test-bin-servername_test.o" => [ ++ "test/servername_test.c" ++ ], ++ "test/sha_test" => [ ++ "test/sha_test-bin-sha_test.o" ++ ], ++ "test/sha_test-bin-sha_test.o" => [ ++ "test/sha_test.c" ++ ], ++ "test/siphash_internal_test" => [ ++ "test/siphash_internal_test-bin-siphash_internal_test.o" ++ ], ++ "test/siphash_internal_test-bin-siphash_internal_test.o" => [ ++ "test/siphash_internal_test.c" ++ ], ++ "test/sm2_internal_test" => [ ++ "test/sm2_internal_test-bin-sm2_internal_test.o" ++ ], ++ "test/sm2_internal_test-bin-sm2_internal_test.o" => [ ++ "test/sm2_internal_test.c" ++ ], ++ "test/sm3_internal_test" => [ ++ "test/sm3_internal_test-bin-sm3_internal_test.o" ++ ], ++ "test/sm3_internal_test-bin-sm3_internal_test.o" => [ ++ "test/sm3_internal_test.c" ++ ], ++ "test/sm4_internal_test" => [ ++ "test/sm4_internal_test-bin-sm4_internal_test.o" ++ ], ++ "test/sm4_internal_test-bin-sm4_internal_test.o" => [ ++ "test/sm4_internal_test.c" ++ ], ++ "test/sparse_array_test" => [ ++ "test/sparse_array_test-bin-sparse_array_test.o" ++ ], ++ "test/sparse_array_test-bin-sparse_array_test.o" => [ ++ "test/sparse_array_test.c" ++ ], ++ "test/srptest" => [ ++ "test/srptest-bin-srptest.o" ++ ], ++ "test/srptest-bin-srptest.o" => [ ++ "test/srptest.c" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" ++ ], ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" => [ ++ "test/ssl_cert_table_internal_test.c" ++ ], ++ "test/ssl_ctx_test" => [ ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" ++ ], ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ ++ "test/ssl_ctx_test.c" ++ ], ++ "test/ssl_old_test" => [ ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/ssl_old_test-bin-ssl_old_test.o" ++ ], ++ "test/ssl_old_test-bin-ssl_old_test.o" => [ ++ "test/ssl_old_test.c" ++ ], ++ "test/ssl_test" => [ ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/ssl_test-bin-ssl_test.o" ++ ], ++ "test/ssl_test-bin-ssl_test.o" => [ ++ "test/ssl_test.c" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" ++ ], ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" => [ ++ "test/ssl_test_ctx_test.c" ++ ], ++ "test/sslapitest" => [ ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/sslapitest-bin-filterprov.o", ++ "test/sslapitest-bin-sslapitest.o", ++ "test/sslapitest-bin-tls-provider.o" ++ ], ++ "test/sslapitest-bin-filterprov.o" => [ ++ "test/filterprov.c" ++ ], ++ "test/sslapitest-bin-sslapitest.o" => [ ++ "test/sslapitest.c" ++ ], ++ "test/sslapitest-bin-tls-provider.o" => [ ++ "test/tls-provider.c" ++ ], ++ "test/sslbuffertest" => [ ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/sslbuffertest-bin-sslbuffertest.o" ++ ], ++ "test/sslbuffertest-bin-sslbuffertest.o" => [ ++ "test/sslbuffertest.c" ++ ], ++ "test/sslcorrupttest" => [ ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/sslcorrupttest-bin-sslcorrupttest.o" ++ ], ++ "test/sslcorrupttest-bin-sslcorrupttest.o" => [ ++ "test/sslcorrupttest.c" ++ ], ++ "test/stack_test" => [ ++ "test/stack_test-bin-stack_test.o" ++ ], ++ "test/stack_test-bin-stack_test.o" => [ ++ "test/stack_test.c" ++ ], ++ "test/sysdefaulttest" => [ ++ "test/sysdefaulttest-bin-sysdefaulttest.o" ++ ], ++ "test/sysdefaulttest-bin-sysdefaulttest.o" => [ ++ "test/sysdefaulttest.c" ++ ], ++ "test/test_test" => [ ++ "test/test_test-bin-test_test.o" ++ ], ++ "test/test_test-bin-test_test.o" => [ ++ "test/test_test.c" ++ ], ++ "test/testutil/libtestutil-lib-apps_shims.o" => [ ++ "test/testutil/apps_shims.c" ++ ], ++ "test/testutil/libtestutil-lib-basic_output.o" => [ ++ "test/testutil/basic_output.c" ++ ], ++ "test/testutil/libtestutil-lib-cb.o" => [ ++ "test/testutil/cb.c" ++ ], ++ "test/testutil/libtestutil-lib-driver.o" => [ ++ "test/testutil/driver.c" ++ ], ++ "test/testutil/libtestutil-lib-fake_random.o" => [ ++ "test/testutil/fake_random.c" ++ ], ++ "test/testutil/libtestutil-lib-format_output.o" => [ ++ "test/testutil/format_output.c" ++ ], ++ "test/testutil/libtestutil-lib-load.o" => [ ++ "test/testutil/load.c" ++ ], ++ "test/testutil/libtestutil-lib-main.o" => [ ++ "test/testutil/main.c" ++ ], ++ "test/testutil/libtestutil-lib-options.o" => [ ++ "test/testutil/options.c" ++ ], ++ "test/testutil/libtestutil-lib-output.o" => [ ++ "test/testutil/output.c" ++ ], ++ "test/testutil/libtestutil-lib-provider.o" => [ ++ "test/testutil/provider.c" ++ ], ++ "test/testutil/libtestutil-lib-random.o" => [ ++ "test/testutil/random.c" ++ ], ++ "test/testutil/libtestutil-lib-stanza.o" => [ ++ "test/testutil/stanza.c" ++ ], ++ "test/testutil/libtestutil-lib-test_cleanup.o" => [ ++ "test/testutil/test_cleanup.c" ++ ], ++ "test/testutil/libtestutil-lib-test_options.o" => [ ++ "test/testutil/test_options.c" ++ ], ++ "test/testutil/libtestutil-lib-tests.o" => [ ++ "test/testutil/tests.c" ++ ], ++ "test/testutil/libtestutil-lib-testutil_init.o" => [ ++ "test/testutil/testutil_init.c" ++ ], ++ "test/threadstest" => [ ++ "test/threadstest-bin-threadstest.o" ++ ], ++ "test/threadstest-bin-threadstest.o" => [ ++ "test/threadstest.c" ++ ], ++ "test/threadstest_fips" => [ ++ "test/threadstest_fips-bin-threadstest_fips.o" ++ ], ++ "test/threadstest_fips-bin-threadstest_fips.o" => [ ++ "test/threadstest_fips.c" ++ ], ++ "test/time_offset_test" => [ ++ "test/time_offset_test-bin-time_offset_test.o" ++ ], ++ "test/time_offset_test-bin-time_offset_test.o" => [ ++ "test/time_offset_test.c" ++ ], ++ "test/tls13ccstest" => [ ++ "test/helpers/tls13ccstest-bin-ssltestlib.o", ++ "test/tls13ccstest-bin-tls13ccstest.o" ++ ], ++ "test/tls13ccstest-bin-tls13ccstest.o" => [ ++ "test/tls13ccstest.c" ++ ], ++ "test/tls13encryptiontest" => [ ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" ++ ], ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ ++ "test/tls13encryptiontest.c" ++ ], ++ "test/uitest" => [ ++ "apps/lib/uitest-bin-apps_ui.o", ++ "test/uitest-bin-uitest.o" ++ ], ++ "test/uitest-bin-uitest.o" => [ ++ "test/uitest.c" ++ ], ++ "test/upcallstest" => [ ++ "test/upcallstest-bin-upcallstest.o" ++ ], ++ "test/upcallstest-bin-upcallstest.o" => [ ++ "test/upcallstest.c" ++ ], ++ "test/user_property_test" => [ ++ "test/user_property_test-bin-user_property_test.o" ++ ], ++ "test/user_property_test-bin-user_property_test.o" => [ ++ "test/user_property_test.c" ++ ], ++ "test/v3ext" => [ ++ "test/v3ext-bin-v3ext.o" ++ ], ++ "test/v3ext-bin-v3ext.o" => [ ++ "test/v3ext.c" ++ ], ++ "test/v3nametest" => [ ++ "test/v3nametest-bin-v3nametest.o" ++ ], ++ "test/v3nametest-bin-v3nametest.o" => [ ++ "test/v3nametest.c" ++ ], ++ "test/verify_extra_test" => [ ++ "test/verify_extra_test-bin-verify_extra_test.o" ++ ], ++ "test/verify_extra_test-bin-verify_extra_test.o" => [ ++ "test/verify_extra_test.c" ++ ], ++ "test/versions" => [ ++ "test/versions-bin-versions.o" ++ ], ++ "test/versions-bin-versions.o" => [ ++ "test/versions.c" ++ ], ++ "test/wpackettest" => [ ++ "test/wpackettest-bin-wpackettest.o" ++ ], ++ "test/wpackettest-bin-wpackettest.o" => [ ++ "test/wpackettest.c" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ++ ], ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" => [ ++ "test/x509_check_cert_pkey_test.c" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" ++ ], ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" => [ ++ "test/x509_dup_cert_test.c" ++ ], ++ "test/x509_internal_test" => [ ++ "test/x509_internal_test-bin-x509_internal_test.o" ++ ], ++ "test/x509_internal_test-bin-x509_internal_test.o" => [ ++ "test/x509_internal_test.c" ++ ], ++ "test/x509_time_test" => [ ++ "test/x509_time_test-bin-x509_time_test.o" ++ ], ++ "test/x509_time_test-bin-x509_time_test.o" => [ ++ "test/x509_time_test.c" ++ ], ++ "test/x509aux" => [ ++ "test/x509aux-bin-x509aux.o" ++ ], ++ "test/x509aux-bin-x509aux.o" => [ ++ "test/x509aux.c" ++ ], ++ "tools/c_rehash" => [ ++ "tools/c_rehash.in" ++ ], ++ "util/shlib_wrap.sh" => [ ++ "util/shlib_wrap.sh.in" ++ ], ++ "util/wrap.pl" => [ ++ "util/wrap.pl.in" ++ ] ++ }, ++ "targets" => [ ++ "build_modules_nodep" ++ ] ++); ++ ++# Unexported, only used by OpenSSL::Test::Utils::available_protocols() ++our %available_protocols = ( ++ tls => [ ++ "ssl3", ++ "tls1", ++ "tls1_1", ++ "tls1_2", ++ "tls1_3" ++], ++ dtls => [ ++ "dtls1", ++ "dtls1_2" ++], ++); ++ ++# The following data is only used when this files is use as a script ++my @makevars = ( ++ "AR", ++ "ARFLAGS", ++ "AS", ++ "ASFLAGS", ++ "CC", ++ "CFLAGS", ++ "CPP", ++ "CPPDEFINES", ++ "CPPFLAGS", ++ "CPPINCLUDES", ++ "CROSS_COMPILE", ++ "CXX", ++ "CXXFLAGS", ++ "HASHBANGPERL", ++ "LD", ++ "LDFLAGS", ++ "LDLIBS", ++ "MT", ++ "MTFLAGS", ++ "PERL", ++ "RANLIB", ++ "RC", ++ "RCFLAGS", ++ "RM" ++); ++my %disabled_info = ( ++ "afalgeng" => { ++ "macro" => "OPENSSL_NO_AFALGENG" ++ }, ++ "asan" => { ++ "macro" => "OPENSSL_NO_ASAN" ++ }, ++ "comp" => { ++ "macro" => "OPENSSL_NO_COMP", ++ "skipped" => [ ++ "crypto/comp" ++ ] ++ }, ++ "crypto-mdebug" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG" ++ }, ++ "crypto-mdebug-backtrace" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" ++ }, ++ "devcryptoeng" => { ++ "macro" => "OPENSSL_NO_DEVCRYPTOENG" ++ }, ++ "ec_nistp_64_gcc_128" => { ++ "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" ++ }, ++ "egd" => { ++ "macro" => "OPENSSL_NO_EGD" ++ }, ++ "external-tests" => { ++ "macro" => "OPENSSL_NO_EXTERNAL_TESTS" ++ }, ++ "fuzz-afl" => { ++ "macro" => "OPENSSL_NO_FUZZ_AFL" ++ }, ++ "fuzz-libfuzzer" => { ++ "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" ++ }, ++ "ktls" => { ++ "macro" => "OPENSSL_NO_KTLS" ++ }, ++ "loadereng" => { ++ "macro" => "OPENSSL_NO_LOADERENG" ++ }, ++ "md2" => { ++ "macro" => "OPENSSL_NO_MD2", ++ "skipped" => [ ++ "crypto/md2" ++ ] ++ }, ++ "msan" => { ++ "macro" => "OPENSSL_NO_MSAN" ++ }, ++ "rc5" => { ++ "macro" => "OPENSSL_NO_RC5", ++ "skipped" => [ ++ "crypto/rc5" ++ ] ++ }, ++ "sctp" => { ++ "macro" => "OPENSSL_NO_SCTP" ++ }, ++ "ssl3" => { ++ "macro" => "OPENSSL_NO_SSL3" ++ }, ++ "ssl3-method" => { ++ "macro" => "OPENSSL_NO_SSL3_METHOD" ++ }, ++ "trace" => { ++ "macro" => "OPENSSL_NO_TRACE" ++ }, ++ "ubsan" => { ++ "macro" => "OPENSSL_NO_UBSAN" ++ }, ++ "unit-test" => { ++ "macro" => "OPENSSL_NO_UNIT_TEST" ++ }, ++ "uplink" => { ++ "macro" => "OPENSSL_NO_UPLINK" ++ }, ++ "weak-ssl-ciphers" => { ++ "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" ++ } ++); ++my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); ++ ++# If run directly, we can give some answers, and even reconfigure ++unless (caller) { ++ use Getopt::Long; ++ use File::Spec::Functions; ++ use File::Basename; ++ use File::Compare qw(compare_text); ++ use File::Copy; ++ use Pod::Usage; ++ ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++ use OpenSSL::fallback '/home/rafaelgss/repos/os/node/deps/openssl/openssl/external/perl/MODULES.txt'; ++ ++ my $here = dirname($0); ++ ++ if (scalar @ARGV == 0) { ++ # With no arguments, re-create the build file ++ # We do that in two steps, where the first step emits perl ++ # snipets. ++ ++ my $buildfile = $target{build_file}; ++ my $buildfile_template = "$buildfile.in"; ++ my @autowarntext = ( ++ 'WARNING: do not edit!', ++ "Generated by configdata.pm from " ++ .join(", ", @{$config{build_file_templates}}), ++ "via $buildfile_template" ++ ); ++ my %gendata = ( ++ config => \%config, ++ target => \%target, ++ disabled => \%disabled, ++ withargs => \%withargs, ++ unified_info => \%unified_info, ++ autowarntext => \@autowarntext, ++ ); ++ ++ use lib '.'; ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++ use gentemplate; ++ ++ open my $buildfile_template_fh, ">$buildfile_template" ++ or die "Trying to create $buildfile_template: $!"; ++ foreach (@{$config{build_file_templates}}) { ++ copy($_, $buildfile_template_fh) ++ or die "Trying to copy $_ into $buildfile_template: $!"; ++ } ++ gentemplate(output => $buildfile_template_fh, %gendata); ++ close $buildfile_template_fh; ++ print 'Created ',$buildfile_template,"\n"; ++ ++ use OpenSSL::Template; ++ ++ my $prepend = <<'_____'; ++use File::Spec::Functions; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++use lib '.'; ++use platform; ++_____ ++ ++ my $tmpl; ++ open BUILDFILE, ">$buildfile.new" ++ or die "Trying to create $buildfile.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $buildfile_template); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*BUILDFILE, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close BUILDFILE; ++ rename("$buildfile.new", $buildfile) ++ or die "Trying to rename $buildfile.new to $buildfile: $!"; ++ print 'Created ',$buildfile,"\n"; ++ ++ my $configuration_h = ++ catfile('include', 'openssl', 'configuration.h'); ++ my $configuration_h_in = ++ catfile($config{sourcedir}, 'include', 'openssl', 'configuration.h.in'); ++ open CONFIGURATION_H, ">${configuration_h}.new" ++ or die "Trying to create ${configuration_h}.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $configuration_h_in); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*CONFIGURATION_H, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close CONFIGURATION_H; ++ ++ # When using stat() on Windows, we can get it to perform better by ++ # avoid some data. This doesn't affect the mtime field, so we're not ++ # losing anything... ++ ${^WIN32_SLOPPY_STAT} = 1; ++ ++ my $update_configuration_h = 0; ++ if (-f $configuration_h) { ++ my $configuration_h_mtime = (stat($configuration_h))[9]; ++ my $configuration_h_in_mtime = (stat($configuration_h_in))[9]; ++ ++ # If configuration.h.in was updated after the last configuration.h, ++ # or if configuration.h.new differs configuration.h, we update ++ # configuration.h ++ if ($configuration_h_mtime < $configuration_h_in_mtime ++ || compare_text("${configuration_h}.new", $configuration_h) != 0) { ++ $update_configuration_h = 1; ++ } else { ++ # If nothing has changed, let's just drop the new one and ++ # pretend like nothing happened ++ unlink "${configuration_h}.new" ++ } ++ } else { ++ $update_configuration_h = 1; ++ } ++ ++ if ($update_configuration_h) { ++ rename("${configuration_h}.new", $configuration_h) ++ or die "Trying to rename ${configuration_h}.new to $configuration_h: $!"; ++ print 'Created ',$configuration_h,"\n"; ++ } ++ ++ exit(0); ++ } ++ ++ my $dump = undef; ++ my $cmdline = undef; ++ my $options = undef; ++ my $target = undef; ++ my $envvars = undef; ++ my $makevars = undef; ++ my $buildparams = undef; ++ my $reconf = undef; ++ my $verbose = undef; ++ my $query = undef; ++ my $help = undef; ++ my $man = undef; ++ GetOptions('dump|d' => \$dump, ++ 'command-line|c' => \$cmdline, ++ 'options|o' => \$options, ++ 'target|t' => \$target, ++ 'environment|e' => \$envvars, ++ 'make-variables|m' => \$makevars, ++ 'build-parameters|b' => \$buildparams, ++ 'reconfigure|reconf|r' => \$reconf, ++ 'verbose|v' => \$verbose, ++ 'query|q=s' => \$query, ++ 'help' => \$help, ++ 'man' => \$man) ++ or die "Errors in command line arguments\n"; ++ ++ # We allow extra arguments with --query. That allows constructs like ++ # this: ++ # ./configdata.pm --query 'get_sources(@ARGV)' file1 file2 file3 ++ if (!$query && scalar @ARGV > 0) { ++ print STDERR <<"_____"; ++Unrecognised arguments. ++For more information, do '$0 --help' ++_____ ++ exit(2); ++ } ++ ++ if ($help) { ++ pod2usage(-exitval => 0, ++ -verbose => 1); ++ } ++ if ($man) { ++ pod2usage(-exitval => 0, ++ -verbose => 2); ++ } ++ if ($dump || $cmdline) { ++ print "\nCommand line (with current working directory = $here):\n\n"; ++ print ' ',join(' ', ++ $config{PERL}, ++ catfile($config{sourcedir}, 'Configure'), ++ @{$config{perlargv}}), "\n"; ++ print "\nPerl information:\n\n"; ++ print ' ',$config{perl_cmd},"\n"; ++ print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; ++ } ++ if ($dump || $options) { ++ my $longest = 0; ++ my $longest2 = 0; ++ foreach my $what (@disablables) { ++ $longest = length($what) if $longest < length($what); ++ $longest2 = length($disabled{$what}) ++ if $disabled{$what} && $longest2 < length($disabled{$what}); ++ } ++ print "\nEnabled features:\n\n"; ++ foreach my $what (@disablables) { ++ print " $what\n" unless $disabled{$what}; ++ } ++ print "\nDisabled features:\n\n"; ++ foreach my $what (@disablables) { ++ if ($disabled{$what}) { ++ print " $what", ' ' x ($longest - length($what) + 1), ++ "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); ++ print $disabled_info{$what}->{macro} ++ if $disabled_info{$what}->{macro}; ++ print ' (skip ', ++ join(', ', @{$disabled_info{$what}->{skipped}}), ++ ')' ++ if $disabled_info{$what}->{skipped}; ++ print "\n"; ++ } ++ } ++ } ++ if ($dump || $target) { ++ print "\nConfig target attributes:\n\n"; ++ foreach (sort keys %target) { ++ next if $_ =~ m|^_| || $_ eq 'template'; ++ my $quotify = sub { ++ map { ++ if (defined $_) { ++ (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\"" ++ } else { ++ "undef"; ++ } ++ } @_; ++ }; ++ print ' ', $_, ' => '; ++ if (ref($target{$_}) eq "ARRAY") { ++ print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; ++ } else { ++ print $quotify->($target{$_}), ",\n" ++ } ++ } ++ } ++ if ($dump || $envvars) { ++ print "\nRecorded environment:\n\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; ++ } ++ } ++ if ($dump || $makevars) { ++ print "\nMakevars:\n\n"; ++ foreach my $var (@makevars) { ++ my $prefix = ''; ++ $prefix = $config{CROSS_COMPILE} ++ if grep { $var eq $_ } @user_crossable; ++ $prefix //= ''; ++ print ' ',$var,' ' x (16 - length $var),'= ', ++ (ref $config{$var} eq 'ARRAY' ++ ? join(' ', @{$config{$var}}) ++ : $prefix.$config{$var}), ++ "\n" ++ if defined $config{$var}; ++ } ++ ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ my $buildfile = canonpath(catdir(@buildfile)); ++ print <<"_____"; ++ ++NOTE: These variables only represent the configuration view. The build file ++template may have processed these variables further, please have a look at the ++build file for more exact data: ++ $buildfile ++_____ ++ } ++ if ($dump || $buildparams) { ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ print "\nbuild file:\n\n"; ++ print " ", canonpath(catfile(@buildfile)),"\n"; ++ ++ print "\nbuild file templates:\n\n"; ++ foreach (@{$config{build_file_templates}}) { ++ my @tmpl = ($_); ++ unshift @tmpl, $here ++ unless file_name_is_absolute($config{sourcedir}); ++ print ' ',canonpath(catfile(@tmpl)),"\n"; ++ } ++ } ++ if ($reconf) { ++ if ($verbose) { ++ print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; ++ } ++ } ++ ++ chdir $here; ++ exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; ++ } ++ if ($query) { ++ use OpenSSL::Config::Query; ++ ++ my $confquery = OpenSSL::Config::Query->new(info => \%unified_info, ++ config => \%config); ++ my $result = eval "\$confquery->$query"; ++ ++ # We may need a result class with a printing function at some point. ++ # Until then, we assume that we get a scalar, or a list or a hash table ++ # with scalar values and simply print them in some orderly fashion. ++ if (ref $result eq 'ARRAY') { ++ print "$_\n" foreach @$result; ++ } elsif (ref $result eq 'HASH') { ++ print "$_ : \\\n ", join(" \\\n ", @{$result->{$_}}), "\n" ++ foreach sort keys %$result; ++ } elsif (ref $result eq 'SCALAR') { ++ print "$$result\n"; ++ } ++ } ++} ++ ++1; ++ ++__END__ ++ ++=head1 NAME ++ ++configdata.pm - configuration data for OpenSSL builds ++ ++=head1 SYNOPSIS ++ ++Interactive: ++ ++ perl configdata.pm [options] ++ ++As data bank module: ++ ++ use configdata; ++ ++=head1 DESCRIPTION ++ ++This module can be used in two modes, interactively and as a module containing ++all the data recorded by OpenSSL's Configure script. ++ ++When used interactively, simply run it as any perl script. ++If run with no arguments, it will rebuild the build file (Makefile or ++corresponding). ++With at least one option, it will instead get the information you ask for, or ++re-run the configuration process. ++See L below for more information. ++ ++When loaded as a module, you get a few databanks with useful information to ++perform build related tasks. The databanks are: ++ ++ %config Configured things. ++ %target The OpenSSL config target with all inheritances ++ resolved. ++ %disabled The features that are disabled. ++ @disablables The list of features that can be disabled. ++ %withargs All data given through --with-THING options. ++ %unified_info All information that was computed from the build.info ++ files. ++ ++=head1 OPTIONS ++ ++=over 4 ++ ++=item B<--help> ++ ++Print a brief help message and exit. ++ ++=item B<--man> ++ ++Print the manual page and exit. ++ ++=item B<--dump> | B<-d> ++ ++Print all relevant configuration data. This is equivalent to B<--command-line> ++B<--options> B<--target> B<--environment> B<--make-variables> ++B<--build-parameters>. ++ ++=item B<--command-line> | B<-c> ++ ++Print the current configuration command line. ++ ++=item B<--options> | B<-o> ++ ++Print the features, both enabled and disabled, and display defined macro and ++skipped directories where applicable. ++ ++=item B<--target> | B<-t> ++ ++Print the config attributes for this config target. ++ ++=item B<--environment> | B<-e> ++ ++Print the environment variables and their values at the time of configuration. ++ ++=item B<--make-variables> | B<-m> ++ ++Print the main make variables generated in the current configuration ++ ++=item B<--build-parameters> | B<-b> ++ ++Print the build parameters, i.e. build file and build file templates. ++ ++=item B<--reconfigure> | B<--reconf> | B<-r> ++ ++Re-run the configuration process. ++ ++=item B<--verbose> | B<-v> ++ ++Verbose output. ++ ++=back ++ ++=cut ++ ++EOF +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/aes/aesv8-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/aes/aesv8-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/aes/vpaes-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/aes/vpaes-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/buildinf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/buildinf.h +new file mode 100755 +index 00000000..20ae4922 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/buildinf.h +@@ -0,0 +1,39 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by util/mkbuildinf.pl ++ * ++ * Copyright 2014-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 ++ */ ++ ++#define PLATFORM "platform: linux-sw_64" ++#define DATE "built on: Thu Apr 25 21:37:05 2019 UTC" ++ ++/* ++ * Generate compiler_flags as an array of individual characters. This is a ++ * workaround for the situation where CFLAGS gets too long for a C90 string ++ * literal ++ */ ++static const char compiler_flags[] = { ++ 'c','o','m','p','i','l','e','r',':',' ','.','.','/','c','o','n', ++ 'f','i','g','/','f','a','k','e','_','g','c','c','.','p','l',' ', ++ '-','f','P','I','C',' ','-','p','t','h','r','e','a','d',' ','-', ++ 'W','a',',','-','-','n','o','e','x','e','c','s','t','a','c','k', ++ ' ','-','W','a','l','l',' ','-','O','3',' ','-','D','O','P','E', ++ 'N','S','S','L','_','U','S','E','_','N','O','D','E','L','E','T', ++ 'E',' ','-','D','O','P','E','N','S','S','L','_','P','I','C',' ', ++ '-','D','O','P','E','N','S','S','L','_','C','P','U','I','D','_', ++ 'O','B','J',' ','-','D','O','P','E','N','S','S','L','_','B','N', ++ '_','A','S','M','_','M','O','N','T',' ','-','D','S','H','A','1', ++ '_','A','S','M',' ','-','D','S','H','A','2','5','6','_','A','S', ++ 'M',' ','-','D','S','H','A','5','1','2','_','A','S','M',' ','-', ++ 'D','K','E','C','C','A','K','1','6','0','0','_','A','S','M',' ', ++ '-','D','V','P','A','E','S','_','A','S','M',' ','-','D','E','C', ++ 'P','_','N','I','S','T','Z','2','5','6','_','A','S','M',' ','-', ++ 'D','P','O','L','Y','1','3','0','5','_','A','S','M',' ','-','D', ++ 'N','D','E','B','U','G','\0' ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/chacha/chacha-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/chacha/chacha-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/ec/ecp_nistz256-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/ec/ecp_nistz256-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/bn_conf.h +new file mode 100755 +index 00000000..34bd8b78 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/bn_conf.h +@@ -0,0 +1,28 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */ ++/* ++ * 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 HEADER_BN_CONF_H ++# define HEADER_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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/dso_conf.h +new file mode 100755 +index 00000000..18f6ac3b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/include/internal/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */ ++/* ++ * 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_DSO_CONF_H ++# define HEADER_DSO_CONF_H ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/modes/ghashv8-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/modes/ghashv8-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/poly1305/poly1305-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/poly1305/poly1305-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/keccak1600-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/keccak1600-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha1-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha1-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha256-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha256-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha512-sw_64.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sha/sha512-sw_64.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sw_64cpuid.S b/deps/openssl/config/archs/linux-sw_64/asm_avx2/crypto/sw_64cpuid.S +new file mode 100755 +index 00000000..e69de29b +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/bn_conf.h +new file mode 100644 +index 00000000..0347a6dd +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/bn_conf.h +@@ -0,0 +1,29 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/bn_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++/* ++ * 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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/dso_conf.h +new file mode 100644 +index 00000000..795dfa0f +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/crypto/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/dso_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1.h +new file mode 100644 +index 00000000..21ff58e3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1.h +@@ -0,0 +1,1128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1_H ++# define OPENSSL_ASN1_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# include ++# include ++ ++# 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 ++ ++/* Stacks for types not otherwise defined in this header */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) ++#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) ++#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) ++#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) ++#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) ++#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) ++#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) ++#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) ++#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) ++#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) ++#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) ++#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) ++ ++ ++ ++# 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) ++ ++struct asn1_string_table_st { ++ int nid; ++ long minsize; ++ long maxsize; ++ unsigned long mask; ++ unsigned long flags; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) ++#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) ++#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) ++#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) ++#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) ++#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++ ++ ++/* 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 */ ++ ++/* ++ * The mysterious 'extern' that's passed to some macros is innocuous, ++ * and is there to quiet pre-C99 compilers that may complain about empty ++ * arguments in macro calls. ++ */ ++ ++# define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_FUNCTIONS(type) \ ++ DECLARE_ASN1_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) ++# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ DECLARE_ASN1_ITEM_attr(attr, itname) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ attr type *d2i_##name(type **a, const unsigned char **in, long len); \ ++ attr int i2d_##name(const type *a, unsigned char **out); ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) ++ ++# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ ++ attr int i2d_##name##_NDEF(const name *a, unsigned char **out); ++# define DECLARE_ASN1_NDEF_FUNCTION(name) \ ++ DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ attr type *name##_new(void); \ ++ attr void name##_free(type *a); ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) ++# define DECLARE_ASN1_DUP_FUNCTION(type) \ ++ DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ ++ attr type *name##_dup(const type *a); ++# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) ++# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ ++ attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx); ++# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) ++ ++# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) ++# define I2D_OF(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(const type *,unsigned char **) ++# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) ++ ++typedef void *d2i_of_void(void **, const unsigned char **, long); ++typedef int i2d_of_void(const void *, unsigned char **); ++ ++/*- ++ * 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. ++ * ++ */ ++ ++ ++/* ++ * 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_attr(attr, name) \ ++ attr const ASN1_ITEM * name##_it(void); ++# define DECLARE_ASN1_ITEM(name) \ ++ DECLARE_ASN1_ITEM_attr(extern, name) ++ ++/* 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 ++ ++/* Lower 8 bits are reserved as an output type specifier */ ++# define ASN1_DTFLGS_TYPE_MASK 0x0FUL ++# define ASN1_DTFLGS_RFC822 0x00UL ++# define ASN1_DTFLGS_ISO8601 0x01UL ++ ++/* ++ * 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) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) ++#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) ++#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) ++#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) ++#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) ++#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) ++#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) ++#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) ++#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) ++#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; ++ ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(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_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) ++DECLARE_ASN1_ENCODE_FUNCTIONS(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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) ++#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) ++#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) ++#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) ++#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) ++#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) ++#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) ++#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) ++#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) ++#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(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); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); ++# endif ++int ASN1_STRING_type(const ASN1_STRING *x); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); ++# endif ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) ++#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) ++#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) ++#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) ++#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) ++#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) ++#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) ++#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) ++#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) ++#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++ ++ ++ ++DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) ++ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, ++ long length); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) ++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) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) ++#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) ++#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) ++#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) ++#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) ++#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) ++#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) ++#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) ++#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++ ++ ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) ++#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) ++#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) ++#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) ++#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) ++#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) ++#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) ++#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) ++#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++ ++ ++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_DUP_FUNCTION(ASN1_TIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) ++ ++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, const 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(const type, x))) ++ ++void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); ++int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, const ASN1_OCTET_STRING *id, ++ EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* 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_ex(const ASN1_ITEM *it, FILE *in, void *x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); ++int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); ++ ++# define ASN1_i2d_fp_of(type,i2d,out,x) \ ++ (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const 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_ex(const ASN1_ITEM *it, BIO *in, void *pval, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); ++int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); ++ ++# define ASN1_i2d_bio_of(type,i2d,out,x) \ ++ (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); ++BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); ++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 *bp, const ASN1_TIME *tm); ++int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); ++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); ++ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, ++ const char *propq); ++void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); ++ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it); ++int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); ++int ASN1_item_ndef_i2d(const 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, const 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); ++ ++/* cannot constify val because of CMS_stream() */ ++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); ++/* cannot constify val because of CMS_dataFinal() */ ++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); ++int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, ++ int ctype_nid, int econt_nid, ++ STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); ++ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, ++ const ASN1_ITEM *it, ASN1_VALUE **x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++ ++/* Legacy compatibility */ ++# 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_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) ++# define I2D_OF_const(type) I2D_OF(type) ++# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x) ++# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x) ++# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x) ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1t.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1t.h +new file mode 100644 +index 00000000..74ba47d0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/asn1t.h +@@ -0,0 +1,946 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1t.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1T_H ++# define OPENSSL_ASN1T_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1T_H ++# endif ++ ++# 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 ++ ++/*- ++ * These are the possible values for the itype field of the ++ * ASN1_ITEM structure and determine how it 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 ++ * data and 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 ++/* unused value 0x3 */ ++# define ASN1_ITYPE_EXTERN 0x4 ++# define ASN1_ITYPE_MSTRING 0x5 ++# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 ++ ++/* 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; \ ++ } ++ ++/* 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, NULL}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_const_cb(tname, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \ ++ 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, NULL}; \ ++ 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), NULL}; \ ++ 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_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, NULL}; \ ++ 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 */ ++ ++# 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 } ++ ++/* 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[] ++ ++# 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) ++ ++# 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; /* further data and type-specific functions */ ++ /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ ++ long size; /* Structure size (usually) */ ++ const char *sname; /* Structure name */ ++}; ++ ++/* ++ * 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_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, ++ const ASN1_ITEM *it, int tag, int aclass, char opt, ++ ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int ASN1_ex_i2d(const 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 int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); ++ ++typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, ++ int indent, const char *fname, ++ const ASN1_PCTX *pctx); ++ ++typedef int ASN1_primitive_i2c(const 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, const 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_ex_new_ex_func *asn1_ex_new_ex; ++ ASN1_ex_d2i_ex *asn1_ex_d2i_ex; ++} 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. ++ * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and ++ * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter ++ * 'in' is provided to make clear statically that its input is not modified. If ++ * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. ++ */ ++ ++typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, ++ void *exarg); ++typedef int ASN1_aux_const_cb(int operation, const 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; /* Offset of lock value */ ++ ASN1_aux_cb *asn1_cb; ++ int enc_offset; /* Offset of ASN1_ENCODING structure */ ++ ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ ++} 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 ++/* Use the new asn1_const_cb */ ++# define ASN1_AFLG_CONST_CB 8 ++ ++/* 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 ++# define ASN1_OP_DUP_PRE 14 ++# define ASN1_OP_DUP_POST 15 ++# define ASN1_OP_GET0_LIBCTX 16 ++# define ASN1_OP_GET0_PROPQ 17 ++ ++/* 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ ++ } ++ ++# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ ++ int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_ndef_i2d((const 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ ++ ASN1_ITEM_rptr(stname)); \ ++ } ++ ++# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ ++ stname * stname##_dup(const 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, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx) \ ++ { \ ++ return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ ++ ASN1_ITEM_rptr(itname), pctx); \ ++ } ++ ++/* 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* ++ * 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) ++#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) ++#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) ++#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) ++#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) ++#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) ++#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) ++#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) ++#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) ++#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++ ++ ++ ++/* 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(const ASN1_VALUE **pval, unsigned char **out, ++ const ASN1_ITEM *it, int tag, int aclass); ++ ++/* Legacy compatibility */ ++# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) ++# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ ++ IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) ++ ++#ifdef __cplusplus ++} ++#endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/bio.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/bio.h +new file mode 100644 +index 00000000..7e527184 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/bio.h +@@ -0,0 +1,886 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/bio.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_BIO_H ++# define OPENSSL_BIO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_BIO_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++# include ++ ++# 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_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) ++ ++#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 timed 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 ++ ++/* ++ * internal BIO: ++ * # define BIO_CTRL_SET_KTLS_SEND 72 ++ * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 ++ * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 ++ */ ++ ++# define BIO_CTRL_GET_KTLS_SEND 73 ++# define BIO_CTRL_GET_KTLS_RECV 76 ++ ++# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 ++# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 ++ ++/* BIO_f_prefix controls */ ++# define BIO_CTRL_SET_PREFIX 79 ++# define BIO_CTRL_SET_INDENT 80 ++# define BIO_CTRL_GET_INDENT 81 ++ ++# ifndef OPENSSL_NO_KTLS ++# define BIO_get_ktls_send(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) ++# define BIO_get_ktls_recv(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) ++# else ++# define BIO_get_ktls_send(b) (0) ++# define BIO_get_ktls_recv(b) (0) ++# endif ++ ++/* modifiers */ ++# define BIO_FP_READ 0x02 ++# define BIO_FP_WRITE 0x04 ++# define BIO_FP_APPEND 0x08 ++# define BIO_FP_TEXT 0x10 ++ ++# define BIO_FLAGS_READ 0x01 ++# define BIO_FLAGS_WRITE 0x02 ++# define BIO_FLAGS_IO_SPECIAL 0x04 ++# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) ++# define BIO_FLAGS_SHOULD_RETRY 0x08 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* This #define was replaced by an internal constant and should not be used. */ ++# 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 ++ ++/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ ++ ++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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, ++ long argl, long ret); ++OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); ++OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); ++OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, ++ const char *argp, int argi, ++ long argl, long ret); ++# endif ++ ++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_ex BIO_get_callback_ex(const BIO *b); ++void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); ++long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, ++ int argi, long argl, int ret, size_t *processed); ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) ++#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) ++#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) ++#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) ++#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) ++#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) ++#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) ++#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) ++#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) ++#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) ++#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) ++#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) ++#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) ++#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) ++#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) ++ ++ ++ ++/* Prefix and suffix callback in ASN1 BIO */ ++typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, ++ void *parg); ++ ++typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b, ++ void *context, ++ void *buf); ++# 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) ++# endif /* OPENSSL_NO_SOCK */ ++ ++# define BIO_do_connect(b) BIO_do_handshake(b) ++# define BIO_do_accept(b) BIO_do_handshake(b) ++ ++# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) ++ ++/* BIO_s_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) ++ ++/* ctrl macros for BIO_f_prefix */ ++# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) ++# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) ++# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 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(const 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); ++BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); ++# ifndef OPENSSL_NO_STDIO ++BIO *BIO_new_fp(FILE *stream, int close_flag); ++# endif ++BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); ++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_get_line(BIO *bio, 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); ++ ++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_readbuffer(void); ++const BIO_METHOD *BIO_f_linebuffer(void); ++const BIO_METHOD *BIO_f_nbio_test(void); ++const BIO_METHOD *BIO_f_prefix(void); ++const BIO_METHOD *BIO_s_core(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, ++ BIO_dgram_sctp_notification_handler_fn handle_notifications, ++ 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); ++int BIO_socket_wait(int fd, int for_read, time_t max_time); ++# endif ++int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); ++int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); ++ ++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 void *s, int len); ++int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), ++ void *u, const void *s, int len, int indent); ++int BIO_dump(BIO *b, const void *bytes, int len); ++int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); ++# ifndef OPENSSL_NO_STDIO ++int BIO_dump_fp(FILE *fp, const void *s, int len); ++int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); ++# endif ++int BIO_hex_string(BIO *out, int indent, int width, const void *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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define BIO_sock_cleanup() while(0) continue ++# endif ++int BIO_set_tcp_ndelay(int sock, int turn_on); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); ++# endif ++ ++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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cmp.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cmp.h +new file mode 100644 +index 00000000..0d184394 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cmp.h +@@ -0,0 +1,592 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cmp.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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_CMP_H ++# define OPENSSL_CMP_H ++ ++# include ++# ifndef OPENSSL_NO_CMP ++ ++# include ++# include ++# include ++# include ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CMP_PVNO 2 ++ ++/*- ++ * PKIFailureInfo ::= BIT STRING { ++ * -- since we can fail in more than one way! ++ * -- More codes may be added in the future if/when required. ++ * badAlg (0), ++ * -- unrecognized or unsupported Algorithm Identifier ++ * badMessageCheck (1), ++ * -- integrity check failed (e.g., signature did not verify) ++ * badRequest (2), ++ * -- transaction not permitted or supported ++ * badTime (3), ++ * -- messageTime was not sufficiently close to the system time, ++ * -- as defined by local policy ++ * badCertId (4), ++ * -- no certificate could be found matching the provided criteria ++ * badDataFormat (5), ++ * -- the data submitted has the wrong format ++ * wrongAuthority (6), ++ * -- the authority indicated in the request is different from the ++ * -- one creating the response token ++ * incorrectData (7), ++ * -- the requester's data is incorrect (for notary services) ++ * missingTimeStamp (8), ++ * -- when the timestamp is missing but should be there ++ * -- (by policy) ++ * badPOP (9), ++ * -- the proof-of-possession failed ++ * certRevoked (10), ++ * -- the certificate has already been revoked ++ * certConfirmed (11), ++ * -- the certificate has already been confirmed ++ * wrongIntegrity (12), ++ * -- invalid integrity, password based instead of signature or ++ * -- vice versa ++ * badRecipientNonce (13), ++ * -- invalid recipient nonce, either missing or wrong value ++ * timeNotAvailable (14), ++ * -- the TSA's time source is not available ++ * unacceptedPolicy (15), ++ * -- the requested TSA policy is not supported by the TSA. ++ * unacceptedExtension (16), ++ * -- the requested extension is not supported by the TSA. ++ * addInfoNotAvailable (17), ++ * -- the additional information requested could not be ++ * -- understood or is not available ++ * badSenderNonce (18), ++ * -- invalid sender nonce, either missing or wrong size ++ * badCertTemplate (19), ++ * -- invalid cert. template or missing mandatory information ++ * signerNotTrusted (20), ++ * -- signer of the message unknown or not trusted ++ * transactionIdInUse (21), ++ * -- the transaction identifier is already in use ++ * unsupportedVersion (22), ++ * -- the version of the message is not supported ++ * notAuthorized (23), ++ * -- the sender was not authorized to make the preceding ++ * -- request or perform the preceding action ++ * systemUnavail (24), ++ * -- the request cannot be handled due to system unavailability ++ * systemFailure (25), ++ * -- the request cannot be handled due to system failure ++ * duplicateCertReq (26) ++ * -- certificate cannot be issued because a duplicate ++ * -- certificate already exists ++ * } ++ */ ++# define OSSL_CMP_PKIFAILUREINFO_badAlg 0 ++# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 ++# define OSSL_CMP_PKIFAILUREINFO_badRequest 2 ++# define OSSL_CMP_PKIFAILUREINFO_badTime 3 ++# define OSSL_CMP_PKIFAILUREINFO_badCertId 4 ++# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 ++# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 ++# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 ++# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 ++# define OSSL_CMP_PKIFAILUREINFO_badPOP 9 ++# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 ++# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 ++# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 ++# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 ++# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 ++# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 ++# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 ++# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 ++# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 ++# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 ++# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 ++# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 ++# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 ++# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 ++# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ ++ ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) ++# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX ++# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int ++# endif ++ ++typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; ++ ++# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) ++# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) ++# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) ++# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) ++# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) ++# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) ++# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) ++# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) ++# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) ++# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) ++# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) ++# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) ++# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) ++# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) ++# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) ++# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) ++# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) ++# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) ++# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) ++# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) ++# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) ++# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) ++# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) ++# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) ++# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) ++ ++/*- ++ * PKIStatus ::= INTEGER { ++ * accepted (0), ++ * -- you got exactly what you asked for ++ * grantedWithMods (1), ++ * -- you got something like what you asked for; the ++ * -- requester is responsible for ascertaining the differences ++ * rejection (2), ++ * -- you don't get it, more information elsewhere in the message ++ * waiting (3), ++ * -- the request body part has not yet been processed; expect to ++ * -- hear more later (note: proper handling of this status ++ * -- response MAY use the polling req/rep PKIMessages specified ++ * -- in Section 5.3.22; alternatively, polling in the underlying ++ * -- transport layer MAY have some utility in this regard) ++ * revocationWarning (4), ++ * -- this message contains a warning that a revocation is ++ * -- imminent ++ * revocationNotification (5), ++ * -- notification that a revocation has occurred ++ * keyUpdateWarning (6) ++ * -- update already done for the oldCertId specified in ++ * -- CertReqMsg ++ * } ++ */ ++# define OSSL_CMP_PKISTATUS_accepted 0 ++# define OSSL_CMP_PKISTATUS_grantedWithMods 1 ++# define OSSL_CMP_PKISTATUS_rejection 2 ++# define OSSL_CMP_PKISTATUS_waiting 3 ++# define OSSL_CMP_PKISTATUS_revocationWarning 4 ++# define OSSL_CMP_PKISTATUS_revocationNotification 5 ++# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 ++ ++typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; ++DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) ++ ++# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 ++# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 ++ ++/* data type declarations */ ++typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; ++typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) ++typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) ++DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) ++typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) ++#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) ++#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) ++#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) ++#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) ++#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) ++#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; ++typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) ++#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) ++#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) ++#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) ++#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) ++#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) ++#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; ++typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; ++typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) ++#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++ ++typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; ++ ++/* ++ * function DECLARATIONS ++ */ ++ ++/* from cmp_asn.c */ ++OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); ++void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ++ ASN1_TYPE *value); ++ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ++ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); ++int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, ++ OSSL_CMP_ITAV *itav); ++void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); ++void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); ++ ++/* from cmp_ctx.c */ ++OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); ++/* CMP general options: */ ++# define OSSL_CMP_OPT_LOG_VERBOSITY 0 ++/* CMP transfer options: */ ++# define OSSL_CMP_OPT_KEEP_ALIVE 10 ++# define OSSL_CMP_OPT_MSG_TIMEOUT 11 ++# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 ++/* CMP request options: */ ++# define OSSL_CMP_OPT_VALIDITY_DAYS 20 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 ++# define OSSL_CMP_OPT_POLICIES_CRITICAL 23 ++# define OSSL_CMP_OPT_POPO_METHOD 24 ++# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 ++# define OSSL_CMP_OPT_DISABLE_CONFIRM 26 ++# define OSSL_CMP_OPT_REVOCATION_REASON 27 ++/* CMP protection options: */ ++# define OSSL_CMP_OPT_UNPROTECTED_SEND 30 ++# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 ++# define OSSL_CMP_OPT_OWF_ALGNID 32 ++# define OSSL_CMP_OPT_MAC_ALGNID 33 ++# define OSSL_CMP_OPT_DIGEST_ALGNID 34 ++# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 ++# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 ++int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); ++int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); ++/* CMP-specific callback for logging and outputting the error queue: */ ++int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); ++# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ ++ OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) ++void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); ++/* message transfer: */ ++int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); ++int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); ++int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); ++int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); ++int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); ++int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); ++int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); ++typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); ++int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); ++/* server authentication: */ ++int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); ++X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); ++STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); ++/* client authentication: */ ++int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, ++ STACK_OF(X509) *candidates); ++int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); ++int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, ++ const unsigned char *ref, int len); ++int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, const unsigned char *sec, ++ const int len); ++/* CMP message header and extra certificates: */ ++int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, ++ STACK_OF(X509) *extraCertsOut); ++/* certificate template: */ ++int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); ++EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); ++int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, ++ const GENERAL_NAME *name); ++int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); ++int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); ++int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); ++/* misc body contents: */ ++int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++/* certificate confirmation: */ ++typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert, ++ int fail_info, const char **txt); ++int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, ++ const char **text); ++int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); ++int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); ++/* result fetching: */ ++int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); ++OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); ++# define OSSL_CMP_PKISI_BUFLEN 1024 ++X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *id); ++int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *nonce); ++ ++/* from cmp_status.c */ ++char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, ++ size_t bufsize); ++char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, ++ char *buf, size_t bufsize); ++OSSL_CMP_PKISI * ++OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ++ ++/* from cmp_hdr.c */ ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const ++ OSSL_CMP_PKIHEADER *hdr); ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); ++ ++/* from cmp_msg.c */ ++OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); ++OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); ++OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); ++OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); ++int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); ++ ++/* from cmp_vfy.c */ ++int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); ++int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, ++ X509_STORE *trusted_store, X509 *cert); ++ ++/* from cmp_http.c */ ++OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++ ++/* from cmp_server.c */ ++typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; ++OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t) ++ (OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, ++ const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, ++ X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const STACK_OF(OSSL_CMP_ITAV) *in, ++ STACK_OF(OSSL_CMP_ITAV) **out); ++typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const OSSL_CMP_PKISI *statusInfo, ++ const ASN1_INTEGER *errorCode, ++ const OSSL_CMP_PKIFREETEXT *errDetails); ++typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ int certReqId, ++ const ASN1_OCTET_STRING *certHash, ++ const OSSL_CMP_PKISI *si); ++typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, int certReqId, ++ OSSL_CMP_MSG **certReq, ++ int64_t *check_after); ++int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, ++ OSSL_CMP_SRV_cert_request_cb_t process_cert_request, ++ OSSL_CMP_SRV_rr_cb_t process_rr, ++ OSSL_CMP_SRV_genm_cb_t process_genm, ++ OSSL_CMP_SRV_error_cb_t process_error, ++ OSSL_CMP_SRV_certConf_cb_t process_certConf, ++ OSSL_CMP_SRV_pollReq_cb_t process_pollReq); ++OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++ ++/* from cmp_client.c */ ++X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm); ++# define OSSL_CMP_IR 0 ++# define OSSL_CMP_CR 2 ++# define OSSL_CMP_P10CR 4 ++# define OSSL_CMP_KUR 7 ++# define OSSL_CMP_exec_IR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) ++# define OSSL_CMP_exec_CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) ++# define OSSL_CMP_exec_P10CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) ++# define OSSL_CMP_exec_KUR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) ++int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm, int *checkAfter); ++int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); ++STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CMP) */ ++#endif /* !defined(OPENSSL_CMP_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cms.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cms.h +new file mode 100644 +index 00000000..3b453e6a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/cms.h +@@ -0,0 +1,493 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cms.h.in ++ * ++ * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CMS_H ++# define OPENSSL_CMS_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CMS_H ++# endif ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) ++#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) ++#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) ++#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) ++#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) ++#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) ++#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) ++#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) ++#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) ++#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) ++#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) ++#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) ++#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) ++#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) ++#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) ++#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) ++#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) ++#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) ++#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) ++#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) ++#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) ++#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) ++#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) ++#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) ++#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) ++#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) ++#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) ++#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) ++#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) ++#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) ++#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) ++#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) ++#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) ++#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) ++DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) ++DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) ++ ++CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++# 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 ++# define CMS_CADES 0x100000 ++# define CMS_USE_ORIGINATOR_KEYID 0x200000 ++ ++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 OPENSSL_PEM_H ++DECLARE_PEM_rw(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); ++CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); ++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_ex(X509 *signcert, EVP_PKEY *pkey, ++ STACK_OF(X509) *certs, BIO *data, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, ++ const unsigned char *key, ++ size_t keylen, unsigned int flags, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, ++ X509 *cert, X509 *peer); ++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_AuthEnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo * ++CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, ++ const char *propq); ++CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, ++ X509 *recip, unsigned int flags); ++CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, ++ EVP_PKEY *originatorPrivKey, X509 * originator, 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(const 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(const 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); ++CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( ++ unsigned char *id, int idlen, int allorfirst, ++ STACK_OF(GENERAL_NAMES) *receiptList, ++ STACK_OF(GENERAL_NAMES) *receiptsTo, ++ OSSL_LIB_CTX *ctx); ++ ++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); ++int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); ++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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/conf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/conf.h +new file mode 100644 +index 00000000..44989929 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/conf.h +@@ -0,0 +1,211 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/conf.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONF_H ++# define OPENSSL_CONF_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CONF_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct { ++ char *section; ++ char *name; ++ char *value; ++} CONF_VALUE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) ++#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) ++#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) ++#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) ++#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) ++#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) ++#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) ++#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) ++#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) ++#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) ++#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) ++DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); ++#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) ++#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) ++#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) ++ ++ ++struct conf_st; ++struct conf_method_st; ++typedef struct conf_method_st CONF_METHOD; ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include ++# endif ++ ++/* Module definitions */ ++typedef struct conf_imodule_st CONF_IMODULE; ++typedef struct conf_module_st CONF_MODULE; ++ ++STACK_OF(CONF_MODULE); ++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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); ++#endif ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ */ ++ ++CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); ++OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); ++CONF *NCONF_new(CONF_METHOD *meth); ++CONF_METHOD *NCONF_default(void); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); ++#endif ++void NCONF_free(CONF *conf); ++void NCONF_free_data(CONF *conf); ++ ++int NCONF_load(CONF *conf, const char *file, long *eline); ++# ifndef OPENSSL_NO_STDIO ++int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); ++# endif ++int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); ++STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); ++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_ex(OSSL_LIB_CTX *libctx, const char *filename, ++ 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/configuration.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/configuration.h +new file mode 100644 +index 00000000..7e98fd63 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/configuration.h +@@ -0,0 +1,134 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl ++ * via Makefile.in ++ * ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONFIGURATION_H ++# define OPENSSL_CONFIGURATION_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifdef OPENSSL_ALGORITHM_DEFINES ++# error OPENSSL_ALGORITHM_DEFINES no longer supported ++# endif ++ ++/* ++ * OpenSSL was configured with the following options: ++ */ ++ ++# define OPENSSL_CONFIGURED_API 30000 ++# ifndef OPENSSL_RAND_SEED_OS ++# define OPENSSL_RAND_SEED_OS ++# endif ++# ifndef OPENSSL_THREADS ++# define OPENSSL_THREADS ++# endif ++# ifndef OPENSSL_NO_AFALGENG ++# define OPENSSL_NO_AFALGENG ++# endif ++# ifndef OPENSSL_NO_ASAN ++# define OPENSSL_NO_ASAN ++# endif ++# ifndef OPENSSL_NO_COMP ++# define OPENSSL_NO_COMP ++# 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_KTLS ++# define OPENSSL_NO_KTLS ++# endif ++# ifndef OPENSSL_NO_LOADERENG ++# define OPENSSL_NO_LOADERENG ++# endif ++# ifndef OPENSSL_NO_MD2 ++# define OPENSSL_NO_MD2 ++# endif ++# ifndef OPENSSL_NO_MSAN ++# define OPENSSL_NO_MSAN ++# endif ++# ifndef OPENSSL_NO_RC5 ++# define OPENSSL_NO_RC5 ++# endif ++# ifndef OPENSSL_NO_SCTP ++# define OPENSSL_NO_SCTP ++# endif ++# ifndef OPENSSL_NO_SSL3 ++# define OPENSSL_NO_SSL3 ++# endif ++# ifndef OPENSSL_NO_SSL3_METHOD ++# define OPENSSL_NO_SSL3_METHOD ++# endif ++# ifndef OPENSSL_NO_TRACE ++# define OPENSSL_NO_TRACE ++# endif ++# ifndef OPENSSL_NO_UBSAN ++# define OPENSSL_NO_UBSAN ++# endif ++# ifndef OPENSSL_NO_UNIT_TEST ++# define OPENSSL_NO_UNIT_TEST ++# endif ++# ifndef OPENSSL_NO_UPLINK ++# define OPENSSL_NO_UPLINK ++# endif ++# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS ++# define OPENSSL_NO_WEAK_SSL_CIPHERS ++# endif ++# ifndef OPENSSL_NO_DYNAMIC_ENGINE ++# define OPENSSL_NO_DYNAMIC_ENGINE ++# endif ++ ++ ++/* Generate 80386 code? */ ++# undef I386_ONLY ++ ++/* ++ * 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 char ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif /* OPENSSL_CONFIGURATION_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crmf.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crmf.h +new file mode 100644 +index 00000000..71b747ed +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crmf.h +@@ -0,0 +1,227 @@ ++/*- ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crmf.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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 ++ * ++ * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. ++ */ ++ ++ ++ ++#ifndef OPENSSL_CRMF_H ++# define OPENSSL_CRMF_H ++ ++# include ++ ++# ifndef OPENSSL_NO_CRMF ++# include ++# include ++# include ++# include /* for GENERAL_NAME etc. */ ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 ++# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 ++# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 ++# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 ++# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 ++ ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 ++ ++typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) ++typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) ++#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) ++#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) ++#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++ ++typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; ++typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) ++typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; ++typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; ++typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) ++#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) ++#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) ++#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++ ++ ++typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) ++typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) ++typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) ++typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) ++ ++typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; ++ ++/* crmf_pbm.c */ ++OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, ++ int owfnid, size_t itercnt, ++ int macnid); ++int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, ++ const OSSL_CRMF_PBMPARAMETER *pbmp, ++ const unsigned char *msg, size_t msglen, ++ const unsigned char *sec, size_t seclen, ++ unsigned char **mac, size_t *maclen); ++ ++/* crmf_lib.c */ ++int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *tok); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *auth); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); ++int ++OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ OSSL_CRMF_SINGLEPUBINFO *spi); ++# define OSSL_CRMF_PUB_METHOD_DONTCARE 0 ++# define OSSL_CRMF_PUB_METHOD_X500 1 ++# define OSSL_CRMF_PUB_METHOD_WEB 2 ++# define OSSL_CRMF_PUB_METHOD_LDAP 3 ++int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, ++ int method, GENERAL_NAME *nm); ++# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 ++# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 ++int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ int action); ++int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_PKIPUBLICATIONINFO *pi); ++OSSL_CRMF_PKIPUBLICATIONINFO ++*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, ++ const X509_PUBKEY *pubkey); ++X509_PUBKEY ++*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTID *cid); ++OSSL_CRMF_CERTID ++*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); ++OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++ ++int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *utf8pairs); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTREQUEST *cr); ++OSSL_CRMF_CERTREQUEST ++*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); ++ ++int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, ++ ASN1_TIME *notBefore, ASN1_TIME *notAfter); ++int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); ++int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); ++int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); ++ ++int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); ++# define OSSL_CRMF_POPO_NONE -1 ++# define OSSL_CRMF_POPO_RAVERIFIED 0 ++# define OSSL_CRMF_POPO_SIGNATURE 1 ++# define OSSL_CRMF_POPO_KEYENC 2 ++# define OSSL_CRMF_POPO_KEYAGREE 3 ++int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, ++ EVP_PKEY *pkey, const EVP_MD *digest, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, ++ int rid, int acceptRAVerified, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++X509_EXTENSIONS ++*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); ++int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, ++ EVP_PKEY *pubkey, ++ const X509_NAME *subject, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++X509 ++*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, ++ OSSL_LIB_CTX *libctx, const char *propq, ++ EVP_PKEY *pkey); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CRMF) */ ++#endif /* !defined(OPENSSL_CRMF_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crypto.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crypto.h +new file mode 100644 +index 00000000..3f40be6d +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/crypto.h +@@ -0,0 +1,558 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crypto.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_CRYPTO_H ++# define OPENSSL_CRYPTO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CRYPTO_H ++# endif ++ ++# include ++# include ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++ ++# include ++# 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void CRYPTO_RWLOCK; ++ ++CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); ++__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); ++__owur 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); ++int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, ++ CRYPTO_RWLOCK *lock); ++int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); ++ ++/* No longer needed, so this is a no-op */ ++#define OPENSSL_malloc_init() while(0) continue ++ ++# 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); ++int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, ++ const unsigned char *buf, size_t buflen, ++ const char sep); ++char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); ++int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, ++ const char *str, const char sep); ++unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); ++int OPENSSL_hexchar2int(unsigned char c); ++int OPENSSL_strcasecmp(const char *s1, const char *s2); ++int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); ++ ++# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) ++ ++/* ++ * These functions return the values of OPENSSL_VERSION_MAJOR, ++ * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE ++ * and OPENSSL_VERSION_BUILD_METADATA, respectively. ++ */ ++unsigned int OPENSSL_version_major(void); ++unsigned int OPENSSL_version_minor(void); ++unsigned int OPENSSL_version_patch(void); ++const char *OPENSSL_version_pre_release(void); ++const char *OPENSSL_version_build_metadata(void); ++ ++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 ++# define OPENSSL_VERSION_STRING 6 ++# define OPENSSL_FULL_VERSION_STRING 7 ++# define OPENSSL_MODULES_DIR 8 ++# define OPENSSL_CPU_INFO 9 ++ ++const char *OPENSSL_info(int type); ++/* ++ * The series starts at 1001 to avoid confusion with the OpenSSL_version ++ * types. ++ */ ++# define OPENSSL_INFO_CONFIG_DIR 1001 ++# define OPENSSL_INFO_ENGINES_DIR 1002 ++# define OPENSSL_INFO_MODULES_DIR 1003 ++# define OPENSSL_INFO_DSO_EXTENSION 1004 ++# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 ++# define OPENSSL_INFO_LIST_SEPARATOR 1006 ++# define OPENSSL_INFO_SEED_SOURCE 1007 ++# define OPENSSL_INFO_CPU_SETTINGS 1008 ++ ++int OPENSSL_issetugid(void); ++ ++struct crypto_ex_data_st { ++ OSSL_LIB_CTX *ctx; ++ STACK_OF(void) *sk; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) ++#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) ++#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) ++#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) ++#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) ++#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) ++#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) ++#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) ++#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) ++#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) ++#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) ++#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) ++#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) ++#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) ++#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) ++#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) ++#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) ++#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) ++#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) ++#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) ++#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) ++#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) ++ ++ ++ ++/* ++ * 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_RAND_DRBG 15 ++# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG ++# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 ++# define CRYPTO_EX_INDEX_EVP_PKEY 17 ++# define CRYPTO_EX_INDEX__COUNT 18 ++ ++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); ++ ++/* Allocate a single item in the CRYPTO_EX_DATA variable */ ++int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, ++ int idx); ++ ++/* ++ * 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* ++ * 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++# define CRYPTO_set_id_callback(func) ++# define CRYPTO_get_id_callback() (NULL) ++# define CRYPTO_thread_id() (0UL) ++# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ ++ ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); ++typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, ++ int line); ++typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); ++int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, ++ CRYPTO_realloc_fn realloc_fn, ++ CRYPTO_free_fn free_fn); ++void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, ++ CRYPTO_realloc_fn *realloc_fn, ++ CRYPTO_free_fn *free_fn); ++ ++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, size_t 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 ++/* ++ * 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 */ ++ ++void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define OPENSSL_mem_debug_push(info) \ ++ CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) ++# define OPENSSL_mem_debug_pop() \ ++ CRYPTO_mem_debug_pop() ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, ++ int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, ++ size_t num, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 ++int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), ++ void *u); ++# endif ++# ifndef OPENSSL_NO_STDIO ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); ++# endif ++# endif /* OPENSSL_NO_CRYPTO_MDEBUG */ ++ ++/* die if we have to */ ++ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++void OPENSSL_init(void); ++# ifdef OPENSSL_SYS_UNIX ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); ++# endif ++# 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 ++/* FREE: 0x00010000L */ ++# define OPENSSL_INIT_ATFORK 0x00020000L ++/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ ++# define OPENSSL_INIT_NO_ATEXIT 0x00080000L ++/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ ++/* FREE: 0x04000000L */ ++/* FREE: 0x08000000L */ ++/* FREE: 0x10000000L */ ++/* FREE: 0x20000000L */ ++/* FREE: 0x40000000L */ ++/* FREE: 0x80000000L */ ++/* 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); ++void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); ++ ++/* 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 ++# if defined(__TANDEM) && defined(_SPT_MODEL_) ++# define SPT_THREAD_SIGNAL 1 ++# define SPT_THREAD_AWARE 1 ++# include ++# else ++# include ++# endif ++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); ++ ++OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); ++void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); ++OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ct.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ct.h +new file mode 100644 +index 00000000..b6dd8c35 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ct.h +@@ -0,0 +1,573 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ct.h.in ++ * ++ * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CT_H ++# define OPENSSL_CT_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CT_H ++# endif ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) ++#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) ++#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) ++#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) ++#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) ++#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) ++#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) ++#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) ++#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) ++#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) ++#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) ++#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) ++#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) ++#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) ++#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) ++#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) ++#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) ++#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) ++#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) ++#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) ++#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) ++#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) ++#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) ++#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) ++#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) ++#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) ++#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) ++ ++ ++ ++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; ++ ++/****************************************** ++ * CT policy evaluation context functions * ++ ******************************************/ ++ ++/* ++ * Creates a new, empty policy evaluation context associated with the given ++ * library context and property query string. ++ * 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_ex(OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library ++ * context and property query string is used. ++ */ ++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 serialization * ++ *********************************/ ++ ++/* ++ * 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| and ++ * associates it with the give library context |libctx| and property query ++ * string |propq|. ++ * 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_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_ex except that the default library context and ++ * property query string are used. ++ */ ++CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); ++ ++/* ++ * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER ++ * in |pkey_base64| and associated with the given library context |libctx| and ++ * property query string |propq|. 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_ex(CTLOG **ct_log, const char *pkey_base64, ++ const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_from_base64_ex() except that the default ++ * library context and property query string are used. ++ * Returns 1 on success, 0 on failure. ++ */ ++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 and associates it with the given libctx and ++ * property query string. ++ * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. ++ */ ++CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* ++ * Same as CTLOG_STORE_new_ex except that the default libctx and ++ * property query string are used. ++ * 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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/err.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/err.h +new file mode 100644 +index 00000000..3c7299db +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/err.h +@@ -0,0 +1,492 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ERR_H ++# define OPENSSL_ERR_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ERR_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# include ++# endif ++ ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_FILENAMES ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,fn,ln) ++# else ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,NULL,0) ++# endif ++# endif ++ ++# include ++# include ++ ++# define ERR_TXT_MALLOCED 0x01 ++# define ERR_TXT_STRING 0x02 ++ ++# if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) ++# define ERR_FLAG_MARK 0x01 ++# define ERR_FLAG_CLEAR 0x02 ++ ++# define ERR_NUM_ERRORS 16 ++struct err_state_st { ++ int err_flags[ERR_NUM_ERRORS]; ++ int err_marks[ERR_NUM_ERRORS]; ++ unsigned long err_buffer[ERR_NUM_ERRORS]; ++ char *err_data[ERR_NUM_ERRORS]; ++ size_t err_data_size[ERR_NUM_ERRORS]; ++ int err_data_flags[ERR_NUM_ERRORS]; ++ char *err_file[ERR_NUM_ERRORS]; ++ int err_line[ERR_NUM_ERRORS]; ++ char *err_func[ERR_NUM_ERRORS]; ++ int top, bottom; ++}; ++# endif ++ ++/* 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_ESS 54 ++# define ERR_LIB_PROP 55 ++# define ERR_LIB_CRMF 56 ++# define ERR_LIB_PROV 57 ++# define ERR_LIB_CMP 58 ++# define ERR_LIB_OSSL_ENCODER 59 ++# define ERR_LIB_OSSL_DECODER 60 ++# define ERR_LIB_HTTP 61 ++ ++# define ERR_LIB_USER 128 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) ++# define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) ++# define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) ++# define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) ++# define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) ++# define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) ++# define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) ++# define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) ++# define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) ++# define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) ++# define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) ++# define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) ++# define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) ++# define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) ++# define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) ++# define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) ++# define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) ++# define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) ++# define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) ++# define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) ++# define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) ++# define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) ++# define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) ++# define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) ++# define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) ++# define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) ++# define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) ++# define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) ++# define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) ++# define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) ++# define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) ++# define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) ++# define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) ++# define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) ++# define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) ++# define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) ++# define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) ++# define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) ++# define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) ++# endif ++ ++/*- ++ * The error code packs differently depending on if it records a system ++ * error or an OpenSSL error. ++ * ++ * A system error packs like this (we follow POSIX and only allow positive ++ * numbers that fit in an |int|): ++ * ++ * +-+-------------------------------------------------------------+ ++ * |1| system error number | ++ * +-+-------------------------------------------------------------+ ++ * ++ * An OpenSSL error packs like this: ++ * ++ * <---------------------------- 32 bits --------------------------> ++ * <--- 8 bits ---><------------------ 23 bits -----------------> ++ * +-+---------------+---------------------------------------------+ ++ * |0| library | reason | ++ * +-+---------------+---------------------------------------------+ ++ * ++ * A few of the reason bits are reserved as flags with special meaning: ++ * ++ * <5 bits-<>--------- 19 bits -----------------> ++ * +-------+-+-----------------------------------+ ++ * | rflags| | reason | ++ * +-------+-+-----------------------------------+ ++ * ^ ++ * | ++ * ERR_RFLAG_FATAL = ERR_R_FATAL ++ * ++ * The reason flags are part of the overall reason code for practical ++ * reasons, as they provide an easy way to place different types of ++ * reason codes in different numeric ranges. ++ * ++ * The currently known reason flags are: ++ * ++ * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. ++ * For backward compatibility reasons, this flag ++ * is also the code for ERR_R_FATAL (that reason ++ * code served the dual purpose of flag and reason ++ * code in one in pre-3.0 OpenSSL). ++ * ERR_RFLAG_COMMON Flags that the reason code is common to all ++ * libraries. All ERR_R_ macros must use this flag, ++ * and no other _R_ macro is allowed to use it. ++ */ ++ ++/* Macros to help decode recorded system errors */ ++# define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) ++# define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) ++ ++/* ++ * Macros to help decode recorded OpenSSL errors ++ * As expressed above, RFLAGS and REASON overlap by one bit to allow ++ * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. ++ */ ++# define ERR_LIB_OFFSET 23L ++# define ERR_LIB_MASK 0xFF ++# define ERR_RFLAGS_OFFSET 18L ++# define ERR_RFLAGS_MASK 0x1F ++# define ERR_REASON_MASK 0X7FFFFF ++ ++/* ++ * Reason flags are defined pre-shifted to easily combine with the reason ++ * number. ++ */ ++# define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) ++# define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) ++ ++# define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) ++ ++static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return ERR_LIB_SYS; ++ return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return 0; ++ return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); ++} ++ ++static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return errcode & ERR_SYSTEM_MASK; ++ return errcode & ERR_REASON_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; ++} ++ ++static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; ++} ++ ++/* ++ * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may ++ * only be used for that purpose. System errors are packed internally. ++ * ERR_PACK takes reason flags and reason code combined in |reason|. ++ * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. ++ */ ++# define ERR_PACK(lib,func,reason) \ ++ ( (((unsigned long)(lib) & ERR_LIB_MASK ) << ERR_LIB_OFFSET) | \ ++ (((unsigned long)(reason) & ERR_REASON_MASK)) ) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SYS_F_FOPEN 0 ++# define SYS_F_CONNECT 0 ++# define SYS_F_GETSERVBYNAME 0 ++# define SYS_F_SOCKET 0 ++# define SYS_F_IOCTLSOCKET 0 ++# define SYS_F_BIND 0 ++# define SYS_F_LISTEN 0 ++# define SYS_F_ACCEPT 0 ++# define SYS_F_WSASTARTUP 0 ++# define SYS_F_OPENDIR 0 ++# define SYS_F_FREAD 0 ++# define SYS_F_GETADDRINFO 0 ++# define SYS_F_GETNAMEINFO 0 ++# define SYS_F_SETSOCKOPT 0 ++# define SYS_F_GETSOCKOPT 0 ++# define SYS_F_GETSOCKNAME 0 ++# define SYS_F_GETHOSTBYNAME 0 ++# define SYS_F_FFLUSH 0 ++# define SYS_F_OPEN 0 ++# define SYS_F_CLOSE 0 ++# define SYS_F_IOCTL 0 ++# define SYS_F_STAT 0 ++# define SYS_F_FCNTL 0 ++# define SYS_F_FSTAT 0 ++# define SYS_F_SENDFILE 0 ++# endif ++ ++/* ++ * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. ++ */ ++ ++/* "we came from here" global reason codes, range 1..255 */ ++# define ERR_R_SYS_LIB (ERR_LIB_SYS/* 2 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BN_LIB (ERR_LIB_BN/* 3 */ | ERR_RFLAG_COMMON) ++# define ERR_R_RSA_LIB (ERR_LIB_RSA/* 4 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DH_LIB (ERR_LIB_DH/* 5 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EVP_LIB (ERR_LIB_EVP/* 6 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BUF_LIB (ERR_LIB_BUF/* 7 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OBJ_LIB (ERR_LIB_OBJ/* 8 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PEM_LIB (ERR_LIB_PEM/* 9 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DSA_LIB (ERR_LIB_DSA/* 10 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509_LIB (ERR_LIB_X509/* 11 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ASN1_LIB (ERR_LIB_ASN1/* 13 */ | ERR_RFLAG_COMMON) ++# define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO/* 15 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EC_LIB (ERR_LIB_EC/* 16 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BIO_LIB (ERR_LIB_BIO/* 32 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7/* 33 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509V3_LIB (ERR_LIB_X509V3/* 34 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE/* 38 */ | ERR_RFLAG_COMMON) ++# define ERR_R_UI_LIB (ERR_LIB_UI/* 40 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA/* 42 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE/* 44 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER/* 60 */ | ERR_RFLAG_COMMON) ++ ++/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ ++# define ERR_R_FATAL (ERR_RFLAG_FATAL|ERR_RFLAG_COMMON) ++# define ERR_R_MALLOC_FAILURE (256|ERR_R_FATAL) ++# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257|ERR_R_FATAL) ++# define ERR_R_PASSED_NULL_PARAMETER (258|ERR_R_FATAL) ++# define ERR_R_INTERNAL_ERROR (259|ERR_R_FATAL) ++# define ERR_R_DISABLED (260|ERR_R_FATAL) ++# define ERR_R_INIT_FAIL (261|ERR_R_FATAL) ++# define ERR_R_PASSED_INVALID_ARGUMENT (262|ERR_RFLAG_COMMON) ++# define ERR_R_OPERATION_FAIL (263|ERR_R_FATAL) ++# define ERR_R_INVALID_PROVIDER_FUNCTIONS (264|ERR_R_FATAL) ++# define ERR_R_INTERRUPTED_OR_CANCELLED (265|ERR_RFLAG_COMMON) ++# define ERR_R_NESTED_ASN1_ERROR (266|ERR_RFLAG_COMMON) ++# define ERR_R_MISSING_ASN1_EOS (267|ERR_RFLAG_COMMON) ++# define ERR_R_UNSUPPORTED (268|ERR_RFLAG_COMMON) ++# define ERR_R_FETCH_FAILED (269|ERR_RFLAG_COMMON) ++# define ERR_R_INVALID_PROPERTY_DEFINITION (270|ERR_RFLAG_COMMON) ++# define ERR_R_UNABLE_TO_GET_READ_LOCK (271|ERR_R_FATAL) ++# define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272|ERR_R_FATAL) ++ ++typedef struct ERR_string_data_st { ++ unsigned long error; ++ const char *string; ++} ERR_STRING_DATA; ++ ++DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); ++#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) ++#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) ++#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) ++ ++ ++/* 12 lines and some on an 80 column terminal */ ++#define ERR_MAX_DATA_SIZE 1024 ++ ++/* Building blocks */ ++void ERR_new(void); ++void ERR_set_debug(const char *file, int line, const char *func); ++void ERR_set_error(int lib, int reason, const char *fmt, ...); ++void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); ++ ++/* Main error raising functions */ ++# define ERR_raise(lib, reason) ERR_raise_data((lib),(reason),NULL) ++# define ERR_raise_data \ ++ (ERR_new(), \ ++ ERR_set_debug(OPENSSL_FILE,OPENSSL_LINE,OPENSSL_FUNC), \ ++ ERR_set_error) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* Backward compatibility */ ++# define ERR_put_error(lib, func, reason, file, line) \ ++ (ERR_new(), \ ++ ERR_set_debug((file), (line), OPENSSL_FUNC), \ ++ ERR_set_error((lib), (reason), NULL)) ++# endif ++ ++void ERR_set_error_data(char *data, int flags); ++ ++unsigned long ERR_get_error(void); ++unsigned long ERR_get_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line(const char **file, int *line); ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++#endif ++unsigned long ERR_peek_error(void); ++unsigned long ERR_peek_error_line(const char **file, int *line); ++unsigned long ERR_peek_error_func(const char **func); ++unsigned long ERR_peek_error_data(const char **data, int *flags); ++unsigned long ERR_peek_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++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_func(const char **func); ++unsigned long ERR_peek_last_error_data(const char **data, int *flags); ++unsigned long ERR_peek_last_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_last_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++ ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); ++# endif ++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); ++void ERR_add_error_txt(const char *sepr, const char *txt); ++void ERR_add_error_mem_bio(const char *sep, BIO *bio); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define ERR_load_crypto_strings() \ ++ OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) ++# define ERR_free_strings() while(0) continue ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); ++#endif ++ ++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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ess.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ess.h +new file mode 100644 +index 00000000..4055bebb +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ess.h +@@ -0,0 +1,128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ess.h.in ++ * ++ * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ESS_H ++# define OPENSSL_ESS_H ++# pragma once ++ ++# include ++ ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++ ++typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; ++typedef struct ESS_cert_id ESS_CERT_ID; ++typedef struct ESS_signing_cert ESS_SIGNING_CERT; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) ++#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) ++#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; ++typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) ++#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) ++DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) ++ ++ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, ++ const STACK_OF(X509) *certs, ++ int set_issuer_serial); ++ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, ++ const X509 *signcert, ++ const ++ STACK_OF(X509) *certs, ++ int set_issuer_serial); ++int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, ++ const ESS_SIGNING_CERT_V2 *ssv2, ++ const STACK_OF(X509) *chain, ++ int require_signing_cert); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/fipskey.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/fipskey.h +new file mode 100644 +index 00000000..42ba014b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/fipskey.h +@@ -0,0 +1,36 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/fipskey.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_FIPSKEY_H ++# define OPENSSL_FIPSKEY_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * The FIPS validation HMAC key, usable as an array initializer. ++ */ ++#define FIPS_KEY_ELEMENTS \ ++ 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 ++ ++/* ++ * The FIPS validation key, as a string. ++ */ ++#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/lhash.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/lhash.h +new file mode 100644 +index 00000000..39dd6254 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/lhash.h +@@ -0,0 +1,288 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_LHASH_H ++# define OPENSSL_LHASH_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_LHASH_H ++# endif ++ ++# 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_flush(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ ++/* Helper macro for internal use */ ++# define DEFINE_LHASH_OF_INTERNAL(type) \ ++ LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ ++ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ ++ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ ++ typedef void (*lh_##type##_doallfunc)(type *a); \ ++ static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ ++ { \ ++ return (const OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ ++ { \ ++ return (OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_LH_COMPFUNC)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ ++ { \ ++ return (OPENSSL_LH_HASHFUNC)hfn; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ ++ { \ ++ return (OPENSSL_LH_DOALL_FUNC)dfn; \ ++ } \ ++ LHASH_OF(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 void lh_##type##_flush(LHASH_OF(type) *lh) \ ++ { \ ++ OPENSSL_LH_flush((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); \ ++ } \ ++ static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ ++ void (*doallarg)(type *, void *), \ ++ void *arg) \ ++ { \ ++ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ ++ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ ++ } \ ++ 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_INTERNAL(OPENSSL_STRING); ++#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) ++#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) ++DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); ++#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) ++#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ocsp.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ocsp.h +new file mode 100644 +index 00000000..142b1831 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ocsp.h +@@ -0,0 +1,483 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ocsp.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OCSP_H ++# define OPENSSL_OCSP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OCSP_H ++# endif ++ ++# include ++# include ++# 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), ++ * -- value 7 is not used ++ * removeFromCRL (8), ++ * privilegeWithdrawn (9), ++ * aACompromise (10) } ++ */ ++# 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 ++# define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 ++# define OCSP_REVOKED_STATUS_AACOMPROMISE 10 ++ ++ ++# ifndef OPENSSL_NO_OCSP ++ ++# 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 ++# define OCSP_PARTIAL_CHAIN 0x1000 ++ ++typedef struct ocsp_cert_id_st OCSP_CERTID; ++typedef struct ocsp_one_request_st OCSP_ONEREQ; ++typedef struct ocsp_req_info_st OCSP_REQINFO; ++typedef struct ocsp_signature_st OCSP_SIGNATURE; ++typedef struct ocsp_request_st OCSP_REQUEST; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) ++#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) ++#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) ++#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) ++#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) ++#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) ++#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) ++#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) ++#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) ++#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) ++#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) ++#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) ++#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) ++#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) ++#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) ++#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) ++#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) ++#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) ++#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++ ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) ++#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) ++#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) ++#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) ++#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) ++#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) ++#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) ++#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) ++#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) ++#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++ ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) ++#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) ++#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) ++#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) ++#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) ++#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) ++#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) ++#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) ++#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) ++#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++ ++ ++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((i2d_of_void *)i2d_OCSP_CERTSTATUS,\ ++ (d2i_of_void *)d2i_OCSP_CERTSTATUS,(char *)(cs)) ++ ++DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) ++ ++OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, ++ const OCSP_REQUEST *req, int buf_size); ++OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; ++# define OCSP_REQ_CTX_new(io, buf_size) \ ++ OSSL_HTTP_REQ_CTX_new(io, io, buf_size) ++# define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free ++# define OCSP_REQ_CTX_http(rctx, op, path) \ ++ (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && \ ++ OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, \ ++ NULL, NULL, path)) ++# define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header ++# define OCSP_REQ_CTX_i2d(r, it, req) \ ++ OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) ++# define OCSP_REQ_CTX_set1_req(r, req) \ ++ OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) ++# define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio ++# define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i ++# define OCSP_sendreq_nbio(p, r) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ ++ ASN1_ITEM_rptr(OCSP_RESPONSE)) ++# define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio ++# define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length ++# endif ++ ++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, const 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); ++ ++# define OCSP_parse_url(url, host, port, path, ssl) \ ++ OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) ++ ++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_ex(OCSP_RESPID *respid, X509 *cert, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); ++int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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(const 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 /* !defined(OPENSSL_NO_OCSP) */ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/opensslv.h +new file mode 100644 +index 00000000..4af88bb2 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/opensslv.h +@@ -0,0 +1,114 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/opensslv.h.in ++ * ++ * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OPENSSLV_H ++# define OPENSSL_OPENSSLV_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * SECTION 1: VERSION DATA. These will change for each release ++ */ ++ ++/* ++ * Base version macros ++ * ++ * These macros express version number MAJOR.MINOR.PATCH exactly ++ */ ++# define OPENSSL_VERSION_MAJOR 3 ++# define OPENSSL_VERSION_MINOR 0 ++# define OPENSSL_VERSION_PATCH 5 ++ ++/* ++ * Additional version information ++ * ++ * These are also part of the new version scheme, but aren't part ++ * of the version number itself. ++ */ ++ ++/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ ++# define OPENSSL_VERSION_PRE_RELEASE "" ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ ++# define OPENSSL_VERSION_BUILD_METADATA "+quic" ++ ++/* ++ * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA ++ * to be anything but the empty string. Its use is entirely reserved for ++ * others ++ */ ++ ++/* ++ * Shared library version ++ * ++ * This is strictly to express ABI version, which may or may not ++ * be related to the API version expressed with the macros above. ++ * This is defined in free form. ++ */ ++# define OPENSSL_SHLIB_VERSION 81.3 ++ ++/* ++ * SECTION 2: USEFUL MACROS ++ */ ++ ++/* For checking general API compatibility when preprocessing */ ++# define OPENSSL_VERSION_PREREQ(maj,min) \ ++ ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) ++ ++/* ++ * Macros to get the version in easily digested string form, both the short ++ * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced ++ * with the values from the corresponding OPENSSL_VERSION_ macros) and the ++ * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and ++ * OPENSSL_VERSION_BUILD_METADATA_STR appended. ++ */ ++# define OPENSSL_VERSION_STR "3.0.5" ++# define OPENSSL_FULL_VERSION_STR "3.0.5+quic" ++ ++/* ++ * SECTION 3: ADDITIONAL METADATA ++ * ++ * These strings are defined separately to allow them to be parsable. ++ */ ++# define OPENSSL_RELEASE_DATE "5 Jul 2022" ++ ++/* ++ * SECTION 4: BACKWARD COMPATIBILITY ++ */ ++ ++# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.5+quic 5 Jul 2022" ++ ++/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ ++# ifdef OPENSSL_VERSION_PRE_RELEASE ++# define _OPENSSL_VERSION_PRE_RELEASE 0x0L ++# else ++# define _OPENSSL_VERSION_PRE_RELEASE 0xfL ++# endif ++# define OPENSSL_VERSION_NUMBER \ ++ ( (OPENSSL_VERSION_MAJOR<<28) \ ++ |(OPENSSL_VERSION_MINOR<<20) \ ++ |(OPENSSL_VERSION_PATCH<<4) \ ++ |_OPENSSL_VERSION_PRE_RELEASE ) ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OPENSSLV_H ++# endif ++ ++#endif /* OPENSSL_OPENSSLV_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs12.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs12.h +new file mode 100644 +index 00000000..c5e0cab0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs12.h +@@ -0,0 +1,350 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs12.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS12_H ++# define OPENSSL_PKCS12_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS12_H ++# endif ++ ++# include ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) ++#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) ++#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) ++#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) ++#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) ++#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) ++#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) ++#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) ++#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) ++#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) ++#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++ ++ ++typedef struct pkcs12_bag_st PKCS12_BAGS; ++ ++# define PKCS12_ERROR 0 ++# define PKCS12_OK 1 ++ ++/* Compatibility macros */ ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++ ++# 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 ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, ++ int attr_nid); ++#endif ++ ++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); ++const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); ++const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(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_create_secret(int type, int vtype, const unsigned char *value, int len); ++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_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, ++ const char *pass, ++ int passlen, ++ unsigned char *salt, ++ int saltlen, int iter, ++ PKCS8_PRIV_KEY_INFO *p8inf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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 *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, ++ int passlen, OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++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_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, ++ const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, ++ OSSL_LIB_CTX *ctx, const char *propq); ++X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); ++X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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); ++PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, ++ unsigned char *salt, int saltlen, int iter, ++ STACK_OF(PKCS12_SAFEBAG) *bags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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 PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, ++ const unsigned char *bytes, int len); ++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); ++unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, ++ const char *pass, int passlen, ++ const unsigned char *in, int inlen, ++ unsigned char **data, int *datalen, ++ int en_de, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ const ASN1_OCTET_STRING *oct, int zbuf, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS12 *PKCS12_init(int mode); ++PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_asc_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ++ ASN1_TYPE *param, const EVP_CIPHER *cipher, ++ const EVP_MD *md_type, int en_de, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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 *PKCS12_create_ex(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, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ EVP_PKEY *key, int key_usage, int iter, ++ int key_nid, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ int nid_type, const unsigned char *value, int len); ++int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass); ++int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); ++PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); ++# ifndef OPENSSL_NO_STDIO ++int i2d_PKCS12_fp(FILE *fp, const 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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs7.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs7.h +new file mode 100644 +index 00000000..557a0a72 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/pkcs7.h +@@ -0,0 +1,427 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs7.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS7_H ++# define OPENSSL_PKCS7_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS7_H ++# endif ++ ++# 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_CTX_st { ++ OSSL_LIB_CTX *libctx; ++ char *propq; ++} PKCS7_CTX; ++ ++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; ++ const PKCS7_CTX *ctx; ++} PKCS7_SIGNER_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) ++#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) ++#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) ++#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++ ++ ++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 */ ++ const PKCS7_CTX *ctx; ++} PKCS7_RECIP_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) ++#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) ++#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) ++#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++ ++ ++ ++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; ++ const PKCS7_CTX *ctx; ++} 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_CTX ctx; ++} PKCS7; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) ++#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) ++#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) ++#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) ++#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) ++#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) ++#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) ++#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) ++#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) ++#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) ++#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) ++#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) ++ ++ ++ ++# 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, const PKCS7 *p7); ++# endif ++DECLARE_ASN1_DUP_FUNCTION(PKCS7) ++PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); ++int i2d_PKCS7_bio(BIO *bp, const 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) ++PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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_type_is_other(PKCS7 *p7); ++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_get_octet_string(PKCS7 *p7); ++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(const PKCS7_SIGNER_INFO *si, int nid); ++ASN1_TYPE *PKCS7_get_signed_attribute(const 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 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, ++ BIO *data, int flags, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++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); ++PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, int flags, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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_ex(BIO *bio, BIO **bcont, PKCS7 **p7); ++PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); ++ ++BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/safestack.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/safestack.h +new file mode 100644 +index 00000000..0499700b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/safestack.h +@@ -0,0 +1,297 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/safestack.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_SAFESTACK_H ++# define OPENSSL_SAFESTACK_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SAFESTACK_H ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# define STACK_OF(type) struct stack_st_##type ++ ++/* Helper macro for internal use */ ++# define SKM_DEFINE_STACK_OF_INTERNAL(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 t2 *ossl_check_##t1##_type(t2 *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ ++ { \ ++ return (const OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ ++ { \ ++ return (OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_sk_compfunc)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ ++ { \ ++ return (OPENSSL_sk_copyfunc)cpy; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ ++ { \ ++ return (OPENSSL_sk_freefunc)fr; \ ++ } ++ ++# 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 int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ ++ { \ ++ return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ ++ } \ ++ 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_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) ++# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) ++# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) ++# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ ++ SKM_DEFINE_STACK_OF(t1, const t2, t2) ++ ++/*- ++ * 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. ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) ++#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) ++#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) ++#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) ++#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) ++#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) ++#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) ++#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) ++#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) ++#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) ++#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++ ++ ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) ++/* ++ * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. ++ * These should also be distinguished from "normal" stacks. ++ */ ++typedef void *OPENSSL_BLOCK; ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) ++#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) ++#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) ++#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) ++#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) ++#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) ++#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) ++#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) ++#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++ ++#endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/srp.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/srp.h +new file mode 100644 +index 00000000..a48766c6 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/srp.h +@@ -0,0 +1,285 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/srp.h.in ++ * ++ * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2004, EdelKey Project. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_SRP_H ++# define OPENSSL_SRP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SRP_H ++# endif ++ ++#include ++ ++#ifndef OPENSSL_NO_SRP ++# include ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++ ++typedef struct SRP_gN_cache_st { ++ char *b64_bn; ++ BIGNUM *bn; ++} SRP_gN_cache; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) ++#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) ++#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) ++#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) ++#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) ++#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) ++#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) ++#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) ++#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++ ++ ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) ++#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) ++#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) ++#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) ++#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) ++#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) ++#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) ++#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) ++#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) ++#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) ++#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_user_pwd_new(void); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_free(SRP_user_pwd *user_pwd); ++ ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, ++ const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, ++ const char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) ++#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) ++#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) ++#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) ++#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) ++#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) ++#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) ++#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) ++#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) ++#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) ++ ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_VBASE *SRP_VBASE_new(char *seed_key); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_VBASE_free(SRP_VBASE *vb); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); ++ ++/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); ++ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, ++ BIGNUM **verifier, const BIGNUM *N, ++ const BIGNUM *g, OSSL_LIB_CTX *libctx, ++ const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++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 */ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++SRP_gN *SRP_get_default_gN(const char *id); ++ ++/* server side .... */ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, ++ const BIGNUM *b, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); ++ ++/* client side .... */ ++ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); ++ ++# define SRP_MINIMAL_N 1024 ++ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++/* This method ignores the configured seed and fails for an unknown user. */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ++SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ssl.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ssl.h +new file mode 100644 +index 00000000..0f191575 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ssl.h +@@ -0,0 +1,2668 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ssl.h.in ++ * ++ * 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 Apache License 2.0 (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_SSL_H ++# define OPENSSL_SSL_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SSL_H ++# endif ++ ++# include ++# include ++# include ++# include ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++# include ++# 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 ++/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ ++ ++/* 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_kGOST18 "kGOST18" ++# 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_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" ++# define SSL_TXT_CBC "CBC" ++ ++# 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. ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() ++ * Update both macro and function simultaneously ++ */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" ++/* ++ * This is the default set of TLSv1.3 ciphersuites ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() ++ * Update both macro and function simultaneously ++ */ ++# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ ++ "TLS_CHACHA20_POLY1305_SHA256:" \ ++ "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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) ++#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) ++#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) ++#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) ++#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) ++#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) ++#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) ++#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) ++#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) ++#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) ++#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++ ++ ++ ++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); ++ ++/* Typedef for SSL async callback */ ++typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); ++ ++#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) ++ ++/* ++ * SSL/TLS connection options. ++ */ ++ /* Disable Extended master secret */ ++# define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) ++ /* Cleanse plaintext copies of data delivered to the application */ ++# define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) ++ /* Allow initial connection to servers that don't support RI */ ++# define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) ++ /* Enable support for Kernel TLS */ ++# define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) ++# define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) ++# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) ++# define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) ++# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) ++# define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) ++ /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ ++# define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) ++ /* ++ * 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 SSL_OP_BIT(11) ++ /* DTLS options */ ++# define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) ++ /* Turn on Cookie Exchange (on relevant for servers) */ ++# define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) ++ /* Don't use RFC4507 ticket extension */ ++# define SSL_OP_NO_TICKET SSL_OP_BIT(14) ++# ifndef OPENSSL_NO_DTLS1_METHOD ++ /* ++ * Use Cisco's version identifier of DTLS_BAD_VER ++ * (only with deprecated DTLSv1_client_method()) ++ */ ++# define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) ++# endif ++ /* As server, disallow session resumption on renegotiation */ ++# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) ++ /* Don't use compression even if supported */ ++# define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) ++ /* Permit unsafe legacy renegotiation */ ++# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) ++ /* Disable encrypt-then-mac */ ++# define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) ++ /* ++ * 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 SSL_OP_BIT(20) ++ /* ++ * Prioritize Chacha20Poly1305 when client does. ++ * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE ++ */ ++# define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) ++ /* ++ * Set on servers to choose the cipher according to server's preferences. ++ */ ++# define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) ++ /* ++ * 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 SSL_OP_BIT(23) ++ /* ++ * 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 SSL_OP_BIT(24) ++# define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) ++# define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) ++# define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) ++# define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) ++# define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) ++ /* Disallow all renegotiation */ ++# define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) ++ /* ++ * 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 SSL_OP_BIT(31) ++ ++/* ++ * Option "collections." ++ */ ++# 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 ) ++ ++/* Various bug workarounds that should be rather harmless. */ ++# define SSL_OP_ALL \ ++ ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ ++ | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG ) ++ ++/* ++ * OBSOLETE OPTIONS retained for compatibility ++ */ ++ ++# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 ++# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 ++# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 ++# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 ++# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 ++# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 ++# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 ++# define SSL_OP_TLS_D5_BUG 0x0 ++# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 ++# define SSL_OP_SINGLE_ECDH_USE 0x0 ++# define SSL_OP_SINGLE_DH_USE 0x0 ++# define SSL_OP_EPHEMERAL_RSA 0x0 ++# define SSL_OP_NO_SSLv2 0x0 ++# define SSL_OP_PKCS1_CHECK_1 0x0 ++# define SSL_OP_PKCS1_CHECK_2 0x0 ++# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 ++# 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 ++# define SSL_CONF_TYPE_STORE 0x5 ++ ++/* 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. ++ */ ++ ++uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); ++uint64_t SSL_get_options(const SSL *s); ++uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_clear_options(SSL *s, uint64_t op); ++uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_set_options(SSL *s, uint64_t 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) ++ ++# 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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, ++ int *ad); ++OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); ++# endif ++# 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) ++# define SSL_SESS_CACHE_UPDATE_TIME 0x0400 ++ ++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 256 ++# define PSK_MAX_PSK_LEN 512 ++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 ++# define SSL_RETRY_VERIFY 8 ++ ++/* 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_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) ++# 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 ++# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 ++# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 ++ ++/* ++ * 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 ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) ++#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) ++#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) ++#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) ++#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) ++#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) ++#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) ++#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) ++#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) ++#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) ++#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) ++#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) ++#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) ++#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) ++#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) ++#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) ++#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) ++#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) ++#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) ++#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) ++#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) ++#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) ++ ++ ++/* 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))) ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); ++# endif ++ ++/* 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_ERROR_WANT_RETRY_VERIFY 12 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TMP_DH 3 ++# define SSL_CTRL_SET_TMP_ECDH 4 ++# define SSL_CTRL_SET_TMP_DH_CB 6 ++# endif ++ ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 ++# endif ++# 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 ++# 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_NEGOTIATED_GROUP 134 ++# define SSL_CTRL_SET_RETRY_VERIFY 136 ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_dh(ctx,dh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_set_tmp_dh(ssl,dh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# define SSL_set_tmp_ecdh(ssl,ecdh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# endif ++# 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_get_negotiated_group(s) \ ++ SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,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) ++ ++const char *SSL_group_to_name(SSL *s, int id); ++ ++/* 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) ++ ++int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); ++int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); ++ ++/* ++ * 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 ++ ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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); ++__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, ++ 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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 STACK_OF(X509_NAME) ++*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++__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); ++int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, ++ const char *uri); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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(const 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(const 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 OPENSSL_X509_H ++__owur X509 *SSL_get0_peer_certificate(const SSL *s); ++__owur X509 *SSL_get1_peer_certificate(const SSL *s); ++/* Deprecated in 3.0.0 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_get_peer_certificate SSL_get1_peer_certificate ++# endif ++# 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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, const unsigned 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, const unsigned 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, ++ char *(*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, int *, void *)); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, ++ BIGNUM *sa, BIGNUM *v, char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, ++ const char *grp); ++ ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); ++ ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); ++# endif ++# 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); ++__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); ++__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); ++__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); ++__owur int SSL_set_async_callback_arg(SSL *s, void *arg); ++__owur int SSL_get_async_status(SSL *s, int *status); ++ ++# 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 ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, ++ int flags); ++__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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); ++# endif ++ ++# ifndef OPENSSL_NO_SSL3_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); ++# endif ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_2_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_2_METHOD ++/* DTLSv1.2 */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); ++# endif ++# 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_new_session_ticket(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_set_default_verify_store(SSL_CTX *ctx); ++__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); ++__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); ++__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); ++__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) ++# define SSL_set_retry_verify(ssl) \ ++ (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0) ++ ++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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* NB: the |keylength| is only applicable when is_export is true */ ++OSSL_DEPRECATEDIN_3_0 ++void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++OSSL_DEPRECATEDIN_3_0 ++void SSL_set_tmp_dh_callback(SSL *ssl, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++# endif ++# 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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++int 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++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); ++ ++/* store the default cipher strings inside the library */ ++const char *OSSL_default_cipher_list(void); ++const char *OSSL_default_ciphersuites(void); ++ ++# ifndef OPENSSL_NO_QUIC ++/* ++ * QUIC integration - The QUIC interface matches BoringSSL ++ * ++ * ssl_encryption_level_t represents a specific QUIC encryption level used to ++ * transmit handshake messages. BoringSSL has this as an 'enum'. ++ */ ++#include ++ ++/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */ ++# define X25519_PRIVATE_KEY_LEN 32 ++# define X25519_PUBLIC_VALUE_LEN 32 ++ ++/* moved from types.h to avoid breaking FIPS checksums */ ++typedef struct ssl_quic_method_st SSL_QUIC_METHOD; ++ ++typedef enum ssl_encryption_level_t { ++ ssl_encryption_initial = 0, ++ ssl_encryption_early_data, ++ ssl_encryption_handshake, ++ ssl_encryption_application ++} OSSL_ENCRYPTION_LEVEL; ++ ++struct ssl_quic_method_st { ++ int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *read_secret, ++ const uint8_t *write_secret, size_t secret_len); ++ int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++ int (*flush_flight)(SSL *ssl); ++ int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert); ++}; ++ ++__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_transport_params(SSL *ssl, ++ const uint8_t *params, ++ size_t params_len); ++void SSL_get_peer_quic_transport_params(const SSL *ssl, ++ const uint8_t **out_params, ++ size_t *out_params_len); ++__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl); ++__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++__owur int SSL_process_quic_post_handshake(SSL *ssl); ++ ++__owur int SSL_is_quic(SSL *ssl); ++ ++/* BoringSSL API */ ++void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy); ++ ++/* ++ * Set an explicit value that you want to use ++ * If 0 (default) the server will use the highest extenstion the client sent ++ * If 0 (default) the client will send both extensions ++ */ ++void SSL_set_quic_transport_version(SSL *ssl, int version); ++__owur int SSL_get_quic_transport_version(const SSL *ssl); ++/* Returns the negotiated version, or -1 on error */ ++__owur int SSL_get_peer_quic_transport_version(const SSL *ssl); ++ ++int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c); ++ ++void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled); ++ ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ui.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ui.h +new file mode 100644 +index 00000000..e64ec3b3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/ui.h +@@ -0,0 +1,407 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ui.h.in ++ * ++ * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_UI_H ++# define OPENSSL_UI_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_UI_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++# include ++# include ++# include ++# include ++ ++/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# 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. ++ * phrase_desc is a textual short description of the phrase to enter, ++ * for example "pass phrase", and ++ * object_name is the name of the object ++ * (which might be a card name or a file name) or NULL. ++ * 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 {phrase_desc} for {object_name}:" ++ * ++ * So, if phrase_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 *phrase_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(const 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) ++#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) ++#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) ++#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) ++#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) ++#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) ++#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) ++#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) ++#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) ++#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) ++#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) ++#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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 ++ *phrase_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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509.h +new file mode 100644 +index 00000000..1f7755e5 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509.h +@@ -0,0 +1,1276 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_X509_H ++# define OPENSSL_X509_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* Needed stacks for types defined in other headers */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) ++#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) ++#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) ++#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) ++#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) ++#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) ++#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) ++#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) ++#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) ++#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) ++#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) ++#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) ++#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) ++#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) ++#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) ++#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) ++#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) ++#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) ++#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) ++#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) ++#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) ++#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) ++#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) ++#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) ++#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) ++#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) ++#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) ++#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) ++#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) ++#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) ++#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) ++#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) ++#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) ++#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) ++#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) ++#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) ++#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) ++#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) ++#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) ++#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) ++#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) ++#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) ++#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) ++#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) ++#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) ++#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) ++#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) ++#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) ++#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) ++#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) ++#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) ++ ++ ++/* 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) ++#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) ++#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) ++#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) ++#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) ++#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) ++#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) ++#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) ++#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++ ++ ++# define X509_EX_V_NETSCAPE_HACK 0x8000 ++# define X509_EX_V_INIT 0x0001 ++typedef struct X509_extension_st X509_EXTENSION; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) ++#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) ++#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) ++#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) ++#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) ++#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) ++#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) ++#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) ++#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) ++#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) ++#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++ ++typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; ++typedef struct x509_attributes_st X509_ATTRIBUTE; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) ++#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) ++#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) ++#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) ++#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) ++#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) ++#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) ++#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) ++#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) ++#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) ++#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++ ++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; ++ ++/* 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) ++# define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) ++ ++/* 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) ++ ++typedef struct X509_crl_info_st X509_CRL_INFO; ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) ++#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) ++#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) ++#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) ++#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) ++#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) ++#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) ++#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) ++#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) ++#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) ++#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) ++#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) ++ ++ ++/* ++ * 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, ++ const ++ ASN1_INTEGER *serial, ++ const ++ 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_self_signed(X509 *cert, int verify_signature); ++ ++int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); ++int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); ++int 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); ++ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, ++ EVP_MD **md_used, int *md_is_fallback); ++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); ++ ++X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ ++# define X509_http_nbio(rctx, pcert) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) ++# define X509_CRL_http_nbio(rctx, pcrl) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) ++# endif ++ ++# ifndef OPENSSL_NO_STDIO ++X509 *d2i_X509_fp(FILE *fp, X509 **x509); ++int i2d_X509_fp(FILE *fp, const X509 *x509); ++X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); ++int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); ++int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); ++int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); ++int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); ++int i2d_PUBKEY_fp(FILE *fp, const 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, const X509 *x509); ++X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); ++int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); ++int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); ++int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); ++int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); ++int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509) ++DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) ++DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) ++DECLARE_ASN1_DUP_FUNCTION(X509_CRL) ++DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) ++DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) ++DECLARE_ASN1_DUP_FUNCTION(X509_REQ) ++DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) ++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); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME) ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) ++ ++int X509_cmp_time(const ASN1_TIME *s, time_t *t); ++int X509_cmp_current_time(const ASN1_TIME *s); ++int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, ++ const ASN1_TIME *start, const ASN1_TIME *end); ++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) ++ ++X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); ++EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); ++EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); ++int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); ++long X509_get_pathlen(X509 *x); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) ++EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, ++ OSSL_LIB_CTX *libctx, const char *propq); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,DSA, DSA_PUBKEY) ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) ++# endif ++# 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) ++X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, const X509_NAME *name); ++ ++DECLARE_ASN1_FUNCTIONS(X509_CINF) ++DECLARE_ASN1_FUNCTIONS(X509) ++X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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(const X509 *r, int idx); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX) ++ ++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); ++ ++void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); ++void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *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); ++ ++DECLARE_ASN1_FUNCTIONS(X509_REVOKED) ++DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) ++DECLARE_ASN1_FUNCTIONS(X509_CRL) ++X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); ++int X509_CRL_get0_by_serial(X509_CRL *crl, ++ X509_REVOKED **ret, const 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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, ++ ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, ++ unsigned char *md, unsigned int *len); ++OSSL_DEPRECATEDIN_3_0 ++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); ++#endif ++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, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey); ++int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_MD_CTX *ctx); ++int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, ++ ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey, const EVP_MD *md); ++int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, EVP_MD_CTX *ctx); ++ ++#define X509_VERSION_1 0 ++#define X509_VERSION_2 1 ++#define X509_VERSION_3 2 ++ ++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, const X509_NAME *name); ++X509_NAME *X509_get_issuer_name(const X509 *a); ++int X509_set_subject_name(X509 *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++#define X509_REQ_VERSION_1 0 ++ ++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, const 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, ++ const STACK_OF(X509_EXTENSION) *exts, int nid); ++int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); ++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); ++ ++#define X509_CRL_VERSION_1 0 ++#define X509_CRL_VERSION_2 1 ++ ++int X509_CRL_set_version(X509_CRL *x, long version); ++int X509_CRL_set_issuer_name(X509_CRL *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); ++#endif ++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 ++ ++# define X509_ADD_FLAG_DEFAULT 0 ++# define X509_ADD_FLAG_UP_REF 0x1 ++# define X509_ADD_FLAG_PREPEND 0x2 ++# define X509_ADD_FLAG_NO_DUP 0x4 ++# define X509_ADD_FLAG_NO_SS 0x8 ++int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); ++int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); ++ ++int X509_cmp(const X509 *a, const X509 *b); ++int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) ++OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, ++ const EVP_PKEY *pubkey); ++#endif ++unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, ++ const char *propq, int *ok); ++unsigned long X509_NAME_hash_old(const 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(const X509_NAME *name, int nid, ++ char *buf, int len); ++int X509_NAME_get_text_by_OBJ(const 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(const X509_NAME *name, int nid, int lastpos); ++int X509_NAME_get_index_by_OBJ(const 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(const 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); ++ ++/* lookup a cert from a X509 STACK */ ++X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, ++ const ASN1_INTEGER *serial); ++X509 *X509_find_by_subject(STACK_OF(X509) *sk, const 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); ++int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe_set(int alg, int iter, ++ const unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid); ++X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid, ++ OSSL_LIB_CTX *libctx); ++ ++#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); ++X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, ++ int prf_nid, int keylen, ++ OSSL_LIB_CTX *libctx); ++ ++/* PKCS#8 utilities */ ++ ++DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) ++ ++EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); ++EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const 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(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); ++int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, ++ 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, const X509_PUBKEY *pub); ++int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509_vfy.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509_vfy.h +new file mode 100644 +index 00000000..29b0e147 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509_vfy.h +@@ -0,0 +1,894 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509_vfy.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509_VFY_H ++# define OPENSSL_X509_VFY_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_VFY_H ++# endif ++ ++/* ++ * Protect against recursion, x509.h and x509_vfy.h each include the other. ++ */ ++# ifndef OPENSSL_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; ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++#define X509_LU_RETRY -1 ++#define X509_LU_FAIL 0 ++#endif ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) ++#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) ++#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) ++#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) ++#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) ++#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) ++#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) ++#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) ++#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) ++#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) ++#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) ++#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) ++#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) ++#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) ++#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) ++#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) ++#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) ++#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) ++#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) ++#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) ++#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) ++#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) ++#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) ++#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) ++#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) ++#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) ++#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) ++#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) ++#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) ++#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) ++#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++ ++ ++/* 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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) ++#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) ++#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) ++#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) ++#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) ++#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) ++#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) ++#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) ++#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) ++#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) ++#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) ++#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) ++ ++ ++/* 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 rejection OID and 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 ++ ++int X509_TRUST_set(int *t, int trust); ++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); ++ ++int X509_trusted(const X509 *x); ++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); ++ ++int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, ++ int); ++int X509_check_trust(X509 *x, int id, int flags); ++ ++int X509_verify_cert(X509_STORE_CTX *ctx); ++int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, ++ X509_STORE *store, int with_self_signed, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_STORE_set_depth(X509_STORE *store, int depth); ++ ++typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); ++int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *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, ++ const X509_NAME *nm); ++typedef STACK_OF(X509_CRL) ++ *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, ++ const 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_L_ADD_STORE 3 ++# define X509_L_LOAD_STORE 4 ++ ++# 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_LOOKUP_add_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_ADD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_LOAD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL,\ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# 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_NO_ISSUER_PUBLIC_KEY 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_UNSUPPORTED_SIGNATURE_ALGORITHM 76 ++# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 ++ ++/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ ++# define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 ++# define X509_V_ERR_INVALID_CA 79 ++# define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 ++# define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 ++# define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 ++# define X509_V_ERR_ISSUER_NAME_EMPTY 83 ++# define X509_V_ERR_SUBJECT_NAME_EMPTY 84 ++# define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 ++# define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 ++# define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 ++# define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 ++# define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 ++# define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 ++# define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 ++# define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 ++# define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 ++# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 ++ ++/* Certificate verify flags */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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, ++ const X509_NAME *name); ++X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, ++ X509_LOOKUP_TYPE type, ++ const 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(const 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(const X509_STORE *v); ++STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); ++STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, ++ const X509_NAME *nm); ++STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, ++ const 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, const X509_VERIFY_PARAM *pm); ++X509_VERIFY_PARAM *X509_STORE_get0_param(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const X509_STORE *ctx, int idx); ++ ++X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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 *trust_store, ++ X509 *target, STACK_OF(X509) *untrusted); ++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(const X509_STORE_CTX *ctx); ++X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); ++STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const 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(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++X509_LOOKUP_METHOD *X509_LOOKUP_store(void); ++ ++typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++typedef int (*X509_LOOKUP_ctrl_ex_fn)( ++ X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret); ++typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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(const X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret); ++X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name); ++ ++int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, ++ char **ret, OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); ++int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, ++ const X509_NAME *name, X509_OBJECT *ret); ++int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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_file(X509_STORE *ctx, const char *file); ++int X509_STORE_load_path(X509_STORE *ctx, const char *path); ++int X509_STORE_load_store(X509_STORE *ctx, const char *store); ++int X509_STORE_load_locations(X509_STORE *ctx, ++ const char *file, ++ const char *dir); ++int X509_STORE_set_default_paths(X509_STORE *ctx); ++ ++int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, ++ const char *dir, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++#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(const X509_STORE_CTX *ctx, int idx); ++int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); ++int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); ++X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); ++X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); ++X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); ++void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); ++void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, 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(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); ++ ++X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const 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(const 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); ++ ++char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); ++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(const X509_VERIFY_PARAM *param); ++void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); ++char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); ++int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, ++ const char *email, size_t emaillen); ++char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); ++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(const 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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509v3.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509v3.h +new file mode 100644 +index 00000000..7ec87026 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/openssl/x509v3.h +@@ -0,0 +1,1450 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509v3.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509V3_H ++# define OPENSSL_X509V3_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509V3_H ++# endif ++ ++# 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) (const 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 for producing X509 v3 extensions*/ ++struct v3_ext_ctx { ++# define X509V3_CTX_TEST 0x1 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define CTX_TEST X509V3_CTX_TEST ++# endif ++# 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; ++ EVP_PKEY *issuer_pkey; ++/* Maybe more here */ ++}; ++ ++typedef struct v3_ext_method X509V3_EXT_METHOD; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) ++#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) ++#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) ++#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) ++#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) ++#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) ++#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) ++#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) ++#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) ++#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) ++#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++ ++ ++/* ext_flags values */ ++# define X509V3_EXT_DYNAMIC 0x1 ++# define X509V3_EXT_CTX_DEP 0x2 ++# define X509V3_EXT_MULTILINE 0x4 ++ ++typedef BIT_STRING_BITNAME ENUMERATED_NAMES; ++ ++typedef struct BASIC_CONSTRAINTS_st { ++ int ca; ++ ASN1_INTEGER *pathlen; ++} BASIC_CONSTRAINTS; ++ ++typedef struct PKEY_USAGE_PERIOD_st { ++ ASN1_GENERALIZEDTIME *notBefore; ++ ASN1_GENERALIZEDTIME *notAfter; ++} PKEY_USAGE_PERIOD; ++ ++typedef struct otherName_st { ++ ASN1_OBJECT *type_id; ++ ASN1_TYPE *value; ++} OTHERNAME; ++ ++typedef struct EDIPartyName_st { ++ ASN1_STRING *nameAssigner; ++ ASN1_STRING *partyName; ++} EDIPARTYNAME; ++ ++typedef struct GENERAL_NAME_st { ++# define GEN_OTHERNAME 0 ++# define GEN_EMAIL 1 ++# define GEN_DNS 2 ++# define GEN_X400 3 ++# define GEN_DIRNAME 4 ++# define GEN_EDIPARTY 5 ++# define GEN_URI 6 ++# define GEN_IPADD 7 ++# define GEN_RID 8 ++ int type; ++ union { ++ char *ptr; ++ OTHERNAME *otherName; /* otherName */ ++ ASN1_IA5STRING *rfc822Name; ++ ASN1_IA5STRING *dNSName; ++ ASN1_TYPE *x400Address; ++ X509_NAME *directoryName; ++ EDIPARTYNAME *ediPartyName; ++ ASN1_IA5STRING *uniformResourceIdentifier; ++ ASN1_OCTET_STRING *iPAddress; ++ ASN1_OBJECT *registeredID; ++ /* Old names */ ++ ASN1_OCTET_STRING *ip; /* iPAddress */ ++ X509_NAME *dirn; /* dirn */ ++ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, ++ * uniformResourceIdentifier */ ++ ASN1_OBJECT *rid; /* registeredID */ ++ ASN1_TYPE *other; /* x400Address */ ++ } d; ++} GENERAL_NAME; ++ ++typedef struct ACCESS_DESCRIPTION_st { ++ ASN1_OBJECT *method; ++ GENERAL_NAME *location; ++} ACCESS_DESCRIPTION; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) ++#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) ++#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) ++#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) ++#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) ++#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) ++#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) ++#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) ++#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) ++#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) ++#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) ++#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) ++#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) ++#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) ++#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) ++#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) ++#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) ++#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) ++#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; ++typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; ++typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; ++typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) ++#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) ++#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) ++#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) ++#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) ++#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) ++#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) ++#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) ++#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) ++#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) ++#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) ++#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) ++#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) ++#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) ++#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) ++#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) ++#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) ++#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) ++#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) ++#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) ++#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) ++#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) ++#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) ++#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) ++#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) ++#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) ++#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) ++#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) ++#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) ++#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) ++#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) ++#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct SXNET_st { ++ ASN1_INTEGER *version; ++ STACK_OF(SXNETID) *ids; ++} SXNET; ++ ++typedef struct ISSUER_SIGN_TOOL_st { ++ ASN1_UTF8STRING *signTool; ++ ASN1_UTF8STRING *cATool; ++ ASN1_UTF8STRING *signToolCert; ++ ASN1_UTF8STRING *cAToolCert; ++} ISSUER_SIGN_TOOL; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) ++#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) ++#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) ++#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) ++#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) ++#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) ++#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) ++#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) ++#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++ ++ ++ ++typedef struct POLICYINFO_st { ++ ASN1_OBJECT *policyid; ++ STACK_OF(POLICYQUALINFO) *qualifiers; ++} POLICYINFO; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) ++#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) ++#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) ++#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) ++#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) ++#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) ++#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) ++#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) ++#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) ++#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; ++ ++typedef struct POLICY_MAPPING_st { ++ ASN1_OBJECT *issuerDomainPolicy; ++ ASN1_OBJECT *subjectDomainPolicy; ++} POLICY_MAPPING; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) ++#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) ++#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) ++#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) ++#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) ++#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) ++#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) ++#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) ++#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) ++#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) ++#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; ++ ++typedef struct GENERAL_SUBTREE_st { ++ GENERAL_NAME *base; ++ ASN1_INTEGER *minimum; ++ ASN1_INTEGER *maximum; ++} GENERAL_SUBTREE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) ++#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) ++#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) ++#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) ++#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) ++#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) ++#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) ++#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) ++#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) ++#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++ ++ ++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, X509V3_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_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ ++ 0,0,0,0, \ ++ (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ ++ (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ ++ 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 ++# define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ ++# 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_BCONS_CRITICAL 0x10000 ++# define EXFLAG_AKID_CRITICAL 0x20000 ++# define EXFLAG_SKID_CRITICAL 0x40000 ++# define EXFLAG_SAN_CRITICAL 0x80000 ++# 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 /* Netscape or MS Server-Gated Crypto */ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) ++#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) ++#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) ++#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) ++#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) ++#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) ++#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) ++#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) ++#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) ++#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) ++#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++ ++ ++ ++# define X509_PURPOSE_SSL_CLIENT 1 ++# define X509_PURPOSE_SSL_SERVER 2 ++# define X509_PURPOSE_NS_SSL_SERVER 3 ++# define X509_PURPOSE_SMIME_SIGN 4 ++# define X509_PURPOSE_SMIME_ENCRYPT 5 ++# define X509_PURPOSE_CRL_SIGN 6 ++# define X509_PURPOSE_ANY 7 ++# define X509_PURPOSE_OCSP_HELPER 8 ++# define X509_PURPOSE_TIMESTAMP_SIGN 9 ++ ++# define X509_PURPOSE_MIN 1 ++# define X509_PURPOSE_MAX 9 ++ ++/* Flags for X509V3_EXT_print() */ ++ ++# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) ++/* Return error for unknown extensions */ ++# define X509V3_EXT_DEFAULT 0 ++/* Print error for unknown extensions */ ++# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) ++/* ASN1 parse unknown extensions */ ++# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) ++/* BIO_dump unknown extensions */ ++# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) ++ ++/* Flags for X509V3_add1_i2d */ ++ ++# define X509V3_ADD_OP_MASK 0xfL ++# define X509V3_ADD_DEFAULT 0L ++# define X509V3_ADD_APPEND 1L ++# define X509V3_ADD_REPLACE 2L ++# define X509V3_ADD_REPLACE_EXISTING 3L ++# define X509V3_ADD_KEEP_EXISTING 4L ++# define X509V3_ADD_DELETE 5L ++# define X509V3_ADD_SILENT 0x10 ++ ++DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) ++ ++DECLARE_ASN1_FUNCTIONS(SXNET) ++DECLARE_ASN1_FUNCTIONS(SXNETID) ++ ++DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) ++ ++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) ++DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) ++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); ++char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); ++ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(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, const 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 OPENSSL_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); ++/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ ++int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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(const X509 *issuer, const 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); ++SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) ++#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) ++#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) ++#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) ++#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) ++#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) ++#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) ++#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) ++#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) ++#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) ++#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++ ++ ++ ++#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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) ++#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) ++#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) ++#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) ++#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) ++#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) ++#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) ++#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) ++#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) ++#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) ++#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) ++#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASIdOrRange) ASIdOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) ++#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) ++#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) ++#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) ++#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) ++#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) ++#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) ++#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) ++#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) ++#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) ++#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) ++#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) ++#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) ++#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) ++#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) ++#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) ++#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) ++#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) ++#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) ++#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) ++ ++ ++ ++typedef STACK_OF(IPAddressFamily) IPAddrBlocks; ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) ++#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) ++#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) ++#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) ++#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) ++#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) ++#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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) ++SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) ++#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) ++#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) ++#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) ++#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) ++#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) ++#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) ++#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) ++#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) ++#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) ++#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) ++#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) ++#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) ++#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) ++#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) ++#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) ++#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) ++#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) ++#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) ++#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) ++#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) ++ ++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/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/progs.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/progs.h +new file mode 100644 +index 00000000..07bb763a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/include/progs.h +@@ -0,0 +1,123 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "function.h" ++ ++extern int asn1parse_main(int argc, char *argv[]); ++extern int ca_main(int argc, char *argv[]); ++extern int ciphers_main(int argc, char *argv[]); ++extern int cmp_main(int argc, char *argv[]); ++extern int cms_main(int argc, char *argv[]); ++extern int crl_main(int argc, char *argv[]); ++extern int crl2pkcs7_main(int argc, char *argv[]); ++extern int dgst_main(int argc, char *argv[]); ++extern int dhparam_main(int argc, char *argv[]); ++extern int dsa_main(int argc, char *argv[]); ++extern int dsaparam_main(int argc, char *argv[]); ++extern int ec_main(int argc, char *argv[]); ++extern int ecparam_main(int argc, char *argv[]); ++extern int enc_main(int argc, char *argv[]); ++extern int engine_main(int argc, char *argv[]); ++extern int errstr_main(int argc, char *argv[]); ++extern int fipsinstall_main(int argc, char *argv[]); ++extern int gendsa_main(int argc, char *argv[]); ++extern int genpkey_main(int argc, char *argv[]); ++extern int genrsa_main(int argc, char *argv[]); ++extern int help_main(int argc, char *argv[]); ++extern int info_main(int argc, char *argv[]); ++extern int kdf_main(int argc, char *argv[]); ++extern int list_main(int argc, char *argv[]); ++extern int mac_main(int argc, char *argv[]); ++extern int nseq_main(int argc, char *argv[]); ++extern int ocsp_main(int argc, char *argv[]); ++extern int passwd_main(int argc, char *argv[]); ++extern int pkcs12_main(int argc, char *argv[]); ++extern int pkcs7_main(int argc, char *argv[]); ++extern int pkcs8_main(int argc, char *argv[]); ++extern int pkey_main(int argc, char *argv[]); ++extern int pkeyparam_main(int argc, char *argv[]); ++extern int pkeyutl_main(int argc, char *argv[]); ++extern int prime_main(int argc, char *argv[]); ++extern int rand_main(int argc, char *argv[]); ++extern int rehash_main(int argc, char *argv[]); ++extern int req_main(int argc, char *argv[]); ++extern int rsa_main(int argc, char *argv[]); ++extern int rsautl_main(int argc, char *argv[]); ++extern int s_client_main(int argc, char *argv[]); ++extern int s_server_main(int argc, char *argv[]); ++extern int s_time_main(int argc, char *argv[]); ++extern int sess_id_main(int argc, char *argv[]); ++extern int smime_main(int argc, char *argv[]); ++extern int speed_main(int argc, char *argv[]); ++extern int spkac_main(int argc, char *argv[]); ++extern int srp_main(int argc, char *argv[]); ++extern int storeutl_main(int argc, char *argv[]); ++extern int ts_main(int argc, char *argv[]); ++extern int verify_main(int argc, char *argv[]); ++extern int version_main(int argc, char *argv[]); ++extern int x509_main(int argc, char *argv[]); ++ ++extern const OPTIONS asn1parse_options[]; ++extern const OPTIONS ca_options[]; ++extern const OPTIONS ciphers_options[]; ++extern const OPTIONS cmp_options[]; ++extern const OPTIONS cms_options[]; ++extern const OPTIONS crl_options[]; ++extern const OPTIONS crl2pkcs7_options[]; ++extern const OPTIONS dgst_options[]; ++extern const OPTIONS dhparam_options[]; ++extern const OPTIONS dsa_options[]; ++extern const OPTIONS dsaparam_options[]; ++extern const OPTIONS ec_options[]; ++extern const OPTIONS ecparam_options[]; ++extern const OPTIONS enc_options[]; ++extern const OPTIONS engine_options[]; ++extern const OPTIONS errstr_options[]; ++extern const OPTIONS fipsinstall_options[]; ++extern const OPTIONS gendsa_options[]; ++extern const OPTIONS genpkey_options[]; ++extern const OPTIONS genrsa_options[]; ++extern const OPTIONS help_options[]; ++extern const OPTIONS info_options[]; ++extern const OPTIONS kdf_options[]; ++extern const OPTIONS list_options[]; ++extern const OPTIONS mac_options[]; ++extern const OPTIONS nseq_options[]; ++extern const OPTIONS ocsp_options[]; ++extern const OPTIONS passwd_options[]; ++extern const OPTIONS pkcs12_options[]; ++extern const OPTIONS pkcs7_options[]; ++extern const OPTIONS pkcs8_options[]; ++extern const OPTIONS pkey_options[]; ++extern const OPTIONS pkeyparam_options[]; ++extern const OPTIONS pkeyutl_options[]; ++extern const OPTIONS prime_options[]; ++extern const OPTIONS rand_options[]; ++extern const OPTIONS rehash_options[]; ++extern const OPTIONS req_options[]; ++extern const OPTIONS rsa_options[]; ++extern const OPTIONS rsautl_options[]; ++extern const OPTIONS s_client_options[]; ++extern const OPTIONS s_server_options[]; ++extern const OPTIONS s_time_options[]; ++extern const OPTIONS sess_id_options[]; ++extern const OPTIONS smime_options[]; ++extern const OPTIONS speed_options[]; ++extern const OPTIONS spkac_options[]; ++extern const OPTIONS srp_options[]; ++extern const OPTIONS storeutl_options[]; ++extern const OPTIONS ts_options[]; ++extern const OPTIONS verify_options[]; ++extern const OPTIONS version_options[]; ++extern const OPTIONS x509_options[]; ++ ++extern FUNCTION functions[]; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-cl.gypi b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-cl.gypi +new file mode 100644 +index 00000000..4661ae69 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-cl.gypi +@@ -0,0 +1,106 @@ ++{ ++ 'variables': { ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'OPENSSL_BN_ASM_MONT', ++ 'POLY1305_ASM', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'openssl_cli_srcs_linux-sw_64': [ ++ 'openssl/apps/lib/cmp_mock_srv.c', ++ 'openssl/apps/asn1parse.c', ++ 'openssl/apps/ca.c', ++ 'openssl/apps/ciphers.c', ++ 'openssl/apps/cmp.c', ++ 'openssl/apps/cms.c', ++ 'openssl/apps/crl.c', ++ 'openssl/apps/crl2pkcs7.c', ++ 'openssl/apps/dgst.c', ++ 'openssl/apps/dhparam.c', ++ 'openssl/apps/dsa.c', ++ 'openssl/apps/dsaparam.c', ++ 'openssl/apps/ec.c', ++ 'openssl/apps/ecparam.c', ++ 'openssl/apps/enc.c', ++ 'openssl/apps/engine.c', ++ 'openssl/apps/errstr.c', ++ 'openssl/apps/fipsinstall.c', ++ 'openssl/apps/gendsa.c', ++ 'openssl/apps/genpkey.c', ++ 'openssl/apps/genrsa.c', ++ 'openssl/apps/info.c', ++ 'openssl/apps/kdf.c', ++ 'openssl/apps/list.c', ++ 'openssl/apps/mac.c', ++ 'openssl/apps/nseq.c', ++ 'openssl/apps/ocsp.c', ++ 'openssl/apps/openssl.c', ++ 'openssl/apps/passwd.c', ++ 'openssl/apps/pkcs12.c', ++ 'openssl/apps/pkcs7.c', ++ 'openssl/apps/pkcs8.c', ++ 'openssl/apps/pkey.c', ++ 'openssl/apps/pkeyparam.c', ++ 'openssl/apps/pkeyutl.c', ++ 'openssl/apps/prime.c', ++ './config/archs/linux-sw_64/asm_avx2/apps/progs.c', ++ 'openssl/apps/rand.c', ++ 'openssl/apps/rehash.c', ++ 'openssl/apps/req.c', ++ 'openssl/apps/rsa.c', ++ 'openssl/apps/rsautl.c', ++ 'openssl/apps/s_client.c', ++ 'openssl/apps/s_server.c', ++ 'openssl/apps/s_time.c', ++ 'openssl/apps/sess_id.c', ++ 'openssl/apps/smime.c', ++ 'openssl/apps/speed.c', ++ 'openssl/apps/spkac.c', ++ 'openssl/apps/srp.c', ++ 'openssl/apps/storeutl.c', ++ 'openssl/apps/ts.c', ++ 'openssl/apps/verify.c', ++ 'openssl/apps/version.c', ++ 'openssl/apps/x509.c', ++ 'openssl/apps/lib/app_libctx.c', ++ 'openssl/apps/lib/app_params.c', ++ 'openssl/apps/lib/app_provider.c', ++ 'openssl/apps/lib/app_rand.c', ++ 'openssl/apps/lib/app_x509.c', ++ 'openssl/apps/lib/apps.c', ++ 'openssl/apps/lib/apps_ui.c', ++ 'openssl/apps/lib/columns.c', ++ 'openssl/apps/lib/engine.c', ++ 'openssl/apps/lib/engine_loader.c', ++ 'openssl/apps/lib/fmt.c', ++ 'openssl/apps/lib/http_server.c', ++ 'openssl/apps/lib/names.c', ++ 'openssl/apps/lib/opt.c', ++ 'openssl/apps/lib/s_cb.c', ++ 'openssl/apps/lib/s_socket.c', ++ 'openssl/apps/lib/tlssrp_depr.c', ++ ], ++ }, ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'include_dirs': [ ++ './include', ++ ], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_cli_srcs_linux-sw_64)'], ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-fips.gypi b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-fips.gypi +new file mode 100644 +index 00000000..1a673f27 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl-fips.gypi +@@ -0,0 +1,332 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rsa/rsa_acvp_test_params.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_fips.c', ++ 'openssl/providers/fips/fipsprov.c', ++ 'openssl/providers/fips/self_test.c', ++ 'openssl/providers/fips/self_test_kats.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/providers/fips/fips_entry.c', ++ ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/asm_avx2/crypto/aes/aes-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/poly1305/poly1305-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha1-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha256-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha512-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm_avx2/providers/legacy.ld', ++ './config/archs/linux-sw_64/asm_avx2/providers/fips.ld', ++ ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'FIPS_MODULE', ++ 'OPENSSL_BN_ASM_MONT', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'FIPS_MODULE', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/fips.ld' ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags': ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'ldflags': ['-Wl,--version-script=<@(linker_script)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl.gypi b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl.gypi +new file mode 100644 +index 00000000..6709f98d +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/openssl.gypi +@@ -0,0 +1,1014 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/ssl/bio_ssl.c', ++ 'openssl/ssl/d1_lib.c', ++ 'openssl/ssl/d1_msg.c', ++ 'openssl/ssl/d1_srtp.c', ++ 'openssl/ssl/methods.c', ++ 'openssl/ssl/pqueue.c', ++ 'openssl/ssl/s3_enc.c', ++ 'openssl/ssl/s3_lib.c', ++ 'openssl/ssl/s3_msg.c', ++ 'openssl/ssl/ssl_asn1.c', ++ 'openssl/ssl/ssl_cert.c', ++ 'openssl/ssl/ssl_ciph.c', ++ 'openssl/ssl/ssl_conf.c', ++ 'openssl/ssl/ssl_err.c', ++ 'openssl/ssl/ssl_err_legacy.c', ++ 'openssl/ssl/ssl_init.c', ++ 'openssl/ssl/ssl_lib.c', ++ 'openssl/ssl/ssl_mcnf.c', ++ 'openssl/ssl/ssl_quic.c', ++ 'openssl/ssl/ssl_rsa.c', ++ 'openssl/ssl/ssl_rsa_legacy.c', ++ 'openssl/ssl/ssl_sess.c', ++ 'openssl/ssl/ssl_stat.c', ++ 'openssl/ssl/ssl_txt.c', ++ 'openssl/ssl/ssl_utst.c', ++ 'openssl/ssl/t1_enc.c', ++ 'openssl/ssl/t1_lib.c', ++ 'openssl/ssl/t1_trce.c', ++ 'openssl/ssl/tls13_enc.c', ++ 'openssl/ssl/tls_depr.c', ++ 'openssl/ssl/tls_srp.c', ++ 'openssl/ssl/record/dtls1_bitmap.c', ++ 'openssl/ssl/record/rec_layer_d1.c', ++ 'openssl/ssl/record/rec_layer_s3.c', ++ 'openssl/ssl/record/ssl3_buffer.c', ++ 'openssl/ssl/record/ssl3_record.c', ++ 'openssl/ssl/record/ssl3_record_tls13.c', ++ 'openssl/ssl/statem/extensions.c', ++ 'openssl/ssl/statem/extensions_clnt.c', ++ 'openssl/ssl/statem/extensions_cust.c', ++ 'openssl/ssl/statem/extensions_srvr.c', ++ 'openssl/ssl/statem/statem.c', ++ 'openssl/ssl/statem/statem_clnt.c', ++ 'openssl/ssl/statem/statem_dtls.c', ++ 'openssl/ssl/statem/statem_lib.c', ++ 'openssl/ssl/statem/statem_quic.c', ++ 'openssl/ssl/statem/statem_srvr.c', ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_cfb.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_ige.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/aes/aes_ofb.c', ++ 'openssl/crypto/aes/aes_wrap.c', ++ 'openssl/crypto/aria/aria.c', ++ 'openssl/crypto/asn1/a_bitstr.c', ++ 'openssl/crypto/asn1/a_d2i_fp.c', ++ 'openssl/crypto/asn1/a_digest.c', ++ 'openssl/crypto/asn1/a_dup.c', ++ 'openssl/crypto/asn1/a_gentm.c', ++ 'openssl/crypto/asn1/a_i2d_fp.c', ++ 'openssl/crypto/asn1/a_int.c', ++ 'openssl/crypto/asn1/a_mbstr.c', ++ 'openssl/crypto/asn1/a_object.c', ++ 'openssl/crypto/asn1/a_octet.c', ++ 'openssl/crypto/asn1/a_print.c', ++ 'openssl/crypto/asn1/a_sign.c', ++ 'openssl/crypto/asn1/a_strex.c', ++ 'openssl/crypto/asn1/a_strnid.c', ++ 'openssl/crypto/asn1/a_time.c', ++ 'openssl/crypto/asn1/a_type.c', ++ 'openssl/crypto/asn1/a_utctm.c', ++ 'openssl/crypto/asn1/a_utf8.c', ++ 'openssl/crypto/asn1/a_verify.c', ++ 'openssl/crypto/asn1/ameth_lib.c', ++ 'openssl/crypto/asn1/asn1_err.c', ++ 'openssl/crypto/asn1/asn1_gen.c', ++ 'openssl/crypto/asn1/asn1_item_list.c', ++ 'openssl/crypto/asn1/asn1_lib.c', ++ 'openssl/crypto/asn1/asn1_parse.c', ++ 'openssl/crypto/asn1/asn_mime.c', ++ 'openssl/crypto/asn1/asn_moid.c', ++ 'openssl/crypto/asn1/asn_mstbl.c', ++ 'openssl/crypto/asn1/asn_pack.c', ++ 'openssl/crypto/asn1/bio_asn1.c', ++ 'openssl/crypto/asn1/bio_ndef.c', ++ 'openssl/crypto/asn1/d2i_param.c', ++ 'openssl/crypto/asn1/d2i_pr.c', ++ 'openssl/crypto/asn1/d2i_pu.c', ++ 'openssl/crypto/asn1/evp_asn1.c', ++ 'openssl/crypto/asn1/f_int.c', ++ 'openssl/crypto/asn1/f_string.c', ++ 'openssl/crypto/asn1/i2d_evp.c', ++ 'openssl/crypto/asn1/n_pkey.c', ++ 'openssl/crypto/asn1/nsseq.c', ++ 'openssl/crypto/asn1/p5_pbe.c', ++ 'openssl/crypto/asn1/p5_pbev2.c', ++ 'openssl/crypto/asn1/p5_scrypt.c', ++ 'openssl/crypto/asn1/p8_pkey.c', ++ 'openssl/crypto/asn1/t_bitst.c', ++ 'openssl/crypto/asn1/t_pkey.c', ++ 'openssl/crypto/asn1/t_spki.c', ++ 'openssl/crypto/asn1/tasn_dec.c', ++ 'openssl/crypto/asn1/tasn_enc.c', ++ 'openssl/crypto/asn1/tasn_fre.c', ++ 'openssl/crypto/asn1/tasn_new.c', ++ 'openssl/crypto/asn1/tasn_prn.c', ++ 'openssl/crypto/asn1/tasn_scn.c', ++ 'openssl/crypto/asn1/tasn_typ.c', ++ 'openssl/crypto/asn1/tasn_utl.c', ++ 'openssl/crypto/asn1/x_algor.c', ++ 'openssl/crypto/asn1/x_bignum.c', ++ 'openssl/crypto/asn1/x_info.c', ++ 'openssl/crypto/asn1/x_int64.c', ++ 'openssl/crypto/asn1/x_long.c', ++ 'openssl/crypto/asn1/x_pkey.c', ++ 'openssl/crypto/asn1/x_sig.c', ++ 'openssl/crypto/asn1/x_spki.c', ++ 'openssl/crypto/asn1/x_val.c', ++ 'openssl/crypto/async/arch/async_null.c', ++ 'openssl/crypto/async/arch/async_posix.c', ++ 'openssl/crypto/async/arch/async_win.c', ++ 'openssl/crypto/async/async.c', ++ 'openssl/crypto/async/async_err.c', ++ 'openssl/crypto/async/async_wait.c', ++ 'openssl/crypto/bf/bf_cfb64.c', ++ 'openssl/crypto/bf/bf_ecb.c', ++ 'openssl/crypto/bf/bf_enc.c', ++ 'openssl/crypto/bf/bf_ofb64.c', ++ 'openssl/crypto/bf/bf_skey.c', ++ 'openssl/crypto/bio/bf_buff.c', ++ 'openssl/crypto/bio/bf_lbuf.c', ++ 'openssl/crypto/bio/bf_nbio.c', ++ 'openssl/crypto/bio/bf_null.c', ++ 'openssl/crypto/bio/bf_prefix.c', ++ 'openssl/crypto/bio/bf_readbuff.c', ++ 'openssl/crypto/bio/bio_addr.c', ++ 'openssl/crypto/bio/bio_cb.c', ++ 'openssl/crypto/bio/bio_dump.c', ++ 'openssl/crypto/bio/bio_err.c', ++ 'openssl/crypto/bio/bio_lib.c', ++ 'openssl/crypto/bio/bio_meth.c', ++ 'openssl/crypto/bio/bio_print.c', ++ 'openssl/crypto/bio/bio_sock.c', ++ 'openssl/crypto/bio/bio_sock2.c', ++ 'openssl/crypto/bio/bss_acpt.c', ++ 'openssl/crypto/bio/bss_bio.c', ++ 'openssl/crypto/bio/bss_conn.c', ++ 'openssl/crypto/bio/bss_core.c', ++ 'openssl/crypto/bio/bss_dgram.c', ++ 'openssl/crypto/bio/bss_fd.c', ++ 'openssl/crypto/bio/bss_file.c', ++ 'openssl/crypto/bio/bss_log.c', ++ 'openssl/crypto/bio/bss_mem.c', ++ 'openssl/crypto/bio/bss_null.c', ++ 'openssl/crypto/bio/bss_sock.c', ++ 'openssl/crypto/bio/ossl_core_bio.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_depr.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_err.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_print.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_srp.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/bn/bn_x931p.c', ++ 'openssl/crypto/buffer/buf_err.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/camellia/camellia.c', ++ 'openssl/crypto/camellia/cmll_cbc.c', ++ 'openssl/crypto/camellia/cmll_cfb.c', ++ 'openssl/crypto/camellia/cmll_ctr.c', ++ 'openssl/crypto/camellia/cmll_ecb.c', ++ 'openssl/crypto/camellia/cmll_misc.c', ++ 'openssl/crypto/camellia/cmll_ofb.c', ++ 'openssl/crypto/cast/c_cfb64.c', ++ 'openssl/crypto/cast/c_ecb.c', ++ 'openssl/crypto/cast/c_enc.c', ++ 'openssl/crypto/cast/c_ofb64.c', ++ 'openssl/crypto/cast/c_skey.c', ++ 'openssl/crypto/chacha/chacha_enc.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/cmp/cmp_asn.c', ++ 'openssl/crypto/cmp/cmp_client.c', ++ 'openssl/crypto/cmp/cmp_ctx.c', ++ 'openssl/crypto/cmp/cmp_err.c', ++ 'openssl/crypto/cmp/cmp_hdr.c', ++ 'openssl/crypto/cmp/cmp_http.c', ++ 'openssl/crypto/cmp/cmp_msg.c', ++ 'openssl/crypto/cmp/cmp_protect.c', ++ 'openssl/crypto/cmp/cmp_server.c', ++ 'openssl/crypto/cmp/cmp_status.c', ++ 'openssl/crypto/cmp/cmp_util.c', ++ 'openssl/crypto/cmp/cmp_vfy.c', ++ 'openssl/crypto/cms/cms_asn1.c', ++ 'openssl/crypto/cms/cms_att.c', ++ 'openssl/crypto/cms/cms_cd.c', ++ 'openssl/crypto/cms/cms_dd.c', ++ 'openssl/crypto/cms/cms_dh.c', ++ 'openssl/crypto/cms/cms_ec.c', ++ 'openssl/crypto/cms/cms_enc.c', ++ 'openssl/crypto/cms/cms_env.c', ++ 'openssl/crypto/cms/cms_err.c', ++ 'openssl/crypto/cms/cms_ess.c', ++ 'openssl/crypto/cms/cms_io.c', ++ 'openssl/crypto/cms/cms_kari.c', ++ 'openssl/crypto/cms/cms_lib.c', ++ 'openssl/crypto/cms/cms_pwri.c', ++ 'openssl/crypto/cms/cms_rsa.c', ++ 'openssl/crypto/cms/cms_sd.c', ++ 'openssl/crypto/cms/cms_smime.c', ++ 'openssl/crypto/conf/conf_api.c', ++ 'openssl/crypto/conf/conf_def.c', ++ 'openssl/crypto/conf/conf_err.c', ++ 'openssl/crypto/conf/conf_lib.c', ++ 'openssl/crypto/conf/conf_mall.c', ++ 'openssl/crypto/conf/conf_mod.c', ++ 'openssl/crypto/conf/conf_sap.c', ++ 'openssl/crypto/conf/conf_ssl.c', ++ 'openssl/crypto/crmf/crmf_asn.c', ++ 'openssl/crypto/crmf/crmf_err.c', ++ 'openssl/crypto/crmf/crmf_lib.c', ++ 'openssl/crypto/crmf/crmf_pbm.c', ++ 'openssl/crypto/ct/ct_b64.c', ++ 'openssl/crypto/ct/ct_err.c', ++ 'openssl/crypto/ct/ct_log.c', ++ 'openssl/crypto/ct/ct_oct.c', ++ 'openssl/crypto/ct/ct_policy.c', ++ 'openssl/crypto/ct/ct_prn.c', ++ 'openssl/crypto/ct/ct_sct.c', ++ 'openssl/crypto/ct/ct_sct_ctx.c', ++ 'openssl/crypto/ct/ct_vfy.c', ++ 'openssl/crypto/ct/ct_x509v3.c', ++ 'openssl/crypto/des/cbc_cksm.c', ++ 'openssl/crypto/des/cbc_enc.c', ++ 'openssl/crypto/des/cfb64ede.c', ++ 'openssl/crypto/des/cfb64enc.c', ++ 'openssl/crypto/des/cfb_enc.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/ecb_enc.c', ++ 'openssl/crypto/des/fcrypt.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/ofb64ede.c', ++ 'openssl/crypto/des/ofb64enc.c', ++ 'openssl/crypto/des/ofb_enc.c', ++ 'openssl/crypto/des/pcbc_enc.c', ++ 'openssl/crypto/des/qud_cksm.c', ++ 'openssl/crypto/des/rand_key.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/des/str2key.c', ++ 'openssl/crypto/des/xcbc_enc.c', ++ 'openssl/crypto/dh/dh_ameth.c', ++ 'openssl/crypto/dh/dh_asn1.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_depr.c', ++ 'openssl/crypto/dh/dh_err.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dh/dh_meth.c', ++ 'openssl/crypto/dh/dh_pmeth.c', ++ 'openssl/crypto/dh/dh_prn.c', ++ 'openssl/crypto/dh/dh_rfc5114.c', ++ 'openssl/crypto/dsa/dsa_ameth.c', ++ 'openssl/crypto/dsa/dsa_asn1.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_depr.c', ++ 'openssl/crypto/dsa/dsa_err.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_meth.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_pmeth.c', ++ 'openssl/crypto/dsa/dsa_prn.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/dso/dso_dl.c', ++ 'openssl/crypto/dso/dso_dlfcn.c', ++ 'openssl/crypto/dso/dso_err.c', ++ 'openssl/crypto/dso/dso_lib.c', ++ 'openssl/crypto/dso/dso_openssl.c', ++ 'openssl/crypto/dso/dso_vms.c', ++ 'openssl/crypto/dso/dso_win32.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_ameth.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_deprecated.c', ++ 'openssl/crypto/ec/ec_err.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ec_pmeth.c', ++ 'openssl/crypto/ec/ec_print.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/eck_prn.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/ec/ecx_meth.c', ++ 'openssl/crypto/encode_decode/decoder_err.c', ++ 'openssl/crypto/encode_decode/decoder_lib.c', ++ 'openssl/crypto/encode_decode/decoder_meth.c', ++ 'openssl/crypto/encode_decode/decoder_pkey.c', ++ 'openssl/crypto/encode_decode/encoder_err.c', ++ 'openssl/crypto/encode_decode/encoder_lib.c', ++ 'openssl/crypto/encode_decode/encoder_meth.c', ++ 'openssl/crypto/encode_decode/encoder_pkey.c', ++ 'openssl/crypto/engine/eng_all.c', ++ 'openssl/crypto/engine/eng_cnf.c', ++ 'openssl/crypto/engine/eng_ctrl.c', ++ 'openssl/crypto/engine/eng_dyn.c', ++ 'openssl/crypto/engine/eng_err.c', ++ 'openssl/crypto/engine/eng_fat.c', ++ 'openssl/crypto/engine/eng_init.c', ++ 'openssl/crypto/engine/eng_lib.c', ++ 'openssl/crypto/engine/eng_list.c', ++ 'openssl/crypto/engine/eng_openssl.c', ++ 'openssl/crypto/engine/eng_pkey.c', ++ 'openssl/crypto/engine/eng_rdrand.c', ++ 'openssl/crypto/engine/eng_table.c', ++ 'openssl/crypto/engine/tb_asnmth.c', ++ 'openssl/crypto/engine/tb_cipher.c', ++ 'openssl/crypto/engine/tb_dh.c', ++ 'openssl/crypto/engine/tb_digest.c', ++ 'openssl/crypto/engine/tb_dsa.c', ++ 'openssl/crypto/engine/tb_eckey.c', ++ 'openssl/crypto/engine/tb_pkmeth.c', ++ 'openssl/crypto/engine/tb_rand.c', ++ 'openssl/crypto/engine/tb_rsa.c', ++ 'openssl/crypto/err/err.c', ++ 'openssl/crypto/err/err_all.c', ++ 'openssl/crypto/err/err_all_legacy.c', ++ 'openssl/crypto/err/err_blocks.c', ++ 'openssl/crypto/err/err_prn.c', ++ 'openssl/crypto/ess/ess_asn1.c', ++ 'openssl/crypto/ess/ess_err.c', ++ 'openssl/crypto/ess/ess_lib.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/bio_b64.c', ++ 'openssl/crypto/evp/bio_enc.c', ++ 'openssl/crypto/evp/bio_md.c', ++ 'openssl/crypto/evp/bio_ok.c', ++ 'openssl/crypto/evp/c_allc.c', ++ 'openssl/crypto/evp/c_alld.c', ++ 'openssl/crypto/evp/cmeth_lib.c', ++ 'openssl/crypto/evp/ctrl_params_translate.c', ++ 'openssl/crypto/evp/dh_ctrl.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/dsa_ctrl.c', ++ 'openssl/crypto/evp/e_aes.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', ++ 'openssl/crypto/evp/e_aria.c', ++ 'openssl/crypto/evp/e_bf.c', ++ 'openssl/crypto/evp/e_camellia.c', ++ 'openssl/crypto/evp/e_cast.c', ++ 'openssl/crypto/evp/e_chacha20_poly1305.c', ++ 'openssl/crypto/evp/e_des.c', ++ 'openssl/crypto/evp/e_des3.c', ++ 'openssl/crypto/evp/e_idea.c', ++ 'openssl/crypto/evp/e_null.c', ++ 'openssl/crypto/evp/e_old.c', ++ 'openssl/crypto/evp/e_rc2.c', ++ 'openssl/crypto/evp/e_rc4.c', ++ 'openssl/crypto/evp/e_rc4_hmac_md5.c', ++ 'openssl/crypto/evp/e_rc5.c', ++ 'openssl/crypto/evp/e_seed.c', ++ 'openssl/crypto/evp/e_sm4.c', ++ 'openssl/crypto/evp/e_xcbc_d.c', ++ 'openssl/crypto/evp/ec_ctrl.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/encode.c', ++ 'openssl/crypto/evp/evp_cnf.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_err.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_key.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_pbe.c', ++ 'openssl/crypto/evp/evp_pkey.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/legacy_blake2.c', ++ 'openssl/crypto/evp/legacy_md4.c', ++ 'openssl/crypto/evp/legacy_md5.c', ++ 'openssl/crypto/evp/legacy_md5_sha1.c', ++ 'openssl/crypto/evp/legacy_mdc2.c', ++ 'openssl/crypto/evp/legacy_ripemd.c', ++ 'openssl/crypto/evp/legacy_sha.c', ++ 'openssl/crypto/evp/legacy_wp.c', ++ 'openssl/crypto/evp/m_null.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/names.c', ++ 'openssl/crypto/evp/p5_crpt.c', ++ 'openssl/crypto/evp/p5_crpt2.c', ++ 'openssl/crypto/evp/p_dec.c', ++ 'openssl/crypto/evp/p_enc.c', ++ 'openssl/crypto/evp/p_legacy.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/p_open.c', ++ 'openssl/crypto/evp/p_seal.c', ++ 'openssl/crypto/evp/p_sign.c', ++ 'openssl/crypto/evp/p_verify.c', ++ 'openssl/crypto/evp/pbe_scrypt.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/http/http_client.c', ++ 'openssl/crypto/http/http_err.c', ++ 'openssl/crypto/http/http_lib.c', ++ 'openssl/crypto/idea/i_cbc.c', ++ 'openssl/crypto/idea/i_cfb64.c', ++ 'openssl/crypto/idea/i_ecb.c', ++ 'openssl/crypto/idea/i_ofb64.c', ++ 'openssl/crypto/idea/i_skey.c', ++ 'openssl/crypto/kdf/kdf_err.c', ++ 'openssl/crypto/lhash/lh_stats.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpt_err.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/cversion.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ebcdic.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/getenv.c', ++ 'openssl/crypto/info.c', ++ 'openssl/crypto/init.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/mem_sec.c', ++ 'openssl/crypto/o_dir.c', ++ 'openssl/crypto/o_fopen.c', ++ 'openssl/crypto/o_init.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/o_time.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/passphrase.c', ++ 'openssl/crypto/provider.c', ++ 'openssl/crypto/provider_child.c', ++ 'openssl/crypto/provider_conf.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/punycode.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/trace.c', ++ 'openssl/crypto/uid.c', ++ 'openssl/crypto/md4/md4_dgst.c', ++ 'openssl/crypto/md4/md4_one.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/crypto/mdc2/mdc2_one.c', ++ 'openssl/crypto/mdc2/mdc2dgst.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/cts128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ocb128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/siv128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/objects/o_names.c', ++ 'openssl/crypto/objects/obj_dat.c', ++ 'openssl/crypto/objects/obj_err.c', ++ 'openssl/crypto/objects/obj_lib.c', ++ 'openssl/crypto/objects/obj_xref.c', ++ 'openssl/crypto/ocsp/ocsp_asn.c', ++ 'openssl/crypto/ocsp/ocsp_cl.c', ++ 'openssl/crypto/ocsp/ocsp_err.c', ++ 'openssl/crypto/ocsp/ocsp_ext.c', ++ 'openssl/crypto/ocsp/ocsp_http.c', ++ 'openssl/crypto/ocsp/ocsp_lib.c', ++ 'openssl/crypto/ocsp/ocsp_prn.c', ++ 'openssl/crypto/ocsp/ocsp_srv.c', ++ 'openssl/crypto/ocsp/ocsp_vfy.c', ++ 'openssl/crypto/ocsp/v3_ocsp.c', ++ 'openssl/crypto/pem/pem_all.c', ++ 'openssl/crypto/pem/pem_err.c', ++ 'openssl/crypto/pem/pem_info.c', ++ 'openssl/crypto/pem/pem_lib.c', ++ 'openssl/crypto/pem/pem_oth.c', ++ 'openssl/crypto/pem/pem_pk8.c', ++ 'openssl/crypto/pem/pem_pkey.c', ++ 'openssl/crypto/pem/pem_sign.c', ++ 'openssl/crypto/pem/pem_x509.c', ++ 'openssl/crypto/pem/pem_xaux.c', ++ 'openssl/crypto/pem/pvkfmt.c', ++ 'openssl/crypto/pkcs12/p12_add.c', ++ 'openssl/crypto/pkcs12/p12_asn.c', ++ 'openssl/crypto/pkcs12/p12_attr.c', ++ 'openssl/crypto/pkcs12/p12_crpt.c', ++ 'openssl/crypto/pkcs12/p12_crt.c', ++ 'openssl/crypto/pkcs12/p12_decr.c', ++ 'openssl/crypto/pkcs12/p12_init.c', ++ 'openssl/crypto/pkcs12/p12_key.c', ++ 'openssl/crypto/pkcs12/p12_kiss.c', ++ 'openssl/crypto/pkcs12/p12_mutl.c', ++ 'openssl/crypto/pkcs12/p12_npas.c', ++ 'openssl/crypto/pkcs12/p12_p8d.c', ++ 'openssl/crypto/pkcs12/p12_p8e.c', ++ 'openssl/crypto/pkcs12/p12_sbag.c', ++ 'openssl/crypto/pkcs12/p12_utl.c', ++ 'openssl/crypto/pkcs12/pk12err.c', ++ 'openssl/crypto/pkcs7/bio_pk7.c', ++ 'openssl/crypto/pkcs7/pk7_asn1.c', ++ 'openssl/crypto/pkcs7/pk7_attr.c', ++ 'openssl/crypto/pkcs7/pk7_doit.c', ++ 'openssl/crypto/pkcs7/pk7_lib.c', ++ 'openssl/crypto/pkcs7/pk7_mime.c', ++ 'openssl/crypto/pkcs7/pk7_smime.c', ++ 'openssl/crypto/pkcs7/pkcs7err.c', ++ 'openssl/crypto/poly1305/poly1305.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_err.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/prov_seed.c', ++ 'openssl/crypto/rand/rand_deprecated.c', ++ 'openssl/crypto/rand/rand_err.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rand/rand_meth.c', ++ 'openssl/crypto/rand/rand_pool.c', ++ 'openssl/crypto/rand/randfile.c', ++ 'openssl/crypto/rc2/rc2_cbc.c', ++ 'openssl/crypto/rc2/rc2_ecb.c', ++ 'openssl/crypto/rc2/rc2_skey.c', ++ 'openssl/crypto/rc2/rc2cfb64.c', ++ 'openssl/crypto/rc2/rc2ofb64.c', ++ 'openssl/crypto/rc4/rc4_enc.c', ++ 'openssl/crypto/rc4/rc4_skey.c', ++ 'openssl/crypto/ripemd/rmd_dgst.c', ++ 'openssl/crypto/ripemd/rmd_one.c', ++ 'openssl/crypto/rsa/rsa_ameth.c', ++ 'openssl/crypto/rsa/rsa_asn1.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_depr.c', ++ 'openssl/crypto/rsa/rsa_err.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_meth.c', ++ 'openssl/crypto/rsa/rsa_mp.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pmeth.c', ++ 'openssl/crypto/rsa/rsa_prn.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_saos.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/rsa/rsa_x931g.c', ++ 'openssl/crypto/seed/seed.c', ++ 'openssl/crypto/seed/seed_cbc.c', ++ 'openssl/crypto/seed/seed_cfb.c', ++ 'openssl/crypto/seed/seed_ecb.c', ++ 'openssl/crypto/seed/seed_ofb.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1_one.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/siphash/siphash.c', ++ 'openssl/crypto/sm2/sm2_crypt.c', ++ 'openssl/crypto/sm2/sm2_err.c', ++ 'openssl/crypto/sm2/sm2_key.c', ++ 'openssl/crypto/sm2/sm2_sign.c', ++ 'openssl/crypto/sm3/legacy_sm3.c', ++ 'openssl/crypto/sm3/sm3.c', ++ 'openssl/crypto/sm4/sm4.c', ++ 'openssl/crypto/srp/srp_lib.c', ++ 'openssl/crypto/srp/srp_vfy.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/crypto/store/store_err.c', ++ 'openssl/crypto/store/store_init.c', ++ 'openssl/crypto/store/store_lib.c', ++ 'openssl/crypto/store/store_meth.c', ++ 'openssl/crypto/store/store_register.c', ++ 'openssl/crypto/store/store_result.c', ++ 'openssl/crypto/store/store_strings.c', ++ 'openssl/crypto/ts/ts_asn1.c', ++ 'openssl/crypto/ts/ts_conf.c', ++ 'openssl/crypto/ts/ts_err.c', ++ 'openssl/crypto/ts/ts_lib.c', ++ 'openssl/crypto/ts/ts_req_print.c', ++ 'openssl/crypto/ts/ts_req_utils.c', ++ 'openssl/crypto/ts/ts_rsp_print.c', ++ 'openssl/crypto/ts/ts_rsp_sign.c', ++ 'openssl/crypto/ts/ts_rsp_utils.c', ++ 'openssl/crypto/ts/ts_rsp_verify.c', ++ 'openssl/crypto/ts/ts_verify_ctx.c', ++ 'openssl/crypto/txt_db/txt_db.c', ++ 'openssl/crypto/ui/ui_err.c', ++ 'openssl/crypto/ui/ui_lib.c', ++ 'openssl/crypto/ui/ui_null.c', ++ 'openssl/crypto/ui/ui_openssl.c', ++ 'openssl/crypto/ui/ui_util.c', ++ 'openssl/crypto/whrlpool/wp_block.c', ++ 'openssl/crypto/whrlpool/wp_dgst.c', ++ 'openssl/crypto/x509/by_dir.c', ++ 'openssl/crypto/x509/by_file.c', ++ 'openssl/crypto/x509/by_store.c', ++ 'openssl/crypto/x509/pcy_cache.c', ++ 'openssl/crypto/x509/pcy_data.c', ++ 'openssl/crypto/x509/pcy_lib.c', ++ 'openssl/crypto/x509/pcy_map.c', ++ 'openssl/crypto/x509/pcy_node.c', ++ 'openssl/crypto/x509/pcy_tree.c', ++ 'openssl/crypto/x509/t_crl.c', ++ 'openssl/crypto/x509/t_req.c', ++ 'openssl/crypto/x509/t_x509.c', ++ 'openssl/crypto/x509/v3_addr.c', ++ 'openssl/crypto/x509/v3_admis.c', ++ 'openssl/crypto/x509/v3_akeya.c', ++ 'openssl/crypto/x509/v3_akid.c', ++ 'openssl/crypto/x509/v3_asid.c', ++ 'openssl/crypto/x509/v3_bcons.c', ++ 'openssl/crypto/x509/v3_bitst.c', ++ 'openssl/crypto/x509/v3_conf.c', ++ 'openssl/crypto/x509/v3_cpols.c', ++ 'openssl/crypto/x509/v3_crld.c', ++ 'openssl/crypto/x509/v3_enum.c', ++ 'openssl/crypto/x509/v3_extku.c', ++ 'openssl/crypto/x509/v3_genn.c', ++ 'openssl/crypto/x509/v3_ia5.c', ++ 'openssl/crypto/x509/v3_info.c', ++ 'openssl/crypto/x509/v3_int.c', ++ 'openssl/crypto/x509/v3_ist.c', ++ 'openssl/crypto/x509/v3_lib.c', ++ 'openssl/crypto/x509/v3_ncons.c', ++ 'openssl/crypto/x509/v3_pci.c', ++ 'openssl/crypto/x509/v3_pcia.c', ++ 'openssl/crypto/x509/v3_pcons.c', ++ 'openssl/crypto/x509/v3_pku.c', ++ 'openssl/crypto/x509/v3_pmaps.c', ++ 'openssl/crypto/x509/v3_prn.c', ++ 'openssl/crypto/x509/v3_purp.c', ++ 'openssl/crypto/x509/v3_san.c', ++ 'openssl/crypto/x509/v3_skid.c', ++ 'openssl/crypto/x509/v3_sxnet.c', ++ 'openssl/crypto/x509/v3_tlsf.c', ++ 'openssl/crypto/x509/v3_utf8.c', ++ 'openssl/crypto/x509/v3_utl.c', ++ 'openssl/crypto/x509/v3err.c', ++ 'openssl/crypto/x509/x509_att.c', ++ 'openssl/crypto/x509/x509_cmp.c', ++ 'openssl/crypto/x509/x509_d2.c', ++ 'openssl/crypto/x509/x509_def.c', ++ 'openssl/crypto/x509/x509_err.c', ++ 'openssl/crypto/x509/x509_ext.c', ++ 'openssl/crypto/x509/x509_lu.c', ++ 'openssl/crypto/x509/x509_meth.c', ++ 'openssl/crypto/x509/x509_obj.c', ++ 'openssl/crypto/x509/x509_r2x.c', ++ 'openssl/crypto/x509/x509_req.c', ++ 'openssl/crypto/x509/x509_set.c', ++ 'openssl/crypto/x509/x509_trust.c', ++ 'openssl/crypto/x509/x509_txt.c', ++ 'openssl/crypto/x509/x509_v3.c', ++ 'openssl/crypto/x509/x509_vfy.c', ++ 'openssl/crypto/x509/x509_vpm.c', ++ 'openssl/crypto/x509/x509cset.c', ++ 'openssl/crypto/x509/x509name.c', ++ 'openssl/crypto/x509/x509rset.c', ++ 'openssl/crypto/x509/x509spki.c', ++ 'openssl/crypto/x509/x509type.c', ++ 'openssl/crypto/x509/x_all.c', ++ 'openssl/crypto/x509/x_attrib.c', ++ 'openssl/crypto/x509/x_crl.c', ++ 'openssl/crypto/x509/x_exten.c', ++ 'openssl/crypto/x509/x_name.c', ++ 'openssl/crypto/x509/x_pubkey.c', ++ 'openssl/crypto/x509/x_req.c', ++ 'openssl/crypto/x509/x_x509.c', ++ 'openssl/crypto/x509/x_x509a.c', ++ 'openssl/engines/e_capi.c', ++ 'openssl/engines/e_padlock.c', ++ 'openssl/providers/baseprov.c', ++ 'openssl/providers/defltprov.c', ++ 'openssl/providers/nullprov.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/der/der_sm2_key.c', ++ 'openssl/providers/common/der/der_sm2_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_default.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/asymciphers/sm2_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_null.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap_hw.c', ++ 'openssl/providers/implementations/digests/blake2_prov.c', ++ 'openssl/providers/implementations/digests/blake2b_prov.c', ++ 'openssl/providers/implementations/digests/blake2s_prov.c', ++ 'openssl/providers/implementations/digests/md5_prov.c', ++ 'openssl/providers/implementations/digests/md5_sha1_prov.c', ++ 'openssl/providers/implementations/digests/null_prov.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/digests/sm3_prov.c', ++ 'openssl/providers/implementations/encode_decode/decode_der2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_epki2pki.c', ++ 'openssl/providers/implementations/encode_decode/decode_msblob2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_pem2der.c', ++ 'openssl/providers/implementations/encode_decode/decode_pvk2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_spki2typespki.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2any.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2blob.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2text.c', ++ 'openssl/providers/implementations/encode_decode/endecoder_common.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/krb5kdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/pkcs12kdf.c', ++ 'openssl/providers/implementations/kdfs/scrypt.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/blake2b_mac.c', ++ 'openssl/providers/implementations/macs/blake2s_mac.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/macs/poly1305_prov.c', ++ 'openssl/providers/implementations/macs/siphash_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/seed_src.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', ++ 'openssl/providers/implementations/rands/seeding/rand_tsc.c', ++ 'openssl/providers/implementations/rands/seeding/rand_unix.c', ++ 'openssl/providers/implementations/rands/seeding/rand_win.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/providers/implementations/signature/sm2_sig.c', ++ 'openssl/providers/implementations/storemgmt/file_store.c', ++ 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_des.c', ++ 'openssl/providers/implementations/ciphers/cipher_des_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/digests/md4_prov.c', ++ 'openssl/providers/implementations/digests/mdc2_prov.c', ++ 'openssl/providers/implementations/digests/ripemd_prov.c', ++ 'openssl/providers/implementations/digests/wp_prov.c', ++ 'openssl/providers/implementations/kdfs/pbkdf1.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/legacyprov.c', ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/asm_avx2/crypto/aes/aes-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/poly1305/poly1305-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha1-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha256-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/sha/sha512-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/bn-sw_64.S', ++ './config/archs/linux-sw_64/asm_avx2/crypto/bn/sw_64-mont.S', ++ './config/archs/linux-sw_64/asm_avx2/providers/legacy.ld', ++ './config/archs/linux-sw_64/asm_avx2/providers/fips.ld', ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'AES_ASM', ++ 'OPENSSL_BN_ASM_MONT', ++ 'POLY1305_ASM', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wa,--noexecstack', ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_digests_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_digests_gen.c +new file mode 100644 +index 00000000..e4e14e82 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_digests_gen.c +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_digests_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_digests.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = { ++ DER_OID_V_sigAlgs ++}; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = { ++ DER_OID_V_id_sha1 ++}; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = { ++ DER_OID_V_id_md2 ++}; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = { ++ DER_OID_V_id_md5 ++}; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = { ++ DER_OID_V_id_sha256 ++}; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = { ++ DER_OID_V_id_sha384 ++}; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = { ++ DER_OID_V_id_sha512 ++}; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = { ++ DER_OID_V_id_sha224 ++}; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = { ++ DER_OID_V_id_sha512_224 ++}; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = { ++ DER_OID_V_id_sha512_256 ++}; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = { ++ DER_OID_V_id_sha3_224 ++}; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = { ++ DER_OID_V_id_sha3_256 ++}; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = { ++ DER_OID_V_id_sha3_384 ++}; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = { ++ DER_OID_V_id_sha3_512 ++}; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = { ++ DER_OID_V_id_shake128 ++}; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = { ++ DER_OID_V_id_shake256 ++}; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = { ++ DER_OID_V_id_shake128_len ++}; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = { ++ DER_OID_V_id_shake256_len ++}; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = { ++ DER_OID_V_id_KMACWithSHAKE128 ++}; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = { ++ DER_OID_V_id_KMACWithSHAKE256 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_dsa_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_dsa_gen.c +new file mode 100644 +index 00000000..e5cfe91e +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_dsa_gen.c +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_dsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++ */ ++ ++/* ++ * DSA low level APIs are deprecated for public use, but still ok for ++ * internal use. ++ */ ++#include "internal/deprecated.h" ++ ++#include "prov/der_dsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = { ++ DER_OID_V_id_dsa ++}; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = { ++ DER_OID_V_id_dsa_with_sha1 ++}; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = { ++ DER_OID_V_id_dsa_with_sha224 ++}; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = { ++ DER_OID_V_id_dsa_with_sha256 ++}; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = { ++ DER_OID_V_id_dsa_with_sha384 ++}; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = { ++ DER_OID_V_id_dsa_with_sha512 ++}; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = { ++ DER_OID_V_id_dsa_with_sha3_224 ++}; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = { ++ DER_OID_V_id_dsa_with_sha3_256 ++}; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = { ++ DER_OID_V_id_dsa_with_sha3_384 ++}; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = { ++ DER_OID_V_id_dsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ec_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ec_gen.c +new file mode 100644 +index 00000000..e1ed54ba +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ec_gen.c +@@ -0,0 +1,279 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ec_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ec.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = { ++ DER_OID_V_ecdsa_with_SHA1 ++}; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = { ++ DER_OID_V_id_ecPublicKey ++}; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = { ++ DER_OID_V_c2pnb163v1 ++}; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = { ++ DER_OID_V_c2pnb163v2 ++}; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = { ++ DER_OID_V_c2pnb163v3 ++}; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = { ++ DER_OID_V_c2pnb176w1 ++}; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = { ++ DER_OID_V_c2tnb191v1 ++}; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = { ++ DER_OID_V_c2tnb191v2 ++}; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = { ++ DER_OID_V_c2tnb191v3 ++}; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = { ++ DER_OID_V_c2onb191v4 ++}; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = { ++ DER_OID_V_c2onb191v5 ++}; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = { ++ DER_OID_V_c2pnb208w1 ++}; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = { ++ DER_OID_V_c2tnb239v1 ++}; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = { ++ DER_OID_V_c2tnb239v2 ++}; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = { ++ DER_OID_V_c2tnb239v3 ++}; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = { ++ DER_OID_V_c2onb239v4 ++}; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = { ++ DER_OID_V_c2onb239v5 ++}; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = { ++ DER_OID_V_c2pnb272w1 ++}; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = { ++ DER_OID_V_c2pnb304w1 ++}; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = { ++ DER_OID_V_c2tnb359v1 ++}; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = { ++ DER_OID_V_c2pnb368w1 ++}; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = { ++ DER_OID_V_c2tnb431r1 ++}; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = { ++ DER_OID_V_prime192v1 ++}; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = { ++ DER_OID_V_prime192v2 ++}; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = { ++ DER_OID_V_prime192v3 ++}; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = { ++ DER_OID_V_prime239v1 ++}; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = { ++ DER_OID_V_prime239v2 ++}; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = { ++ DER_OID_V_prime239v3 ++}; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = { ++ DER_OID_V_prime256v1 ++}; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = { ++ DER_OID_V_ecdsa_with_SHA224 ++}; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = { ++ DER_OID_V_ecdsa_with_SHA256 ++}; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = { ++ DER_OID_V_ecdsa_with_SHA384 ++}; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = { ++ DER_OID_V_ecdsa_with_SHA512 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = { ++ DER_OID_V_id_ecdsa_with_sha3_224 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = { ++ DER_OID_V_id_ecdsa_with_sha3_256 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = { ++ DER_OID_V_id_ecdsa_with_sha3_384 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = { ++ DER_OID_V_id_ecdsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ecx_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ecx_gen.c +new file mode 100644 +index 00000000..ba7bf14b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_ecx_gen.c +@@ -0,0 +1,44 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ecx_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = { ++ DER_OID_V_id_X25519 ++}; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = { ++ DER_OID_V_id_X448 ++}; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = { ++ DER_OID_V_id_Ed25519 ++}; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = { ++ DER_OID_V_id_Ed448 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_rsa_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_rsa_gen.c +new file mode 100644 +index 00000000..a3431798 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_rsa_gen.c +@@ -0,0 +1,174 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_rsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_rsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = { ++ DER_OID_V_hashAlgs ++}; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = { ++ DER_OID_V_rsaEncryption ++}; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = { ++ DER_OID_V_id_RSAES_OAEP ++}; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = { ++ DER_OID_V_id_pSpecified ++}; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = { ++ DER_OID_V_id_RSASSA_PSS ++}; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = { ++ DER_OID_V_md2WithRSAEncryption ++}; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = { ++ DER_OID_V_md5WithRSAEncryption ++}; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = { ++ DER_OID_V_sha1WithRSAEncryption ++}; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = { ++ DER_OID_V_sha224WithRSAEncryption ++}; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = { ++ DER_OID_V_sha256WithRSAEncryption ++}; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = { ++ DER_OID_V_sha384WithRSAEncryption ++}; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = { ++ DER_OID_V_sha512WithRSAEncryption ++}; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = { ++ DER_OID_V_sha512_224WithRSAEncryption ++}; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = { ++ DER_OID_V_sha512_256WithRSAEncryption ++}; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = { ++ DER_OID_V_id_mgf1 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 ++}; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = { ++ DER_OID_V_md4WithRSAEncryption ++}; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = { ++ DER_OID_V_ripemd160WithRSAEncryption ++}; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = { ++ DER_OID_V_mdc2WithRSASignature ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_sm2_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_sm2_gen.c +new file mode 100644 +index 00000000..6424ea16 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_sm2_gen.c +@@ -0,0 +1,30 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_sm2_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_sm2.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = { ++ DER_OID_V_sm2_with_SM3 ++}; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = { ++ DER_OID_V_curveSM2 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_wrap_gen.c b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_wrap_gen.c +new file mode 100644 +index 00000000..6cf93972 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/der/der_wrap_gen.c +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_wrap_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_wrap.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = { ++ DER_OID_V_id_alg_CMS3DESwrap ++}; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = { ++ DER_OID_V_id_aes128_wrap ++}; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = { ++ DER_OID_V_id_aes192_wrap ++}; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = { ++ DER_OID_V_id_aes256_wrap ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_digests.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_digests.h +new file mode 100644 +index 00000000..b184807c +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_digests.h +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_digests.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03 ++#define DER_OID_SZ_sigAlgs 10 ++extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs]; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A ++#define DER_OID_SZ_id_sha1 7 ++extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1]; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02 ++#define DER_OID_SZ_id_md2 10 ++extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2]; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 ++#define DER_OID_SZ_id_md5 10 ++extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5]; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 ++#define DER_OID_SZ_id_sha256 11 ++extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256]; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 ++#define DER_OID_SZ_id_sha384 11 ++extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384]; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 ++#define DER_OID_SZ_id_sha512 11 ++extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512]; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 ++#define DER_OID_SZ_id_sha224 11 ++extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224]; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05 ++#define DER_OID_SZ_id_sha512_224 11 ++extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224]; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06 ++#define DER_OID_SZ_id_sha512_256 11 ++extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256]; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07 ++#define DER_OID_SZ_id_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224]; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 ++#define DER_OID_SZ_id_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256]; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 ++#define DER_OID_SZ_id_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384]; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A ++#define DER_OID_SZ_id_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512]; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B ++#define DER_OID_SZ_id_shake128 11 ++extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128]; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C ++#define DER_OID_SZ_id_shake256 11 ++extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256]; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11 ++#define DER_OID_SZ_id_shake128_len 11 ++extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len]; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12 ++#define DER_OID_SZ_id_shake256_len 11 ++extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len]; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13 ++#define DER_OID_SZ_id_KMACWithSHAKE128 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128]; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14 ++#define DER_OID_SZ_id_KMACWithSHAKE256 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_dsa.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_dsa.h +new file mode 100644 +index 00000000..b12a5628 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_dsa.h +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_dsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01 ++#define DER_OID_SZ_id_dsa 9 ++extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa]; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha1 9 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1]; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_id_dsa_with_sha224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224]; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_id_dsa_with_sha256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256]; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384]; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_id_dsa_with_sha512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512]; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05 ++#define DER_OID_SZ_id_dsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224]; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06 ++#define DER_OID_SZ_id_dsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256]; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07 ++#define DER_OID_SZ_id_dsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384]; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08 ++#define DER_OID_SZ_id_dsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag, ++ DSA *dsa, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ec.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ec.h +new file mode 100644 +index 00000000..dd697771 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ec.h +@@ -0,0 +1,286 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ec.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA1 9 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1]; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01 ++#define DER_OID_SZ_id_ecPublicKey 9 ++extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey]; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01 ++#define DER_OID_SZ_c2pnb163v1 10 ++extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1]; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02 ++#define DER_OID_SZ_c2pnb163v2 10 ++extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2]; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03 ++#define DER_OID_SZ_c2pnb163v3 10 ++extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3]; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04 ++#define DER_OID_SZ_c2pnb176w1 10 ++extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1]; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05 ++#define DER_OID_SZ_c2tnb191v1 10 ++extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1]; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06 ++#define DER_OID_SZ_c2tnb191v2 10 ++extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2]; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07 ++#define DER_OID_SZ_c2tnb191v3 10 ++extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3]; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08 ++#define DER_OID_SZ_c2onb191v4 10 ++extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4]; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09 ++#define DER_OID_SZ_c2onb191v5 10 ++extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5]; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A ++#define DER_OID_SZ_c2pnb208w1 10 ++extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1]; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B ++#define DER_OID_SZ_c2tnb239v1 10 ++extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1]; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C ++#define DER_OID_SZ_c2tnb239v2 10 ++extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2]; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D ++#define DER_OID_SZ_c2tnb239v3 10 ++extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3]; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E ++#define DER_OID_SZ_c2onb239v4 10 ++extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4]; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F ++#define DER_OID_SZ_c2onb239v5 10 ++extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5]; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10 ++#define DER_OID_SZ_c2pnb272w1 10 ++extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1]; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11 ++#define DER_OID_SZ_c2pnb304w1 10 ++extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1]; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12 ++#define DER_OID_SZ_c2tnb359v1 10 ++extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1]; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13 ++#define DER_OID_SZ_c2pnb368w1 10 ++extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1]; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14 ++#define DER_OID_SZ_c2tnb431r1 10 ++extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1]; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01 ++#define DER_OID_SZ_prime192v1 10 ++extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1]; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_prime192v2 10 ++extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2]; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03 ++#define DER_OID_SZ_prime192v3 10 ++extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3]; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04 ++#define DER_OID_SZ_prime239v1 10 ++extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1]; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05 ++#define DER_OID_SZ_prime239v2 10 ++extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2]; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06 ++#define DER_OID_SZ_prime239v3 10 ++extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3]; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07 ++#define DER_OID_SZ_prime256v1 10 ++extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1]; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA224 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224]; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_ecdsa_with_SHA256 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256]; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_ecdsa_with_SHA384 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384]; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_ecdsa_with_SHA512 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512]; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09 ++#define DER_OID_SZ_id_ecdsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224]; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A ++#define DER_OID_SZ_id_ecdsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256]; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B ++#define DER_OID_SZ_id_ecdsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384]; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C ++#define DER_OID_SZ_id_ecdsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ecx.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ecx.h +new file mode 100644 +index 00000000..fc857380 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_ecx.h +@@ -0,0 +1,50 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ecx.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++#include "crypto/ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E ++#define DER_OID_SZ_id_X25519 5 ++extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519]; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F ++#define DER_OID_SZ_id_X448 5 ++extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448]; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70 ++#define DER_OID_SZ_id_Ed25519 5 ++extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519]; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71 ++#define DER_OID_SZ_id_Ed448 5 ++extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448]; ++ ++ ++int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_rsa.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_rsa.h +new file mode 100644 +index 00000000..5ec3c515 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_rsa.h +@@ -0,0 +1,187 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_rsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/rsa.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02 ++#define DER_OID_SZ_hashAlgs 10 ++extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs]; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01 ++#define DER_OID_SZ_rsaEncryption 11 ++extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption]; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07 ++#define DER_OID_SZ_id_RSAES_OAEP 11 ++extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP]; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09 ++#define DER_OID_SZ_id_pSpecified 11 ++extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified]; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A ++#define DER_OID_SZ_id_RSASSA_PSS 11 ++extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS]; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02 ++#define DER_OID_SZ_md2WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption]; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 ++#define DER_OID_SZ_md5WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption]; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05 ++#define DER_OID_SZ_sha1WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption]; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E ++#define DER_OID_SZ_sha224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption]; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B ++#define DER_OID_SZ_sha256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption]; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C ++#define DER_OID_SZ_sha384WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption]; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D ++#define DER_OID_SZ_sha512WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption]; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F ++#define DER_OID_SZ_sha512_224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption]; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10 ++#define DER_OID_SZ_sha512_256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption]; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08 ++#define DER_OID_SZ_id_mgf1 11 ++extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10 ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512]; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03 ++#define DER_OID_SZ_md4WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption]; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_ripemd160WithRSAEncryption 8 ++extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption]; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E ++#define DER_OID_SZ_mdc2WithRSASignature 7 ++extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature]; ++ ++ ++/* PSS parameters */ ++int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa); ++int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag, ++ int rsa_type, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag, ++ int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_sm2.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_sm2.h +new file mode 100644 +index 00000000..9d41b312 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_sm2.h +@@ -0,0 +1,37 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_sm2.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75 ++#define DER_OID_SZ_sm2_with_SM3 10 ++extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3]; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D ++#define DER_OID_SZ_curveSM2 10 ++extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_wrap.h b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_wrap.h +new file mode 100644 +index 00000000..ff295403 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/common/include/prov/der_wrap.h +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_wrap.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06 ++#define DER_OID_SZ_id_alg_CMS3DESwrap 13 ++extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap]; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05 ++#define DER_OID_SZ_id_aes128_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap]; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19 ++#define DER_OID_SZ_id_aes192_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap]; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D ++#define DER_OID_SZ_id_aes256_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/fips.ld b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/fips.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/fips.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/legacy.ld b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/legacy.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/asm_avx2/providers/legacy.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/apps/progs.c b/deps/openssl/config/archs/linux-sw_64/no-asm/apps/progs.c +new file mode 100644 +index 00000000..f594c302 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/apps/progs.c +@@ -0,0 +1,397 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "progs.h" ++ ++FUNCTION functions[] = { ++ {FT_general, "asn1parse", asn1parse_main, asn1parse_options, NULL, NULL}, ++ {FT_general, "ca", ca_main, ca_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "ciphers", ciphers_main, ciphers_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMP ++ {FT_general, "cmp", cmp_main, cmp_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_CMS ++ {FT_general, "cms", cms_main, cms_options, NULL, NULL}, ++#endif ++ {FT_general, "crl", crl_main, crl_options, NULL, NULL}, ++ {FT_general, "crl2pkcs7", crl2pkcs7_main, crl2pkcs7_options, NULL, NULL}, ++ {FT_general, "dgst", dgst_main, dgst_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DH ++ {FT_general, "dhparam", dhparam_main, dhparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsa", dsa_main, dsa_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "dsaparam", dsaparam_main, dsaparam_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ec", ec_main, ec_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_EC ++ {FT_general, "ecparam", ecparam_main, ecparam_options, NULL, NULL}, ++#endif ++ {FT_general, "enc", enc_main, enc_options, NULL, NULL}, ++#ifndef OPENSSL_NO_ENGINE ++ {FT_general, "engine", engine_main, engine_options, NULL, NULL}, ++#endif ++ {FT_general, "errstr", errstr_main, errstr_options, NULL, NULL}, ++ {FT_general, "fipsinstall", fipsinstall_main, fipsinstall_options, NULL, NULL}, ++#ifndef OPENSSL_NO_DSA ++ {FT_general, "gendsa", gendsa_main, gendsa_options, NULL, NULL}, ++#endif ++ {FT_general, "genpkey", genpkey_main, genpkey_options, NULL, NULL}, ++#ifndef OPENSSL_NO_RSA ++ {FT_general, "genrsa", genrsa_main, genrsa_options, NULL, NULL}, ++#endif ++ {FT_general, "help", help_main, help_options, NULL, NULL}, ++ {FT_general, "info", info_main, info_options, NULL, NULL}, ++ {FT_general, "kdf", kdf_main, kdf_options, NULL, NULL}, ++ {FT_general, "list", list_main, list_options, NULL, NULL}, ++ {FT_general, "mac", mac_main, mac_options, NULL, NULL}, ++ {FT_general, "nseq", nseq_main, nseq_options, NULL, NULL}, ++#ifndef OPENSSL_NO_OCSP ++ {FT_general, "ocsp", ocsp_main, ocsp_options, NULL, NULL}, ++#endif ++ {FT_general, "passwd", passwd_main, passwd_options, NULL, NULL}, ++ {FT_general, "pkcs12", pkcs12_main, pkcs12_options, NULL, NULL}, ++ {FT_general, "pkcs7", pkcs7_main, pkcs7_options, NULL, NULL}, ++ {FT_general, "pkcs8", pkcs8_main, pkcs8_options, NULL, NULL}, ++ {FT_general, "pkey", pkey_main, pkey_options, NULL, NULL}, ++ {FT_general, "pkeyparam", pkeyparam_main, pkeyparam_options, NULL, NULL}, ++ {FT_general, "pkeyutl", pkeyutl_main, pkeyutl_options, NULL, NULL}, ++ {FT_general, "prime", prime_main, prime_options, NULL, NULL}, ++ {FT_general, "rand", rand_main, rand_options, NULL, NULL}, ++ {FT_general, "rehash", rehash_main, rehash_options, NULL, NULL}, ++ {FT_general, "req", req_main, req_options, NULL, NULL}, ++ {FT_general, "rsa", rsa_main, rsa_options, NULL, NULL}, ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) && !defined(OPENSSL_NO_RSA) ++ {FT_general, "rsautl", rsautl_main, rsautl_options, "pkeyutl", "3.0"}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_client", s_client_main, s_client_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_server", s_server_main, s_server_options, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SOCK ++ {FT_general, "s_time", s_time_main, s_time_options, NULL, NULL}, ++#endif ++ {FT_general, "sess_id", sess_id_main, sess_id_options, NULL, NULL}, ++ {FT_general, "smime", smime_main, smime_options, NULL, NULL}, ++ {FT_general, "speed", speed_main, speed_options, NULL, NULL}, ++ {FT_general, "spkac", spkac_main, spkac_options, NULL, NULL}, ++#ifndef OPENSSL_NO_SRP ++ {FT_general, "srp", srp_main, srp_options, NULL, NULL}, ++#endif ++ {FT_general, "storeutl", storeutl_main, storeutl_options, NULL, NULL}, ++#ifndef OPENSSL_NO_TS ++ {FT_general, "ts", ts_main, ts_options, NULL, NULL}, ++#endif ++ {FT_general, "verify", verify_main, verify_options, NULL, NULL}, ++ {FT_general, "version", version_main, version_options, NULL, NULL}, ++ {FT_general, "x509", x509_main, x509_options, NULL, NULL}, ++#ifndef OPENSSL_NO_MD2 ++ {FT_md, "md2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_MD4 ++ {FT_md, "md4", dgst_main, NULL, NULL}, ++#endif ++ {FT_md, "md5", dgst_main, NULL, NULL}, ++ {FT_md, "sha1", dgst_main, NULL, NULL}, ++ {FT_md, "sha224", dgst_main, NULL, NULL}, ++ {FT_md, "sha256", dgst_main, NULL, NULL}, ++ {FT_md, "sha384", dgst_main, NULL, NULL}, ++ {FT_md, "sha512", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha512-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-224", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-256", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-384", dgst_main, NULL, NULL}, ++ {FT_md, "sha3-512", dgst_main, NULL, NULL}, ++ {FT_md, "shake128", dgst_main, NULL, NULL}, ++ {FT_md, "shake256", dgst_main, NULL, NULL}, ++#ifndef OPENSSL_NO_MDC2 ++ {FT_md, "mdc2", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_RMD160 ++ {FT_md, "rmd160", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2b512", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_BLAKE2 ++ {FT_md, "blake2s256", dgst_main, NULL, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM3 ++ {FT_md, "sm3", dgst_main, NULL, NULL}, ++#endif ++ {FT_cipher, "aes-128-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-128-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-192-ecb", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-cbc", enc_main, enc_options, NULL}, ++ {FT_cipher, "aes-256-ecb", enc_main, enc_options, NULL}, ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-128-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-192-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ctr", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb1", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_ARIA ++ {FT_cipher, "aria-256-cfb8", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-128-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-192-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAMELLIA ++ {FT_cipher, "camellia-256-ecb", enc_main, enc_options, NULL}, ++#endif ++ {FT_cipher, "base64", enc_main, enc_options, NULL}, ++#ifdef ZLIB ++ {FT_cipher, "zlib", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "desx", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC4 ++ {FT_cipher, "rc4-40", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_DES ++ {FT_cipher, "des-ede3-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_IDEA ++ {FT_cipher, "idea-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SEED ++ {FT_cipher, "seed-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-64-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC2 ++ {FT_cipher, "rc2-40-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_BF ++ {FT_cipher, "bf-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_CAST ++ {FT_cipher, "cast-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_RC5 ++ {FT_cipher, "rc5-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cbc", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ecb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-cfb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ofb", enc_main, enc_options, NULL}, ++#endif ++#ifndef OPENSSL_NO_SM4 ++ {FT_cipher, "sm4-ctr", enc_main, enc_options, NULL}, ++#endif ++ {0, NULL, NULL, NULL, NULL} ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/configdata.pm b/deps/openssl/config/archs/linux-sw_64/no-asm/configdata.pm +new file mode 100644 +index 00000000..3da52c57 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/configdata.pm +@@ -0,0 +1,27577 @@ ++#! /usr/bin/env perl ++# -*- mode: perl -*- ++ ++package configdata; ++ ++use strict; ++use warnings; ++ ++use Exporter; ++our @ISA = qw(Exporter); ++our @EXPORT = qw( ++ %config %target %disabled %withargs %unified_info ++ @disablables @disablables_int ++); ++ ++our %config = ( ++ "AR" => "ar", ++ "ARFLAGS" => [ ++ "qc" ++ ], ++ "CC" => "gcc", ++ "CFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "CPPDEFINES" => [], ++ "CPPFLAGS" => [], ++ "CPPINCLUDES" => [], ++ "CXX" => "g++", ++ "CXXFLAGS" => [ ++ "-Wall -O3" ++ ], ++ "FIPSKEY" => "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "LDFLAGS" => [], ++ "LDLIBS" => [], ++ "PERL" => "/usr/bin/perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "RCFLAGS" => [], ++ "api" => "30000", ++ "b32" => "0", ++ "b64" => "0", ++ "b64l" => "1", ++ "bn_ll" => "0", ++ "build_file" => "Makefile", ++ "build_file_templates" => [ ++ "Configurations/common0.tmpl", ++ "Configurations/unix-Makefile.tmpl" ++ ], ++ "build_infos" => [ ++ "./build.info", ++ "crypto/build.info", ++ "ssl/build.info", ++ "apps/build.info", ++ "util/build.info", ++ "tools/build.info", ++ "fuzz/build.info", ++ "providers/build.info", ++ "doc/build.info", ++ "test/build.info", ++ "engines/build.info", ++ "crypto/objects/build.info", ++ "crypto/buffer/build.info", ++ "crypto/bio/build.info", ++ "crypto/stack/build.info", ++ "crypto/lhash/build.info", ++ "crypto/rand/build.info", ++ "crypto/evp/build.info", ++ "crypto/asn1/build.info", ++ "crypto/pem/build.info", ++ "crypto/x509/build.info", ++ "crypto/conf/build.info", ++ "crypto/txt_db/build.info", ++ "crypto/pkcs7/build.info", ++ "crypto/pkcs12/build.info", ++ "crypto/ui/build.info", ++ "crypto/kdf/build.info", ++ "crypto/store/build.info", ++ "crypto/property/build.info", ++ "crypto/md4/build.info", ++ "crypto/md5/build.info", ++ "crypto/sha/build.info", ++ "crypto/mdc2/build.info", ++ "crypto/hmac/build.info", ++ "crypto/ripemd/build.info", ++ "crypto/whrlpool/build.info", ++ "crypto/poly1305/build.info", ++ "crypto/siphash/build.info", ++ "crypto/sm3/build.info", ++ "crypto/des/build.info", ++ "crypto/aes/build.info", ++ "crypto/rc2/build.info", ++ "crypto/rc4/build.info", ++ "crypto/idea/build.info", ++ "crypto/aria/build.info", ++ "crypto/bf/build.info", ++ "crypto/cast/build.info", ++ "crypto/camellia/build.info", ++ "crypto/seed/build.info", ++ "crypto/sm4/build.info", ++ "crypto/chacha/build.info", ++ "crypto/modes/build.info", ++ "crypto/bn/build.info", ++ "crypto/ec/build.info", ++ "crypto/rsa/build.info", ++ "crypto/dsa/build.info", ++ "crypto/dh/build.info", ++ "crypto/sm2/build.info", ++ "crypto/dso/build.info", ++ "crypto/engine/build.info", ++ "crypto/err/build.info", ++ "crypto/http/build.info", ++ "crypto/ocsp/build.info", ++ "crypto/cms/build.info", ++ "crypto/ts/build.info", ++ "crypto/srp/build.info", ++ "crypto/cmac/build.info", ++ "crypto/ct/build.info", ++ "crypto/async/build.info", ++ "crypto/ess/build.info", ++ "crypto/crmf/build.info", ++ "crypto/cmp/build.info", ++ "crypto/encode_decode/build.info", ++ "crypto/ffc/build.info", ++ "apps/lib/build.info", ++ "providers/common/build.info", ++ "providers/implementations/build.info", ++ "providers/fips/build.info", ++ "doc/man1/build.info", ++ "providers/common/der/build.info", ++ "providers/implementations/digests/build.info", ++ "providers/implementations/ciphers/build.info", ++ "providers/implementations/rands/build.info", ++ "providers/implementations/macs/build.info", ++ "providers/implementations/kdfs/build.info", ++ "providers/implementations/exchange/build.info", ++ "providers/implementations/keymgmt/build.info", ++ "providers/implementations/signature/build.info", ++ "providers/implementations/asymciphers/build.info", ++ "providers/implementations/encode_decode/build.info", ++ "providers/implementations/storemgmt/build.info", ++ "providers/implementations/kem/build.info", ++ "providers/implementations/rands/seeding/build.info" ++ ], ++ "build_metadata" => "+quic", ++ "build_type" => "release", ++ "builddir" => ".", ++ "cflags" => [], ++ "conf_files" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf" ++ ], ++ "cppflags" => [], ++ "cxxflags" => [], ++ "defines" => [ ++ "NDEBUG" ++ ], ++ "dynamic_engines" => "0", ++ "ex_libs" => [], ++ "full_version" => "3.0.5+quic", ++ "includes" => [], ++ "lflags" => [], ++ "lib_defines" => [ ++ "OPENSSL_PIC" ++ ], ++ "libdir" => "", ++ "major" => "3", ++ "makedep_scheme" => "gcc", ++ "minor" => "0", ++ "openssl_api_defines" => [ ++ "OPENSSL_CONFIGURED_API=30000" ++ ], ++ "openssl_feature_defines" => [ ++ "OPENSSL_RAND_SEED_OS", ++ "OPENSSL_THREADS", ++ "OPENSSL_NO_AFALGENG", ++ "OPENSSL_NO_ASAN", ++ "OPENSSL_NO_ASM", ++ "OPENSSL_NO_COMP", ++ "OPENSSL_NO_CRYPTO_MDEBUG", ++ "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE", ++ "OPENSSL_NO_DEVCRYPTOENG", ++ "OPENSSL_NO_EC_NISTP_64_GCC_128", ++ "OPENSSL_NO_EGD", ++ "OPENSSL_NO_EXTERNAL_TESTS", ++ "OPENSSL_NO_FUZZ_AFL", ++ "OPENSSL_NO_FUZZ_LIBFUZZER", ++ "OPENSSL_NO_KTLS", ++ "OPENSSL_NO_LOADERENG", ++ "OPENSSL_NO_MD2", ++ "OPENSSL_NO_MSAN", ++ "OPENSSL_NO_RC5", ++ "OPENSSL_NO_SCTP", ++ "OPENSSL_NO_SSL3", ++ "OPENSSL_NO_SSL3_METHOD", ++ "OPENSSL_NO_TRACE", ++ "OPENSSL_NO_UBSAN", ++ "OPENSSL_NO_UNIT_TEST", ++ "OPENSSL_NO_UPLINK", ++ "OPENSSL_NO_WEAK_SSL_CIPHERS", ++ "OPENSSL_NO_DYNAMIC_ENGINE" ++ ], ++ "openssl_other_defines" => [ ++ "OPENSSL_NO_KTLS" ++ ], ++ "openssl_sys_defines" => [], ++ "openssldir" => "", ++ "options" => "enable-ssl-trace enable-fips no-afalgeng no-asan no-asm no-buildtest-c++ no-comp no-crypto-mdebug no-crypto-mdebug-backtrace no-devcryptoeng no-dynamic-engine no-ec_nistp_64_gcc_128 no-egd no-external-tests no-fuzz-afl no-fuzz-libfuzzer no-ktls no-loadereng no-md2 no-msan no-rc5 no-sctp no-shared no-ssl3 no-ssl3-method no-trace no-ubsan no-unit-test no-uplink no-weak-ssl-ciphers no-zlib no-zlib-dynamic", ++ "patch" => "5", ++ "perl_archname" => "x86_64-linux-gnu-thread-multi", ++ "perl_cmd" => "/usr/bin/perl", ++ "perl_version" => "5.30.0", ++ "perlargv" => [ ++ "no-comp", ++ "no-shared", ++ "no-afalgeng", ++ "enable-ssl-trace", ++ "enable-fips", ++ "no-asm", ++ "linux-sw_64" ++ ], ++ "perlenv" => { ++ "AR" => undef, ++ "ARFLAGS" => undef, ++ "AS" => undef, ++ "ASFLAGS" => undef, ++ "BUILDFILE" => undef, ++ "CC" => undef, ++ "CFLAGS" => undef, ++ "CPP" => undef, ++ "CPPDEFINES" => undef, ++ "CPPFLAGS" => undef, ++ "CPPINCLUDES" => undef, ++ "CROSS_COMPILE" => undef, ++ "CXX" => undef, ++ "CXXFLAGS" => undef, ++ "HASHBANGPERL" => undef, ++ "LD" => undef, ++ "LDFLAGS" => undef, ++ "LDLIBS" => undef, ++ "MT" => undef, ++ "MTFLAGS" => undef, ++ "OPENSSL_LOCAL_CONFIG_DIR" => undef, ++ "PERL" => undef, ++ "RANLIB" => undef, ++ "RC" => undef, ++ "RCFLAGS" => undef, ++ "RM" => undef, ++ "WINDRES" => undef, ++ "__CNF_CFLAGS" => undef, ++ "__CNF_CPPDEFINES" => undef, ++ "__CNF_CPPFLAGS" => undef, ++ "__CNF_CPPINCLUDES" => undef, ++ "__CNF_CXXFLAGS" => undef, ++ "__CNF_LDFLAGS" => undef, ++ "__CNF_LDLIBS" => undef ++ }, ++ "prefix" => "", ++ "prerelease" => "", ++ "processor" => "", ++ "rc4_int" => "unsigned char", ++ "release_date" => "5 Jul 2022", ++ "shlib_version" => "81.3", ++ "sourcedir" => ".", ++ "target" => "linux-sw_64", ++ "version" => "3.0.5" ++); ++our %target = ( ++ "AR" => "ar", ++ "ARFLAGS" => "qc", ++ "CC" => "gcc", ++ "CFLAGS" => "-Wall -O3", ++ "CXX" => "g++", ++ "CXXFLAGS" => "-Wall -O3", ++ "HASHBANGPERL" => "/usr/bin/env perl", ++ "RANLIB" => "ranlib", ++ "RC" => "windres", ++ "_conf_fname_int" => [ ++ "Configurations/00-base-templates.conf", ++ "Configurations/00-base-templates.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/10-main.conf", ++ "Configurations/shared-info.pl" ++ ], ++ "asm_arch" => "sw_64", ++ "bn_ops" => "SIXTY_FOUR_BIT_LONG RC4_CHAR", ++ "build_file" => "Makefile", ++ "build_scheme" => [ ++ "unified", ++ "unix" ++ ], ++ "cflags" => "-pthread", ++ "cppflags" => "", ++ "cxxflags" => "-std=c++11 -pthread", ++ "defines" => [ ++ "OPENSSL_BUILDING_OPENSSL" ++ ], ++ "disable" => [], ++ "dso_ldflags" => "-Wl,-z,defs", ++ "dso_scheme" => "dlfcn", ++ "enable" => [ ++ "afalgeng" ++ ], ++ "ex_libs" => "-ldl -pthread", ++ "includes" => [], ++ "lflags" => "", ++ "lib_cflags" => "", ++ "lib_cppflags" => "-DOPENSSL_USE_NODELETE", ++ "lib_defines" => [], ++ "module_cflags" => "-fPIC", ++ "module_cxxflags" => undef, ++ "module_ldflags" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "multilib" => "64", ++ "perl_platform" => "Unix", ++ "perlasm_scheme" => "64", ++ "shared_cflag" => "-fPIC", ++ "shared_defflag" => "-Wl,--version-script=", ++ "shared_defines" => [], ++ "shared_ldflag" => "-Wl,-znodelete -shared -Wl,-Bsymbolic", ++ "shared_rcflag" => "", ++ "shared_sonameflag" => "-Wl,-soname=", ++ "shared_target" => "linux-shared", ++ "template" => "1", ++ "thread_defines" => [], ++ "thread_scheme" => "pthreads", ++ "unistd" => "" ++); ++our @disablables = ( ++ "acvp-tests", ++ "afalgeng", ++ "aria", ++ "asan", ++ "asm", ++ "async", ++ "autoalginit", ++ "autoerrinit", ++ "autoload-config", ++ "bf", ++ "blake2", ++ "buildtest-c++", ++ "bulk", ++ "cached-fetch", ++ "camellia", ++ "capieng", ++ "cast", ++ "chacha", ++ "cmac", ++ "cmp", ++ "cms", ++ "comp", ++ "crypto-mdebug", ++ "ct", ++ "deprecated", ++ "des", ++ "devcryptoeng", ++ "dgram", ++ "dh", ++ "dsa", ++ "dso", ++ "dtls", ++ "dynamic-engine", ++ "ec", ++ "ec2m", ++ "ec_nistp_64_gcc_128", ++ "ecdh", ++ "ecdsa", ++ "egd", ++ "engine", ++ "err", ++ "external-tests", ++ "filenames", ++ "fips", ++ "fips-securitychecks", ++ "fuzz-afl", ++ "fuzz-libfuzzer", ++ "gost", ++ "idea", ++ "ktls", ++ "legacy", ++ "loadereng", ++ "makedepend", ++ "md2", ++ "md4", ++ "mdc2", ++ "module", ++ "msan", ++ "multiblock", ++ "nextprotoneg", ++ "ocb", ++ "ocsp", ++ "padlockeng", ++ "pic", ++ "pinshared", ++ "poly1305", ++ "posix-io", ++ "psk", ++ "quic", ++ "rc2", ++ "rc4", ++ "rc5", ++ "rdrand", ++ "rfc3779", ++ "rmd160", ++ "scrypt", ++ "sctp", ++ "secure-memory", ++ "seed", ++ "shared", ++ "siphash", ++ "siv", ++ "sm2", ++ "sm3", ++ "sm4", ++ "sock", ++ "srp", ++ "srtp", ++ "sse2", ++ "ssl", ++ "ssl-trace", ++ "static-engine", ++ "stdio", ++ "tests", ++ "threads", ++ "tls", ++ "trace", ++ "ts", ++ "ubsan", ++ "ui-console", ++ "unit-test", ++ "uplink", ++ "weak-ssl-ciphers", ++ "whirlpool", ++ "zlib", ++ "zlib-dynamic", ++ "ssl3", ++ "ssl3-method", ++ "tls1", ++ "tls1-method", ++ "tls1_1", ++ "tls1_1-method", ++ "tls1_2", ++ "tls1_2-method", ++ "tls1_3", ++ "dtls1", ++ "dtls1-method", ++ "dtls1_2", ++ "dtls1_2-method" ++); ++our @disablables_int = ( ++ "crmf" ++); ++our %disabled = ( ++ "afalgeng" => "option", ++ "asan" => "default", ++ "asm" => "option", ++ "buildtest-c++" => "default", ++ "comp" => "option", ++ "crypto-mdebug" => "default", ++ "crypto-mdebug-backtrace" => "default", ++ "devcryptoeng" => "default", ++ "dynamic-engine" => "cascade", ++ "ec_nistp_64_gcc_128" => "default", ++ "egd" => "default", ++ "external-tests" => "default", ++ "fuzz-afl" => "default", ++ "fuzz-libfuzzer" => "default", ++ "ktls" => "default", ++ "loadereng" => "cascade", ++ "md2" => "default", ++ "msan" => "default", ++ "rc5" => "default", ++ "sctp" => "default", ++ "shared" => "option", ++ "ssl3" => "default", ++ "ssl3-method" => "default", ++ "trace" => "default", ++ "ubsan" => "default", ++ "unit-test" => "default", ++ "uplink" => "no uplink_arch", ++ "weak-ssl-ciphers" => "default", ++ "zlib" => "default", ++ "zlib-dynamic" => "default" ++); ++our %withargs = (); ++our %unified_info = ( ++ "attributes" => { ++ "depends" => { ++ "doc/man1/openssl-asn1parse.pod" => { ++ "doc/man1/openssl-asn1parse.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ca.pod" => { ++ "doc/man1/openssl-ca.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ciphers.pod" => { ++ "doc/man1/openssl-ciphers.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmds.pod" => { ++ "doc/man1/openssl-cmds.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cmp.pod" => { ++ "doc/man1/openssl-cmp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-cms.pod" => { ++ "doc/man1/openssl-cms.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl.pod" => { ++ "doc/man1/openssl-crl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-crl2pkcs7.pod" => { ++ "doc/man1/openssl-crl2pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dgst.pod" => { ++ "doc/man1/openssl-dgst.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dhparam.pod" => { ++ "doc/man1/openssl-dhparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsa.pod" => { ++ "doc/man1/openssl-dsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-dsaparam.pod" => { ++ "doc/man1/openssl-dsaparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ec.pod" => { ++ "doc/man1/openssl-ec.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ecparam.pod" => { ++ "doc/man1/openssl-ecparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-enc.pod" => { ++ "doc/man1/openssl-enc.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-engine.pod" => { ++ "doc/man1/openssl-engine.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-errstr.pod" => { ++ "doc/man1/openssl-errstr.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-fipsinstall.pod" => { ++ "doc/man1/openssl-fipsinstall.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-gendsa.pod" => { ++ "doc/man1/openssl-gendsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genpkey.pod" => { ++ "doc/man1/openssl-genpkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-genrsa.pod" => { ++ "doc/man1/openssl-genrsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-info.pod" => { ++ "doc/man1/openssl-info.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-kdf.pod" => { ++ "doc/man1/openssl-kdf.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-list.pod" => { ++ "doc/man1/openssl-list.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-mac.pod" => { ++ "doc/man1/openssl-mac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-nseq.pod" => { ++ "doc/man1/openssl-nseq.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ocsp.pod" => { ++ "doc/man1/openssl-ocsp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-passwd.pod" => { ++ "doc/man1/openssl-passwd.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs12.pod" => { ++ "doc/man1/openssl-pkcs12.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs7.pod" => { ++ "doc/man1/openssl-pkcs7.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkcs8.pod" => { ++ "doc/man1/openssl-pkcs8.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkey.pod" => { ++ "doc/man1/openssl-pkey.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyparam.pod" => { ++ "doc/man1/openssl-pkeyparam.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-pkeyutl.pod" => { ++ "doc/man1/openssl-pkeyutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-prime.pod" => { ++ "doc/man1/openssl-prime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rand.pod" => { ++ "doc/man1/openssl-rand.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rehash.pod" => { ++ "doc/man1/openssl-rehash.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-req.pod" => { ++ "doc/man1/openssl-req.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsa.pod" => { ++ "doc/man1/openssl-rsa.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-rsautl.pod" => { ++ "doc/man1/openssl-rsautl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_client.pod" => { ++ "doc/man1/openssl-s_client.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_server.pod" => { ++ "doc/man1/openssl-s_server.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-s_time.pod" => { ++ "doc/man1/openssl-s_time.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-sess_id.pod" => { ++ "doc/man1/openssl-sess_id.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-smime.pod" => { ++ "doc/man1/openssl-smime.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-speed.pod" => { ++ "doc/man1/openssl-speed.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-spkac.pod" => { ++ "doc/man1/openssl-spkac.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-srp.pod" => { ++ "doc/man1/openssl-srp.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-storeutl.pod" => { ++ "doc/man1/openssl-storeutl.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-ts.pod" => { ++ "doc/man1/openssl-ts.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-verify.pod" => { ++ "doc/man1/openssl-verify.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-version.pod" => { ++ "doc/man1/openssl-version.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man1/openssl-x509.pod" => { ++ "doc/man1/openssl-x509.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "doc/man7/openssl_user_macros.pod" => { ++ "doc/man7/openssl_user_macros.pod.in" => { ++ "pod" => "1" ++ } ++ }, ++ "providers/libcommon.a" => { ++ "libcrypto" => { ++ "weak" => "1" ++ } ++ } ++ }, ++ "generate" => { ++ "include/openssl/configuration.h" => { ++ "skip" => "1" ++ } ++ }, ++ "libraries" => { ++ "apps/libapps.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libcommon.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libdefault.a" => { ++ "noinst" => "1" ++ }, ++ "providers/libfips.a" => { ++ "noinst" => "1" ++ }, ++ "providers/liblegacy.a" => { ++ "noinst" => "1" ++ }, ++ "test/libtestutil.a" => { ++ "has_main" => "1", ++ "noinst" => "1" ++ } ++ }, ++ "modules" => { ++ "providers/fips" => { ++ "fips" => "1" ++ }, ++ "test/p_test" => { ++ "noinst" => "1" ++ } ++ }, ++ "programs" => { ++ "fuzz/asn1-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/asn1parse-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bignum-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/bndiv-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/client-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cmp-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/cms-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/conf-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/crl-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/ct-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/server-test" => { ++ "noinst" => "1" ++ }, ++ "fuzz/x509-test" => { ++ "noinst" => "1" ++ }, ++ "test/aborttest" => { ++ "noinst" => "1" ++ }, ++ "test/acvp_test" => { ++ "noinst" => "1" ++ }, ++ "test/aesgcmtest" => { ++ "noinst" => "1" ++ }, ++ "test/afalgtest" => { ++ "noinst" => "1" ++ }, ++ "test/algorithmid_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_decode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_dsa_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_encode_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_string_table_test" => { ++ "noinst" => "1" ++ }, ++ "test/asn1_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/asynciotest" => { ++ "noinst" => "1" ++ }, ++ "test/asynctest" => { ++ "noinst" => "1" ++ }, ++ "test/bad_dtls_test" => { ++ "noinst" => "1" ++ }, ++ "test/bftest" => { ++ "noinst" => "1" ++ }, ++ "test/bio_callback_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_core_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_enc_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_memleak_test" => { ++ "noinst" => "1" ++ }, ++ "test/bio_prefix_text" => { ++ "noinst" => "1" ++ }, ++ "test/bio_readbuffer_test" => { ++ "noinst" => "1" ++ }, ++ "test/bioprinttest" => { ++ "noinst" => "1" ++ }, ++ "test/bn_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/bntest" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_aes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_async" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_blowfish" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_bn" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_buffer" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_camellia" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cast" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cmp_util" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conf_api" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_conftypes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_dispatch" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_core_object" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_cryptoerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_decoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_des" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_dtls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_e_os2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ebcdic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ec" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdh" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ecdsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_encoder" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_engine" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_evp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_fips_names" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_hmac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_http" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_idea" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_kdf" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_macros" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_md5" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_mdc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_modes" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_obj_mac" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_objects" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ossl_typ" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_param_build" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_params" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_pem2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_prov_ssl" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_provider" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_quic" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rand" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rc4" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ripemd" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_rsa" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_seed" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_self_test" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sha" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_srtp" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ssl2" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_sslerr_legacy" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_stack" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_store" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_symhacks" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_tls1" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_ts" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_txt_db" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_types" => { ++ "noinst" => "1" ++ }, ++ "test/buildtest_c_whrlpool" => { ++ "noinst" => "1" ++ }, ++ "test/casttest" => { ++ "noinst" => "1" ++ }, ++ "test/chacha_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipher_overhead_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherbytes_test" => { ++ "noinst" => "1" ++ }, ++ "test/cipherlist_test" => { ++ "noinst" => "1" ++ }, ++ "test/ciphername_test" => { ++ "noinst" => "1" ++ }, ++ "test/clienthellotest" => { ++ "noinst" => "1" ++ }, ++ "test/cmactest" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_asn_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_client_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_hdr_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_msg_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_protect_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_server_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmp_vfy_test" => { ++ "noinst" => "1" ++ }, ++ "test/cmsapitest" => { ++ "noinst" => "1" ++ }, ++ "test/conf_include_test" => { ++ "noinst" => "1" ++ }, ++ "test/confdump" => { ++ "noinst" => "1" ++ }, ++ "test/constant_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/context_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/crltest" => { ++ "noinst" => "1" ++ }, ++ "test/ct_test" => { ++ "noinst" => "1" ++ }, ++ "test/ctype_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/curve448_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/d2i_test" => { ++ "noinst" => "1" ++ }, ++ "test/danetest" => { ++ "noinst" => "1" ++ }, ++ "test/defltfips_test" => { ++ "noinst" => "1" ++ }, ++ "test/destest" => { ++ "noinst" => "1" ++ }, ++ "test/dhtest" => { ++ "noinst" => "1" ++ }, ++ "test/drbgtest" => { ++ "noinst" => "1" ++ }, ++ "test/dsa_no_digest_size_test" => { ++ "noinst" => "1" ++ }, ++ "test/dsatest" => { ++ "noinst" => "1" ++ }, ++ "test/dtls_mtu_test" => { ++ "noinst" => "1" ++ }, ++ "test/dtlstest" => { ++ "noinst" => "1" ++ }, ++ "test/dtlsv1listentest" => { ++ "noinst" => "1" ++ }, ++ "test/ec_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ecdsatest" => { ++ "noinst" => "1" ++ }, ++ "test/ecstresstest" => { ++ "noinst" => "1" ++ }, ++ "test/ectest" => { ++ "noinst" => "1" ++ }, ++ "test/endecode_test" => { ++ "noinst" => "1" ++ }, ++ "test/endecoder_legacy_test" => { ++ "noinst" => "1" ++ }, ++ "test/enginetest" => { ++ "noinst" => "1" ++ }, ++ "test/errtest" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_extra_test2" => { ++ "noinst" => "1" ++ }, ++ "test/evp_fetch_prov_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_libctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_ctx_new_from_name" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_dparams_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_pkey_provided_test" => { ++ "noinst" => "1" ++ }, ++ "test/evp_test" => { ++ "noinst" => "1" ++ }, ++ "test/exdatatest" => { ++ "noinst" => "1" ++ }, ++ "test/exptest" => { ++ "noinst" => "1" ++ }, ++ "test/fatalerrtest" => { ++ "noinst" => "1" ++ }, ++ "test/ffc_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/gmdifftest" => { ++ "noinst" => "1" ++ }, ++ "test/hexstr_test" => { ++ "noinst" => "1" ++ }, ++ "test/hmactest" => { ++ "noinst" => "1" ++ }, ++ "test/http_test" => { ++ "noinst" => "1" ++ }, ++ "test/ideatest" => { ++ "noinst" => "1" ++ }, ++ "test/igetest" => { ++ "noinst" => "1" ++ }, ++ "test/keymgmt_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/lhash_test" => { ++ "noinst" => "1" ++ }, ++ "test/localetest" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/mdc2test" => { ++ "noinst" => "1" ++ }, ++ "test/memleaktest" => { ++ "noinst" => "1" ++ }, ++ "test/modes_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/namemap_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ocspapitest" => { ++ "noinst" => "1" ++ }, ++ "test/ossl_store_test" => { ++ "noinst" => "1" ++ }, ++ "test/packettest" => { ++ "noinst" => "1" ++ }, ++ "test/param_build_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_api_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_conversion_test" => { ++ "noinst" => "1" ++ }, ++ "test/params_test" => { ++ "noinst" => "1" ++ }, ++ "test/pbelutest" => { ++ "noinst" => "1" ++ }, ++ "test/pbetest" => { ++ "noinst" => "1" ++ }, ++ "test/pem_read_depr_test" => { ++ "noinst" => "1" ++ }, ++ "test/pemtest" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs12_format_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkcs7_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_kdf_test" => { ++ "noinst" => "1" ++ }, ++ "test/pkey_meth_test" => { ++ "noinst" => "1" ++ }, ++ "test/poly1305_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/property_test" => { ++ "noinst" => "1" ++ }, ++ "test/prov_config_test" => { ++ "noinst" => "1" ++ }, ++ "test/provfetchtest" => { ++ "noinst" => "1" ++ }, ++ "test/provider_fallback_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/provider_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_status_test" => { ++ "noinst" => "1" ++ }, ++ "test/rand_test" => { ++ "noinst" => "1" ++ }, ++ "test/rc2test" => { ++ "noinst" => "1" ++ }, ++ "test/rc4test" => { ++ "noinst" => "1" ++ }, ++ "test/rc5test" => { ++ "noinst" => "1" ++ }, ++ "test/rdrand_sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/recordlentest" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_complex" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_mp_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_sp800_56b_test" => { ++ "noinst" => "1" ++ }, ++ "test/rsa_test" => { ++ "noinst" => "1" ++ }, ++ "test/sanitytest" => { ++ "noinst" => "1" ++ }, ++ "test/secmemtest" => { ++ "noinst" => "1" ++ }, ++ "test/servername_test" => { ++ "noinst" => "1" ++ }, ++ "test/sha_test" => { ++ "noinst" => "1" ++ }, ++ "test/siphash_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm2_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm3_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sm4_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/sparse_array_test" => { ++ "noinst" => "1" ++ }, ++ "test/srptest" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_cert_table_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_old_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test" => { ++ "noinst" => "1" ++ }, ++ "test/ssl_test_ctx_test" => { ++ "noinst" => "1" ++ }, ++ "test/sslapitest" => { ++ "noinst" => "1" ++ }, ++ "test/sslbuffertest" => { ++ "noinst" => "1" ++ }, ++ "test/sslcorrupttest" => { ++ "noinst" => "1" ++ }, ++ "test/stack_test" => { ++ "noinst" => "1" ++ }, ++ "test/sysdefaulttest" => { ++ "noinst" => "1" ++ }, ++ "test/test_test" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest" => { ++ "noinst" => "1" ++ }, ++ "test/threadstest_fips" => { ++ "noinst" => "1" ++ }, ++ "test/time_offset_test" => { ++ "noinst" => "1" ++ }, ++ "test/tls13ccstest" => { ++ "noinst" => "1" ++ }, ++ "test/tls13encryptiontest" => { ++ "noinst" => "1" ++ }, ++ "test/uitest" => { ++ "noinst" => "1" ++ }, ++ "test/upcallstest" => { ++ "noinst" => "1" ++ }, ++ "test/user_property_test" => { ++ "noinst" => "1" ++ }, ++ "test/v3ext" => { ++ "noinst" => "1" ++ }, ++ "test/v3nametest" => { ++ "noinst" => "1" ++ }, ++ "test/verify_extra_test" => { ++ "noinst" => "1" ++ }, ++ "test/versions" => { ++ "noinst" => "1" ++ }, ++ "test/wpackettest" => { ++ "noinst" => "1" ++ }, ++ "test/x509_check_cert_pkey_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_dup_cert_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_internal_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509_time_test" => { ++ "noinst" => "1" ++ }, ++ "test/x509aux" => { ++ "noinst" => "1" ++ } ++ }, ++ "scripts" => { ++ "apps/CA.pl" => { ++ "misc" => "1" ++ }, ++ "apps/tsget.pl" => { ++ "linkname" => "tsget", ++ "misc" => "1" ++ }, ++ "util/shlib_wrap.sh" => { ++ "noinst" => "1" ++ }, ++ "util/wrap.pl" => { ++ "noinst" => "1" ++ } ++ }, ++ "sources" => { ++ "apps/openssl" => { ++ "apps/openssl-bin-progs.o" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/openssl-bin-progs.o" => { ++ "apps/progs.c" => { ++ "nocheck" => "1" ++ } ++ }, ++ "apps/progs.o" => {} ++ } ++ }, ++ "defines" => { ++ "providers/fips" => [ ++ "FIPS_MODULE" ++ ], ++ "providers/libfips.a" => [ ++ "FIPS_MODULE" ++ ], ++ "test/provider_internal_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ], ++ "test/provider_test" => [ ++ "PROVIDER_INIT_FUNCTION_NAME=p_test_init" ++ ] ++ }, ++ "depends" => { ++ "" => [ ++ "include/crypto/bn_conf.h", ++ "include/crypto/dso_conf.h", ++ "include/openssl/asn1.h", ++ "include/openssl/asn1t.h", ++ "include/openssl/bio.h", ++ "include/openssl/cmp.h", ++ "include/openssl/cms.h", ++ "include/openssl/conf.h", ++ "include/openssl/crmf.h", ++ "include/openssl/crypto.h", ++ "include/openssl/ct.h", ++ "include/openssl/err.h", ++ "include/openssl/ess.h", ++ "include/openssl/fipskey.h", ++ "include/openssl/lhash.h", ++ "include/openssl/ocsp.h", ++ "include/openssl/opensslv.h", ++ "include/openssl/pkcs12.h", ++ "include/openssl/pkcs7.h", ++ "include/openssl/safestack.h", ++ "include/openssl/srp.h", ++ "include/openssl/ssl.h", ++ "include/openssl/ui.h", ++ "include/openssl/x509.h", ++ "include/openssl/x509_vfy.h", ++ "include/openssl/x509v3.h", ++ "test/provider_internal_test.cnf" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl" => [ ++ "apps/libapps.a", ++ "libssl" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/progs.h" ++ ], ++ "apps/progs.c" => [ ++ "configdata.pm" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.c" ++ ], ++ "build_modules_nodep" => [ ++ "providers/fipsmodule.cnf" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aesni-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/aes/vpaes-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/perlasm/sparcv9_modes.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/perlasm/cbc.pl", ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/buildinf.h" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "crypto/x86cpuid.s" => [ ++ "crypto/perlasm/x86asm.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in", ++ "doc/perlvars.pm" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "fuzz/asn1-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bignum-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/bndiv-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/client-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/cmp-test" => [ ++ "libcrypto.a" ++ ], ++ "fuzz/cms-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/conf-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/crl-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/ct-test" => [ ++ "libcrypto" ++ ], ++ "fuzz/server-test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "fuzz/x509-test" => [ ++ "libcrypto" ++ ], ++ "libcrypto.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "libssl" => [ ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "configdata.pm", ++ "util/perl/OpenSSL/Ordinals.pm" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov/der_digests.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov/der_ec.h", ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov/der_digests.h", ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der/DIGESTS.asn1", ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der/DSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der/EC.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der/ECX.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der/NIST.asn1", ++ "providers/common/der/RSA.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der/SM2.asn1", ++ "providers/common/der/oids_to_c.pm" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der/oids_to_c.pm", ++ "providers/common/der/wrap.asn1" ++ ], ++ "providers/fips" => [ ++ "providers/libfips.a" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "providers/fips" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov/der_wrap.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov/der_sm2.h" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov/der_dsa.h" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov/der_ec.h" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov/der_ecx.h" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov/der_rsa.h" ++ ], ++ "providers/legacy" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ], ++ "providers/libcommon.a" => [ ++ "libcrypto" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/libcommon.a" ++ ], ++ "providers/liblegacy.a" => [ ++ "providers/libcommon.a" ++ ], ++ "test/aborttest" => [ ++ "libcrypto" ++ ], ++ "test/acvp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/aesgcmtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/afalgtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/algorithmid_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_decode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_encode_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_string_table_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asn1_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/asynciotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/asynctest" => [ ++ "libcrypto" ++ ], ++ "test/bad_dtls_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/bftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_callback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_core_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_enc_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_memleak_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_prefix_text" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bioprinttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/bn_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/bntest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/buildtest_c_aes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_async" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_bn" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cast" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_des" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ec" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_engine" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_evp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_http" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_idea" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_macros" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_md5" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_modes" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_objects" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_params" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_provider" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_quic" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rand" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_seed" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sha" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_stack" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_store" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_ts" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_types" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "libcrypto", ++ "libssl" ++ ], ++ "test/casttest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/chacha_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipher_overhead_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/cipherbytes_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cipherlist_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ciphername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/clienthellotest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/cmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_asn_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_client_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_ctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_hdr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_msg_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_protect_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_server_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmp_vfy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/cmsapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/conf_include_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/confdump" => [ ++ "libcrypto" ++ ], ++ "test/constant_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/context_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/crltest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ct_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ctype_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/curve448_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/d2i_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/danetest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/defltfips_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/destest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dhtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/drbgtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/dtls_mtu_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/dtlsv1listentest" => [ ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ec_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecdsatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ecstresstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ectest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecode_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/enginetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/errtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_extra_test2" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_libctx_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "libcrypto" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/evp_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exdatatest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/exptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/fatalerrtest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ffc_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/gmdifftest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/hexstr_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/hmactest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/http_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ideatest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/igetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/lhash_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/libtestutil.a" => [ ++ "libcrypto" ++ ], ++ "test/localetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/mdc2test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/memleaktest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/modes_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/namemap_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/ocspapitest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ossl_store_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/packettest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/param_build_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/params_api_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_conversion_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/params_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/pbelutest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pbetest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pem_read_depr_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs12_format_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkcs7_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/pkey_meth_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/poly1305_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/property_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/prov_config_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provfetchtest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_fallback_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/provider_status_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/provider_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rand_status_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rand_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/rc2test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc4test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rc5test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/recordlentest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_mp_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/rsa_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sanitytest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/secmemtest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/servername_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sha_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/siphash_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm2_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm3_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sm4_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/sparse_array_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/srptest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_old_test" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslapitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslbuffertest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/sslcorrupttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/stack_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/sysdefaulttest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/test_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/threadstest_fips" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/time_offset_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/tls13ccstest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/tls13encryptiontest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/uitest" => [ ++ "libcrypto", ++ "libssl", ++ "test/libtestutil.a" ++ ], ++ "test/upcallstest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/user_property_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3ext" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/v3nametest" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/verify_extra_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/versions" => [ ++ "libcrypto" ++ ], ++ "test/wpackettest" => [ ++ "libcrypto.a", ++ "libssl.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509_internal_test" => [ ++ "libcrypto.a", ++ "test/libtestutil.a" ++ ], ++ "test/x509_time_test" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "test/x509aux" => [ ++ "libcrypto", ++ "test/libtestutil.a" ++ ], ++ "util/wrap.pl" => [ ++ "configdata.pm" ++ ] ++ }, ++ "dirinfo" => { ++ "apps" => { ++ "products" => { ++ "bin" => [ ++ "apps/openssl" ++ ], ++ "script" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl" ++ ] ++ } ++ }, ++ "apps/lib" => { ++ "deps" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "apps/lib/uitest-bin-apps_ui.o", ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o", ++ "apps/lib/libtestutil-lib-opt.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "apps/openssl", ++ "test/cmp_client_test", ++ "test/uitest" ++ ], ++ "lib" => [ ++ "apps/libapps.a", ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "crypto" => { ++ "deps" => [ ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aes" => { ++ "deps" => [ ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_core.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_core.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/aria" => { ++ "deps" => [ ++ "crypto/aria/libcrypto-lib-aria.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/asn1" => { ++ "deps" => [ ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async" => { ++ "deps" => [ ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/async/arch" => { ++ "deps" => [ ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bf" => { ++ "deps" => [ ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bio" => { ++ "deps" => [ ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/bn" => { ++ "deps" => [ ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_asm.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_asm.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/bn/liblegacy-lib-bn_asm.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/buffer" => { ++ "deps" => [ ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/buffer/libfips-lib-buffer.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/camellia" => { ++ "deps" => [ ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cast" => { ++ "deps" => [ ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/chacha" => { ++ "deps" => [ ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cmac" => { ++ "deps" => [ ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmac/libfips-lib-cmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/cmp" => { ++ "deps" => [ ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/cms" => { ++ "deps" => [ ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/conf" => { ++ "deps" => [ ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/crmf" => { ++ "deps" => [ ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ct" => { ++ "deps" => [ ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/des" => { ++ "deps" => [ ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/dh" => { ++ "deps" => [ ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dsa" => { ++ "deps" => [ ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/dso" => { ++ "deps" => [ ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ec" => { ++ "deps" => [ ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448" => { ++ "deps" => [ ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_32" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ec/curve448/arch_64" => { ++ "deps" => [ ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/encode_decode" => { ++ "deps" => [ ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/engine" => { ++ "deps" => [ ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/err" => { ++ "deps" => [ ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ess" => { ++ "deps" => [ ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/evp" => { ++ "deps" => [ ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/ffc" => { ++ "deps" => [ ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/hmac" => { ++ "deps" => [ ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/hmac/libfips-lib-hmac.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/http" => { ++ "deps" => [ ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/idea" => { ++ "deps" => [ ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/kdf" => { ++ "deps" => [ ++ "crypto/kdf/libcrypto-lib-kdf_err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/lhash" => { ++ "deps" => [ ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/lhash/libfips-lib-lhash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/md4" => { ++ "deps" => [ ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/md5" => { ++ "deps" => [ ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "crypto/mdc2" => { ++ "deps" => [ ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/modes" => { ++ "deps" => [ ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/objects" => { ++ "deps" => [ ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ocsp" => { ++ "deps" => [ ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pem" => { ++ "deps" => [ ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs12" => { ++ "deps" => [ ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/pkcs7" => { ++ "deps" => [ ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/poly1305" => { ++ "deps" => [ ++ "crypto/poly1305/libcrypto-lib-poly1305.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/property" => { ++ "deps" => [ ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rand" => { ++ "deps" => [ ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rand/libfips-lib-rand_lib.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/rc2" => { ++ "deps" => [ ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rc4" => { ++ "deps" => [ ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ripemd" => { ++ "deps" => [ ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/rsa" => { ++ "deps" => [ ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/seed" => { ++ "deps" => [ ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sha" => { ++ "deps" => [ ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/siphash" => { ++ "deps" => [ ++ "crypto/siphash/libcrypto-lib-siphash.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm2" => { ++ "deps" => [ ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm3" => { ++ "deps" => [ ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/sm4" => { ++ "deps" => [ ++ "crypto/sm4/libcrypto-lib-sm4.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/srp" => { ++ "deps" => [ ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/stack" => { ++ "deps" => [ ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/stack/libfips-lib-stack.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "crypto/store" => { ++ "deps" => [ ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ts" => { ++ "deps" => [ ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/txt_db" => { ++ "deps" => [ ++ "crypto/txt_db/libcrypto-lib-txt_db.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/ui" => { ++ "deps" => [ ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/whrlpool" => { ++ "deps" => [ ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "crypto/x509" => { ++ "deps" => [ ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "engines" => { ++ "deps" => [ ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libcrypto" ++ ] ++ } ++ }, ++ "fuzz" => { ++ "products" => { ++ "bin" => [ ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test" ++ ] ++ } ++ }, ++ "providers" => { ++ "deps" => [ ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips", ++ "providers/legacy" ++ ], ++ "lib" => [ ++ "libcrypto", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/common" => { ++ "deps" => [ ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/common/der" => { ++ "deps" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/fips" => { ++ "deps" => [ ++ "providers/fips/fips-dso-fips_entry.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o" ++ ], ++ "products" => { ++ "dso" => [ ++ "providers/fips" ++ ], ++ "lib" => [ ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/asymciphers" => { ++ "deps" => [ ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/ciphers" => { ++ "deps" => [ ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/digests" => { ++ "deps" => [ ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/encode_decode" => { ++ "deps" => [ ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/exchange" => { ++ "deps" => [ ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/kdfs" => { ++ "deps" => [ ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a" ++ ] ++ } ++ }, ++ "providers/implementations/kem" => { ++ "deps" => [ ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/keymgmt" => { ++ "deps" => [ ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/macs" => { ++ "deps" => [ ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands" => { ++ "deps" => [ ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/rands/seeding" => { ++ "deps" => [ ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "providers/implementations/signature" => { ++ "deps" => [ ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "providers/implementations/storemgmt" => { ++ "deps" => [ ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "providers/libdefault.a" ++ ] ++ } ++ }, ++ "ssl" => { ++ "deps" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/libdefault-lib-s3_cbc.o", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libdefault.a", ++ "providers/libfips.a" ++ ] ++ } ++ }, ++ "ssl/record" => { ++ "deps" => [ ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl", ++ "providers/libcommon.a" ++ ] ++ } ++ }, ++ "ssl/statem" => { ++ "deps" => [ ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "libssl" ++ ] ++ } ++ }, ++ "test/helpers" => { ++ "deps" => [ ++ "test/helpers/asynciotest-bin-ssltestlib.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o", ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" ++ ], ++ "products" => { ++ "bin" => [ ++ "test/asynciotest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/endecode_test", ++ "test/fatalerrtest", ++ "test/pkcs12_format_test", ++ "test/recordlentest", ++ "test/servername_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/tls13ccstest" ++ ] ++ } ++ }, ++ "test/testutil" => { ++ "deps" => [ ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "products" => { ++ "lib" => [ ++ "test/libtestutil.a" ++ ] ++ } ++ }, ++ "tools" => { ++ "products" => { ++ "script" => [ ++ "tools/c_rehash" ++ ] ++ } ++ }, ++ "util" => { ++ "products" => { ++ "script" => [ ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ] ++ } ++ } ++ }, ++ "generate" => { ++ "apps/progs.c" => [ ++ "apps/progs.pl", ++ "\"-C\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "apps/progs.h" => [ ++ "apps/progs.pl", ++ "\"-H\"", ++ "\$(APPS_OPENSSL)" ++ ], ++ "crypto/aes/aes-586.S" => [ ++ "crypto/aes/asm/aes-586.pl" ++ ], ++ "crypto/aes/aes-armv4.S" => [ ++ "crypto/aes/asm/aes-armv4.pl" ++ ], ++ "crypto/aes/aes-c64xplus.S" => [ ++ "crypto/aes/asm/aes-c64xplus.pl" ++ ], ++ "crypto/aes/aes-ia64.s" => [ ++ "crypto/aes/asm/aes-ia64.S" ++ ], ++ "crypto/aes/aes-sw_64.S" => [ ++ "crypto/aes/asm/aes-sw_64.pl" ++ ], ++ "crypto/aes/aes-parisc.s" => [ ++ "crypto/aes/asm/aes-parisc.pl" ++ ], ++ "crypto/aes/aes-ppc.s" => [ ++ "crypto/aes/asm/aes-ppc.pl" ++ ], ++ "crypto/aes/aes-s390x.S" => [ ++ "crypto/aes/asm/aes-s390x.pl" ++ ], ++ "crypto/aes/aes-sparcv9.S" => [ ++ "crypto/aes/asm/aes-sparcv9.pl" ++ ], ++ "crypto/aes/aes-x86_64.s" => [ ++ "crypto/aes/asm/aes-x86_64.pl" ++ ], ++ "crypto/aes/aesfx-sparcv9.S" => [ ++ "crypto/aes/asm/aesfx-sparcv9.pl" ++ ], ++ "crypto/aes/aesni-mb-x86_64.s" => [ ++ "crypto/aes/asm/aesni-mb-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha1-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha1-x86_64.pl" ++ ], ++ "crypto/aes/aesni-sha256-x86_64.s" => [ ++ "crypto/aes/asm/aesni-sha256-x86_64.pl" ++ ], ++ "crypto/aes/aesni-x86.S" => [ ++ "crypto/aes/asm/aesni-x86.pl" ++ ], ++ "crypto/aes/aesni-x86_64.s" => [ ++ "crypto/aes/asm/aesni-x86_64.pl" ++ ], ++ "crypto/aes/aesp8-ppc.s" => [ ++ "crypto/aes/asm/aesp8-ppc.pl" ++ ], ++ "crypto/aes/aest4-sparcv9.S" => [ ++ "crypto/aes/asm/aest4-sparcv9.pl" ++ ], ++ "crypto/aes/aesv8-armx.S" => [ ++ "crypto/aes/asm/aesv8-armx.pl" ++ ], ++ "crypto/aes/bsaes-armv7.S" => [ ++ "crypto/aes/asm/bsaes-armv7.pl" ++ ], ++ "crypto/aes/bsaes-x86_64.s" => [ ++ "crypto/aes/asm/bsaes-x86_64.pl" ++ ], ++ "crypto/aes/vpaes-armv8.S" => [ ++ "crypto/aes/asm/vpaes-armv8.pl" ++ ], ++ "crypto/aes/vpaes-ppc.s" => [ ++ "crypto/aes/asm/vpaes-ppc.pl" ++ ], ++ "crypto/aes/vpaes-x86.S" => [ ++ "crypto/aes/asm/vpaes-x86.pl" ++ ], ++ "crypto/aes/vpaes-x86_64.s" => [ ++ "crypto/aes/asm/vpaes-x86_64.pl" ++ ], ++ "crypto/alphacpuid.s" => [ ++ "crypto/alphacpuid.pl" ++ ], ++ "crypto/arm64cpuid.S" => [ ++ "crypto/arm64cpuid.pl" ++ ], ++ "crypto/armv4cpuid.S" => [ ++ "crypto/armv4cpuid.pl" ++ ], ++ "crypto/bf/bf-586.S" => [ ++ "crypto/bf/asm/bf-586.pl" ++ ], ++ "crypto/bn/alpha-mont.S" => [ ++ "crypto/bn/asm/alpha-mont.pl" ++ ], ++ "crypto/bn/armv4-gf2m.S" => [ ++ "crypto/bn/asm/armv4-gf2m.pl" ++ ], ++ "crypto/bn/armv4-mont.S" => [ ++ "crypto/bn/asm/armv4-mont.pl" ++ ], ++ "crypto/bn/armv8-mont.S" => [ ++ "crypto/bn/asm/armv8-mont.pl" ++ ], ++ "crypto/bn/bn-586.S" => [ ++ "crypto/bn/asm/bn-586.pl" ++ ], ++ "crypto/bn/bn-ia64.s" => [ ++ "crypto/bn/asm/ia64.S" ++ ], ++ "crypto/bn/bn-sw_64.S" => [ ++ "crypto/bn/asm/sw_64.pl" ++ ], ++ "crypto/bn/bn-ppc.s" => [ ++ "crypto/bn/asm/ppc.pl" ++ ], ++ "crypto/bn/co-586.S" => [ ++ "crypto/bn/asm/co-586.pl" ++ ], ++ "crypto/bn/ia64-mont.s" => [ ++ "crypto/bn/asm/ia64-mont.pl" ++ ], ++ "crypto/bn/sw_64-mont.S" => [ ++ "crypto/bn/asm/sw_64-mont.pl" ++ ], ++ "crypto/bn/parisc-mont.s" => [ ++ "crypto/bn/asm/parisc-mont.pl" ++ ], ++ "crypto/bn/ppc-mont.s" => [ ++ "crypto/bn/asm/ppc-mont.pl" ++ ], ++ "crypto/bn/ppc64-mont.s" => [ ++ "crypto/bn/asm/ppc64-mont.pl" ++ ], ++ "crypto/bn/rsaz-avx2.s" => [ ++ "crypto/bn/asm/rsaz-avx2.pl" ++ ], ++ "crypto/bn/rsaz-avx512.s" => [ ++ "crypto/bn/asm/rsaz-avx512.pl" ++ ], ++ "crypto/bn/rsaz-x86_64.s" => [ ++ "crypto/bn/asm/rsaz-x86_64.pl" ++ ], ++ "crypto/bn/s390x-gf2m.s" => [ ++ "crypto/bn/asm/s390x-gf2m.pl" ++ ], ++ "crypto/bn/s390x-mont.S" => [ ++ "crypto/bn/asm/s390x-mont.pl" ++ ], ++ "crypto/bn/sparct4-mont.S" => [ ++ "crypto/bn/asm/sparct4-mont.pl" ++ ], ++ "crypto/bn/sparcv9-gf2m.S" => [ ++ "crypto/bn/asm/sparcv9-gf2m.pl" ++ ], ++ "crypto/bn/sparcv9-mont.S" => [ ++ "crypto/bn/asm/sparcv9-mont.pl" ++ ], ++ "crypto/bn/sparcv9a-mont.S" => [ ++ "crypto/bn/asm/sparcv9a-mont.pl" ++ ], ++ "crypto/bn/vis3-mont.S" => [ ++ "crypto/bn/asm/vis3-mont.pl" ++ ], ++ "crypto/bn/x86-gf2m.S" => [ ++ "crypto/bn/asm/x86-gf2m.pl" ++ ], ++ "crypto/bn/x86-mont.S" => [ ++ "crypto/bn/asm/x86-mont.pl" ++ ], ++ "crypto/bn/x86_64-gf2m.s" => [ ++ "crypto/bn/asm/x86_64-gf2m.pl" ++ ], ++ "crypto/bn/x86_64-mont.s" => [ ++ "crypto/bn/asm/x86_64-mont.pl" ++ ], ++ "crypto/bn/x86_64-mont5.s" => [ ++ "crypto/bn/asm/x86_64-mont5.pl" ++ ], ++ "crypto/buildinf.h" => [ ++ "util/mkbuildinf.pl", ++ "\"\$(CC)", ++ "\$(LIB_CFLAGS)", ++ "\$(CPPFLAGS_Q)\"", ++ "\"\$(PLATFORM)\"" ++ ], ++ "crypto/camellia/cmll-x86.S" => [ ++ "crypto/camellia/asm/cmll-x86.pl" ++ ], ++ "crypto/camellia/cmll-x86_64.s" => [ ++ "crypto/camellia/asm/cmll-x86_64.pl" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.S" => [ ++ "crypto/camellia/asm/cmllt4-sparcv9.pl" ++ ], ++ "crypto/cast/cast-586.S" => [ ++ "crypto/cast/asm/cast-586.pl" ++ ], ++ "crypto/chacha/chacha-armv4.S" => [ ++ "crypto/chacha/asm/chacha-armv4.pl" ++ ], ++ "crypto/chacha/chacha-armv8.S" => [ ++ "crypto/chacha/asm/chacha-armv8.pl" ++ ], ++ "crypto/chacha/chacha-c64xplus.S" => [ ++ "crypto/chacha/asm/chacha-c64xplus.pl" ++ ], ++ "crypto/chacha/chacha-ia64.S" => [ ++ "crypto/chacha/asm/chacha-ia64.pl" ++ ], ++ "crypto/chacha/chacha-ia64.s" => [ ++ "crypto/chacha/chacha-ia64.S" ++ ], ++ "crypto/chacha/chacha-ppc.s" => [ ++ "crypto/chacha/asm/chacha-ppc.pl" ++ ], ++ "crypto/chacha/chacha-s390x.S" => [ ++ "crypto/chacha/asm/chacha-s390x.pl" ++ ], ++ "crypto/chacha/chacha-x86.S" => [ ++ "crypto/chacha/asm/chacha-x86.pl" ++ ], ++ "crypto/chacha/chacha-x86_64.s" => [ ++ "crypto/chacha/asm/chacha-x86_64.pl" ++ ], ++ "crypto/des/crypt586.S" => [ ++ "crypto/des/asm/crypt586.pl" ++ ], ++ "crypto/des/des-586.S" => [ ++ "crypto/des/asm/des-586.pl" ++ ], ++ "crypto/des/des_enc-sparc.S" => [ ++ "crypto/des/asm/des_enc.m4" ++ ], ++ "crypto/des/dest4-sparcv9.S" => [ ++ "crypto/des/asm/dest4-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistp521-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistp521-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv4.pl" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.S" => [ ++ "crypto/ec/asm/ecp_nistz256-armv8.pl" ++ ], ++ "crypto/ec/ecp_nistz256-avx2.s" => [ ++ "crypto/ec/asm/ecp_nistz256-avx2.pl" ++ ], ++ "crypto/ec/ecp_nistz256-ppc64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-ppc64.pl" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.S" => [ ++ "crypto/ec/asm/ecp_nistz256-sparcv9.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86.S" => [ ++ "crypto/ec/asm/ecp_nistz256-x86.pl" ++ ], ++ "crypto/ec/ecp_nistz256-x86_64.s" => [ ++ "crypto/ec/asm/ecp_nistz256-x86_64.pl" ++ ], ++ "crypto/ec/x25519-ppc64.s" => [ ++ "crypto/ec/asm/x25519-ppc64.pl" ++ ], ++ "crypto/ec/x25519-x86_64.s" => [ ++ "crypto/ec/asm/x25519-x86_64.pl" ++ ], ++ "crypto/ia64cpuid.s" => [ ++ "crypto/ia64cpuid.S" ++ ], ++ "crypto/md5/md5-586.S" => [ ++ "crypto/md5/asm/md5-586.pl" ++ ], ++ "crypto/md5/md5-sparcv9.S" => [ ++ "crypto/md5/asm/md5-sparcv9.pl" ++ ], ++ "crypto/md5/md5-x86_64.s" => [ ++ "crypto/md5/asm/md5-x86_64.pl" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.S" => [ ++ "crypto/modes/asm/aes-gcm-armv8_64.pl" ++ ], ++ "crypto/modes/aesni-gcm-x86_64.s" => [ ++ "crypto/modes/asm/aesni-gcm-x86_64.pl" ++ ], ++ "crypto/modes/ghash-alpha.S" => [ ++ "crypto/modes/asm/ghash-alpha.pl" ++ ], ++ "crypto/modes/ghash-armv4.S" => [ ++ "crypto/modes/asm/ghash-armv4.pl" ++ ], ++ "crypto/modes/ghash-c64xplus.S" => [ ++ "crypto/modes/asm/ghash-c64xplus.pl" ++ ], ++ "crypto/modes/ghash-ia64.s" => [ ++ "crypto/modes/asm/ghash-ia64.pl" ++ ], ++ "crypto/modes/ghash-parisc.s" => [ ++ "crypto/modes/asm/ghash-parisc.pl" ++ ], ++ "crypto/modes/ghash-s390x.S" => [ ++ "crypto/modes/asm/ghash-s390x.pl" ++ ], ++ "crypto/modes/ghash-sparcv9.S" => [ ++ "crypto/modes/asm/ghash-sparcv9.pl" ++ ], ++ "crypto/modes/ghash-x86.S" => [ ++ "crypto/modes/asm/ghash-x86.pl" ++ ], ++ "crypto/modes/ghash-x86_64.s" => [ ++ "crypto/modes/asm/ghash-x86_64.pl" ++ ], ++ "crypto/modes/ghashp8-ppc.s" => [ ++ "crypto/modes/asm/ghashp8-ppc.pl" ++ ], ++ "crypto/modes/ghashv8-armx.S" => [ ++ "crypto/modes/asm/ghashv8-armx.pl" ++ ], ++ "crypto/pariscid.s" => [ ++ "crypto/pariscid.pl" ++ ], ++ "crypto/poly1305/poly1305-armv4.S" => [ ++ "crypto/poly1305/asm/poly1305-armv4.pl" ++ ], ++ "crypto/poly1305/poly1305-armv8.S" => [ ++ "crypto/poly1305/asm/poly1305-armv8.pl" ++ ], ++ "crypto/poly1305/poly1305-c64xplus.S" => [ ++ "crypto/poly1305/asm/poly1305-c64xplus.pl" ++ ], ++ "crypto/poly1305/poly1305-ia64.s" => [ ++ "crypto/poly1305/asm/poly1305-ia64.S" ++ ], ++ "crypto/poly1305/poly1305-sw_64.S" => [ ++ "crypto/poly1305/asm/poly1305-sw_64.pl" ++ ], ++ "crypto/poly1305/poly1305-ppc.s" => [ ++ "crypto/poly1305/asm/poly1305-ppc.pl" ++ ], ++ "crypto/poly1305/poly1305-ppcfp.s" => [ ++ "crypto/poly1305/asm/poly1305-ppcfp.pl" ++ ], ++ "crypto/poly1305/poly1305-s390x.S" => [ ++ "crypto/poly1305/asm/poly1305-s390x.pl" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.S" => [ ++ "crypto/poly1305/asm/poly1305-sparcv9.pl" ++ ], ++ "crypto/poly1305/poly1305-x86.S" => [ ++ "crypto/poly1305/asm/poly1305-x86.pl" ++ ], ++ "crypto/poly1305/poly1305-x86_64.s" => [ ++ "crypto/poly1305/asm/poly1305-x86_64.pl" ++ ], ++ "crypto/ppccpuid.s" => [ ++ "crypto/ppccpuid.pl" ++ ], ++ "crypto/rc4/rc4-586.S" => [ ++ "crypto/rc4/asm/rc4-586.pl" ++ ], ++ "crypto/rc4/rc4-c64xplus.s" => [ ++ "crypto/rc4/asm/rc4-c64xplus.pl" ++ ], ++ "crypto/rc4/rc4-md5-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-md5-x86_64.pl" ++ ], ++ "crypto/rc4/rc4-parisc.s" => [ ++ "crypto/rc4/asm/rc4-parisc.pl" ++ ], ++ "crypto/rc4/rc4-s390x.s" => [ ++ "crypto/rc4/asm/rc4-s390x.pl" ++ ], ++ "crypto/rc4/rc4-x86_64.s" => [ ++ "crypto/rc4/asm/rc4-x86_64.pl" ++ ], ++ "crypto/ripemd/rmd-586.S" => [ ++ "crypto/ripemd/asm/rmd-586.pl" ++ ], ++ "crypto/s390xcpuid.S" => [ ++ "crypto/s390xcpuid.pl" ++ ], ++ "crypto/sha/keccak1600-armv4.S" => [ ++ "crypto/sha/asm/keccak1600-armv4.pl" ++ ], ++ "crypto/sha/keccak1600-armv8.S" => [ ++ "crypto/sha/asm/keccak1600-armv8.pl" ++ ], ++ "crypto/sha/keccak1600-avx2.S" => [ ++ "crypto/sha/asm/keccak1600-avx2.pl" ++ ], ++ "crypto/sha/keccak1600-avx512.S" => [ ++ "crypto/sha/asm/keccak1600-avx512.pl" ++ ], ++ "crypto/sha/keccak1600-avx512vl.S" => [ ++ "crypto/sha/asm/keccak1600-avx512vl.pl" ++ ], ++ "crypto/sha/keccak1600-c64x.S" => [ ++ "crypto/sha/asm/keccak1600-c64x.pl" ++ ], ++ "crypto/sha/keccak1600-mmx.S" => [ ++ "crypto/sha/asm/keccak1600-mmx.pl" ++ ], ++ "crypto/sha/keccak1600-ppc64.s" => [ ++ "crypto/sha/asm/keccak1600-ppc64.pl" ++ ], ++ "crypto/sha/keccak1600-s390x.S" => [ ++ "crypto/sha/asm/keccak1600-s390x.pl" ++ ], ++ "crypto/sha/keccak1600-x86_64.s" => [ ++ "crypto/sha/asm/keccak1600-x86_64.pl" ++ ], ++ "crypto/sha/keccak1600p8-ppc.S" => [ ++ "crypto/sha/asm/keccak1600p8-ppc.pl" ++ ], ++ "crypto/sha/sha1-586.S" => [ ++ "crypto/sha/asm/sha1-586.pl" ++ ], ++ "crypto/sha/sha1-alpha.S" => [ ++ "crypto/sha/asm/sha1-alpha.pl" ++ ], ++ "crypto/sha/sha1-armv4-large.S" => [ ++ "crypto/sha/asm/sha1-armv4-large.pl" ++ ], ++ "crypto/sha/sha1-armv8.S" => [ ++ "crypto/sha/asm/sha1-armv8.pl" ++ ], ++ "crypto/sha/sha1-c64xplus.S" => [ ++ "crypto/sha/asm/sha1-c64xplus.pl" ++ ], ++ "crypto/sha/sha1-ia64.s" => [ ++ "crypto/sha/asm/sha1-ia64.pl" ++ ], ++ "crypto/sha/sha1-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha1-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha1-sw_64.S" => [ ++ "crypto/sha/asm/sha1-sw_64.pl" ++ ], ++ "crypto/sha/sha1-parisc.s" => [ ++ "crypto/sha/asm/sha1-parisc.pl" ++ ], ++ "crypto/sha/sha1-ppc.s" => [ ++ "crypto/sha/asm/sha1-ppc.pl" ++ ], ++ "crypto/sha/sha1-s390x.S" => [ ++ "crypto/sha/asm/sha1-s390x.pl" ++ ], ++ "crypto/sha/sha1-sparcv9.S" => [ ++ "crypto/sha/asm/sha1-sparcv9.pl" ++ ], ++ "crypto/sha/sha1-sparcv9a.S" => [ ++ "crypto/sha/asm/sha1-sparcv9a.pl" ++ ], ++ "crypto/sha/sha1-thumb.S" => [ ++ "crypto/sha/asm/sha1-thumb.pl" ++ ], ++ "crypto/sha/sha1-x86_64.s" => [ ++ "crypto/sha/asm/sha1-x86_64.pl" ++ ], ++ "crypto/sha/sha256-586.S" => [ ++ "crypto/sha/asm/sha256-586.pl" ++ ], ++ "crypto/sha/sha256-armv4.S" => [ ++ "crypto/sha/asm/sha256-armv4.pl" ++ ], ++ "crypto/sha/sha256-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha256-c64xplus.S" => [ ++ "crypto/sha/asm/sha256-c64xplus.pl" ++ ], ++ "crypto/sha/sha256-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha256-mb-x86_64.s" => [ ++ "crypto/sha/asm/sha256-mb-x86_64.pl" ++ ], ++ "crypto/sha/sha256-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha256-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha256-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha256-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha256-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha256-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha256p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/sha/sha512-586.S" => [ ++ "crypto/sha/asm/sha512-586.pl" ++ ], ++ "crypto/sha/sha512-armv4.S" => [ ++ "crypto/sha/asm/sha512-armv4.pl" ++ ], ++ "crypto/sha/sha512-armv8.S" => [ ++ "crypto/sha/asm/sha512-armv8.pl" ++ ], ++ "crypto/sha/sha512-c64xplus.S" => [ ++ "crypto/sha/asm/sha512-c64xplus.pl" ++ ], ++ "crypto/sha/sha512-ia64.s" => [ ++ "crypto/sha/asm/sha512-ia64.pl" ++ ], ++ "crypto/sha/sha512-sw_64.S" => [ ++ "crypto/sha/asm/sha512-sw_64.pl" ++ ], ++ "crypto/sha/sha512-parisc.s" => [ ++ "crypto/sha/asm/sha512-parisc.pl" ++ ], ++ "crypto/sha/sha512-ppc.s" => [ ++ "crypto/sha/asm/sha512-ppc.pl" ++ ], ++ "crypto/sha/sha512-s390x.S" => [ ++ "crypto/sha/asm/sha512-s390x.pl" ++ ], ++ "crypto/sha/sha512-sparcv9.S" => [ ++ "crypto/sha/asm/sha512-sparcv9.pl" ++ ], ++ "crypto/sha/sha512-x86_64.s" => [ ++ "crypto/sha/asm/sha512-x86_64.pl" ++ ], ++ "crypto/sha/sha512p8-ppc.s" => [ ++ "crypto/sha/asm/sha512p8-ppc.pl" ++ ], ++ "crypto/uplink-ia64.s" => [ ++ "ms/uplink-ia64.pl" ++ ], ++ "crypto/uplink-x86.S" => [ ++ "ms/uplink-x86.pl" ++ ], ++ "crypto/uplink-x86_64.s" => [ ++ "ms/uplink-x86_64.pl" ++ ], ++ "crypto/whrlpool/wp-mmx.S" => [ ++ "crypto/whrlpool/asm/wp-mmx.pl" ++ ], ++ "crypto/whrlpool/wp-x86_64.s" => [ ++ "crypto/whrlpool/asm/wp-x86_64.pl" ++ ], ++ "crypto/x86_64cpuid.s" => [ ++ "crypto/x86_64cpuid.pl" ++ ], ++ "crypto/x86cpuid.S" => [ ++ "crypto/x86cpuid.pl" ++ ], ++ "doc/html/man1/CA.pl.html" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/html/man1/openssl-asn1parse.html" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/html/man1/openssl-ca.html" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/html/man1/openssl-ciphers.html" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/html/man1/openssl-cmds.html" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/html/man1/openssl-cmp.html" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/html/man1/openssl-cms.html" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/html/man1/openssl-crl.html" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/html/man1/openssl-crl2pkcs7.html" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-dgst.html" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/html/man1/openssl-dhparam.html" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/html/man1/openssl-dsa.html" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/html/man1/openssl-dsaparam.html" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/html/man1/openssl-ec.html" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/html/man1/openssl-ecparam.html" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/html/man1/openssl-enc.html" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/html/man1/openssl-engine.html" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/html/man1/openssl-errstr.html" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/html/man1/openssl-fipsinstall.html" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/html/man1/openssl-format-options.html" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/html/man1/openssl-gendsa.html" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/html/man1/openssl-genpkey.html" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/html/man1/openssl-genrsa.html" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/html/man1/openssl-info.html" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/html/man1/openssl-kdf.html" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/html/man1/openssl-list.html" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/html/man1/openssl-mac.html" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/html/man1/openssl-namedisplay-options.html" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/html/man1/openssl-nseq.html" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/html/man1/openssl-ocsp.html" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/html/man1/openssl-passphrase-options.html" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/html/man1/openssl-passwd.html" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/html/man1/openssl-pkcs12.html" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/html/man1/openssl-pkcs7.html" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/html/man1/openssl-pkcs8.html" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/html/man1/openssl-pkey.html" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/html/man1/openssl-pkeyparam.html" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/html/man1/openssl-pkeyutl.html" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/html/man1/openssl-prime.html" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/html/man1/openssl-rand.html" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/html/man1/openssl-rehash.html" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/html/man1/openssl-req.html" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/html/man1/openssl-rsa.html" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/html/man1/openssl-rsautl.html" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/html/man1/openssl-s_client.html" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/html/man1/openssl-s_server.html" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/html/man1/openssl-s_time.html" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/html/man1/openssl-sess_id.html" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/html/man1/openssl-smime.html" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/html/man1/openssl-speed.html" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/html/man1/openssl-spkac.html" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/html/man1/openssl-srp.html" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/html/man1/openssl-storeutl.html" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/html/man1/openssl-ts.html" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/html/man1/openssl-verification-options.html" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/html/man1/openssl-verify.html" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/html/man1/openssl-version.html" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/html/man1/openssl-x509.html" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/html/man1/openssl.html" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/html/man1/tsget.html" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/html/man3/ADMISSIONS.html" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_get_int64.html" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/html/man3/ASN1_INTEGER_new.html" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/html/man3/ASN1_ITEM_lookup.html" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/html/man3/ASN1_OBJECT_new.html" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_TABLE_add.html" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_length.html" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_new.html" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/html/man3/ASN1_STRING_print_ex.html" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/html/man3/ASN1_TIME_set.html" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/html/man3/ASN1_TYPE_get.html" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/html/man3/ASN1_aux_cb.html" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/html/man3/ASN1_generate_nconf.html" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/html/man3/ASN1_item_d2i_bio.html" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/html/man3/ASN1_item_new.html" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/html/man3/ASN1_item_sign.html" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/html/man3/ASYNC_start_job.html" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/html/man3/BF_encrypt.html" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/html/man3/BIO_ADDR.html" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/html/man3/BIO_ADDRINFO.html" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/html/man3/BIO_connect.html" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/html/man3/BIO_ctrl.html" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/html/man3/BIO_f_base64.html" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/html/man3/BIO_f_buffer.html" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/html/man3/BIO_f_cipher.html" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/html/man3/BIO_f_md.html" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/html/man3/BIO_f_null.html" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/html/man3/BIO_f_prefix.html" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/html/man3/BIO_f_readbuffer.html" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/html/man3/BIO_f_ssl.html" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/html/man3/BIO_find_type.html" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/html/man3/BIO_get_data.html" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/html/man3/BIO_get_ex_new_index.html" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/BIO_meth_new.html" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/html/man3/BIO_new.html" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/html/man3/BIO_new_CMS.html" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/html/man3/BIO_parse_hostserv.html" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/html/man3/BIO_printf.html" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/html/man3/BIO_push.html" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/html/man3/BIO_read.html" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/html/man3/BIO_s_accept.html" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/html/man3/BIO_s_bio.html" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/html/man3/BIO_s_connect.html" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/html/man3/BIO_s_core.html" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/html/man3/BIO_s_fd.html" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/html/man3/BIO_s_file.html" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/html/man3/BIO_s_mem.html" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/html/man3/BIO_s_null.html" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/html/man3/BIO_s_socket.html" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/html/man3/BIO_set_callback.html" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/html/man3/BIO_should_retry.html" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/html/man3/BIO_socket_wait.html" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/html/man3/BN_BLINDING_new.html" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_new.html" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/html/man3/BN_CTX_start.html" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/html/man3/BN_add.html" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/html/man3/BN_add_word.html" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/html/man3/BN_bn2bin.html" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/html/man3/BN_cmp.html" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/html/man3/BN_copy.html" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/html/man3/BN_generate_prime.html" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/html/man3/BN_mod_exp_mont.html" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/html/man3/BN_mod_inverse.html" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_montgomery.html" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/html/man3/BN_mod_mul_reciprocal.html" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/html/man3/BN_new.html" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/html/man3/BN_num_bytes.html" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/html/man3/BN_rand.html" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/html/man3/BN_security_bits.html" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/html/man3/BN_set_bit.html" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/html/man3/BN_swap.html" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/html/man3/BN_zero.html" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/html/man3/BUF_MEM_new.html" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_decrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_EncryptedData_encrypt.html" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_EnvelopedData_create.html" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/html/man3/CMS_add0_cert.html" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_recipient_cert.html" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/html/man3/CMS_add1_signer.html" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/html/man3/CMS_compress.html" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/html/man3/CMS_data_create.html" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/html/man3/CMS_decrypt.html" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/html/man3/CMS_digest_create.html" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/html/man3/CMS_encrypt.html" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/html/man3/CMS_final.html" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/html/man3/CMS_get0_RecipientInfos.html" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_SignerInfos.html" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/html/man3/CMS_get0_type.html" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/html/man3/CMS_get1_ReceiptRequest.html" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/html/man3/CMS_sign.html" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/html/man3/CMS_sign_receipt.html" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/html/man3/CMS_uncompress.html" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/html/man3/CMS_verify.html" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/html/man3/CMS_verify_receipt.html" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/html/man3/CONF_modules_free.html" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/html/man3/CONF_modules_load_file.html" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/html/man3/CRYPTO_THREAD_run_once.html" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/html/man3/CRYPTO_get_ex_new_index.html" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/html/man3/CRYPTO_memcmp.html" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/html/man3/CTLOG_STORE_new.html" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/html/man3/CTLOG_new.html" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/html/man3/DEFINE_STACK_OF.html" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/html/man3/DES_random_key.html" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/html/man3/DH_generate_key.html" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/html/man3/DH_generate_parameters.html" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/html/man3/DH_get0_pqg.html" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/html/man3/DH_get_1024_160.html" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/html/man3/DH_meth_new.html" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/html/man3/DH_new.html" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/html/man3/DH_new_by_nid.html" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/html/man3/DH_set_method.html" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/html/man3/DH_size.html" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/html/man3/DSA_SIG_new.html" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/html/man3/DSA_do_sign.html" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/html/man3/DSA_dup_DH.html" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/html/man3/DSA_generate_key.html" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/html/man3/DSA_generate_parameters.html" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/html/man3/DSA_get0_pqg.html" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/html/man3/DSA_meth_new.html" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/html/man3/DSA_new.html" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/html/man3/DSA_set_method.html" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/html/man3/DSA_sign.html" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/html/man3/DSA_size.html" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/html/man3/DTLS_get_data_mtu.html" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/html/man3/DTLS_set_timer_cb.html" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/html/man3/DTLSv1_listen.html" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/html/man3/ECDSA_SIG_new.html" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/html/man3/ECPKParameters_print.html" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/html/man3/EC_GFp_simple_method.html" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/html/man3/EC_GROUP_copy.html" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/html/man3/EC_GROUP_new.html" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/html/man3/EC_KEY_get_enc_flags.html" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/html/man3/EC_KEY_new.html" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/html/man3/EC_POINT_add.html" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/html/man3/EC_POINT_new.html" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/html/man3/ENGINE_add.html" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/html/man3/ERR_GET_LIB.html" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/html/man3/ERR_clear_error.html" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/html/man3/ERR_error_string.html" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/html/man3/ERR_get_error.html" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/html/man3/ERR_load_crypto_strings.html" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/html/man3/ERR_load_strings.html" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/html/man3/ERR_new.html" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/html/man3/ERR_print_errors.html" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/html/man3/ERR_put_error.html" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/html/man3/ERR_remove_state.html" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/html/man3/ERR_set_mark.html" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/html/man3/EVP_BytesToKey.html" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/html/man3/EVP_CIPHER_meth_new.html" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_DigestInit.html" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestSignInit.html" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/html/man3/EVP_DigestVerifyInit.html" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_EncodeInit.html" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/html/man3/EVP_EncryptInit.html" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/html/man3/EVP_KDF.html" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/html/man3/EVP_KEM_free.html" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYEXCH_free.html" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/html/man3/EVP_KEYMGMT.html" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/html/man3/EVP_MAC.html" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/html/man3/EVP_MD_meth_new.html" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_OpenInit.html" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/html/man3/EVP_PBE_CipherInit.html" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/html/man3/EVP_PKEY2PKCS8.html" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_new.html" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_check.html" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_copy_parameters.html" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decapsulate.html" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_decrypt.html" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_derive.html" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encapsulate.html" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_encrypt.html" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_fromdata.html" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_field_type.html" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_group_name.html" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_get_size.html" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_gettable_params.html" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_is_a.html" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_keygen.html" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_get_count.html" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_meth_new.html" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_new.html" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_print_private.html" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_RSA.html" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_set_type.html" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_settable_params.html" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_sign.html" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_todata.html" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify.html" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/html/man3/EVP_PKEY_verify_recover.html" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/html/man3/EVP_RAND.html" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/html/man3/EVP_SIGNATURE.html" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/html/man3/EVP_SealInit.html" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/html/man3/EVP_SignInit.html" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/html/man3/EVP_VerifyInit.html" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/html/man3/EVP_aes_128_gcm.html" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_aria_128_gcm.html" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/html/man3/EVP_bf_cbc.html" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/html/man3/EVP_blake2b512.html" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/html/man3/EVP_camellia_128_ecb.html" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/html/man3/EVP_cast5_cbc.html" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/html/man3/EVP_chacha20.html" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/html/man3/EVP_des_cbc.html" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/html/man3/EVP_desx_cbc.html" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/html/man3/EVP_idea_cbc.html" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/html/man3/EVP_md2.html" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/html/man3/EVP_md4.html" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/html/man3/EVP_md5.html" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/html/man3/EVP_mdc2.html" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/html/man3/EVP_rc2_cbc.html" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/html/man3/EVP_rc4.html" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/html/man3/EVP_ripemd160.html" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/html/man3/EVP_seed_cbc.html" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/html/man3/EVP_set_default_properties.html" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/html/man3/EVP_sha1.html" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/html/man3/EVP_sha224.html" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/html/man3/EVP_sha3_224.html" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/html/man3/EVP_sm3.html" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/html/man3/EVP_sm4_cbc.html" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/html/man3/EVP_whirlpool.html" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/html/man3/HMAC.html" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/html/man3/MD5.html" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/html/man3/MDC2_Init.html" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/html/man3/NCONF_new_ex.html" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/html/man3/OBJ_nid2obj.html" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/html/man3/OCSP_REQUEST_new.html" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/html/man3/OCSP_cert_to_id.html" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/html/man3/OCSP_request_add1_nonce.html" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/html/man3/OCSP_resp_find_status.html" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/html/man3/OCSP_response_status.html" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/html/man3/OCSP_sendreq_new.html" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/html/man3/OPENSSL_Applink.html" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/html/man3/OPENSSL_FILE.html" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/html/man3/OPENSSL_LH_stats.html" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/html/man3/OPENSSL_config.html" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/html/man3/OPENSSL_fork_prepare.html" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/html/man3/OPENSSL_hexchar2int.html" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/html/man3/OPENSSL_ia32cap.html" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_crypto.html" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/html/man3/OPENSSL_init_ssl.html" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/html/man3/OPENSSL_instrument_bus.html" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/html/man3/OPENSSL_load_builtin_modules.html" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/html/man3/OPENSSL_malloc.html" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_s390xcap.html" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/html/man3/OPENSSL_secure_malloc.html" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/html/man3/OPENSSL_strcasecmp.html" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_exec_certreq.html" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_log_open.html" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/html/man3/OSSL_CMP_validate_msg.html" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER.html" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX.html" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_DECODER_from_bio.html" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER.html" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/html/man3/OSSL_ENCODER_to_bio.html" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_parse_url.html" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/html/man3/OSSL_HTTP_transfer.html" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/html/man3/OSSL_LIB_CTX.html" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM.html" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_BLD.html" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_dup.html" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/html/man3/OSSL_PARAM_int.html" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/html/man3/OSSL_PROVIDER.html" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_new.html" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_INFO.html" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_LOADER.html" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_SEARCH.html" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_attach.html" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_expect.html" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/html/man3/OSSL_STORE_open.html" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/html/man3/OSSL_trace_enabled.html" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/html/man3/OSSL_trace_get_category_num.html" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/html/man3/OSSL_trace_set_channel.html" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/html/man3/OpenSSL_add_all_algorithms.html" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/html/man3/OpenSSL_version.html" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_bytes_read_bio.html" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/html/man3/PEM_read.html" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/html/man3/PEM_read_CMS.html" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_PrivateKey.html" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/html/man3/PEM_read_bio_ex.html" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_CMS_stream.html" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/html/man3/PKCS12_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/html/man3/PKCS12_add_CSPName_asc.html" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_cert.html" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/html/man3/PKCS12_add_localkeyid.html" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/html/man3/PKCS12_add_safe.html" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/html/man3/PKCS12_create.html" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/html/man3/PKCS12_decrypt_skey.html" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/html/man3/PKCS12_gen_mac.html" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/html/man3/PKCS12_get_friendlyname.html" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/html/man3/PKCS12_init.html" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/html/man3/PKCS12_newpass.html" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/html/man3/PKCS12_pack_p7encdata.html" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/html/man3/PKCS12_parse.html" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/html/man3/PKCS5_PBE_keyivgen.html" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/html/man3/PKCS7_decrypt.html" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_encrypt.html" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS7_get_octet_string.html" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/html/man3/PKCS7_sign.html" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/html/man3/PKCS7_sign_add_signer.html" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/html/man3/PKCS7_type_is_other.html" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/html/man3/PKCS7_verify.html" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/html/man3/PKCS8_encrypt.html" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/html/man3/PKCS8_pkey_add1_attr.html" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/html/man3/RAND_add.html" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/html/man3/RAND_bytes.html" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/html/man3/RAND_cleanup.html" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/html/man3/RAND_egd.html" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/html/man3/RAND_get0_primary.html" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/html/man3/RAND_load_file.html" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/html/man3/RAND_set_DRBG_type.html" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/html/man3/RAND_set_rand_method.html" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/html/man3/RC4_set_key.html" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/html/man3/RIPEMD160_Init.html" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/html/man3/RSA_blinding_on.html" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/html/man3/RSA_check_key.html" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/html/man3/RSA_generate_key.html" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/html/man3/RSA_get0_key.html" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/html/man3/RSA_meth_new.html" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/html/man3/RSA_new.html" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/html/man3/RSA_print.html" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/html/man3/RSA_private_encrypt.html" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_public_encrypt.html" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/html/man3/RSA_set_method.html" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/html/man3/RSA_sign.html" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/html/man3/RSA_size.html" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/html/man3/SCT_new.html" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/html/man3/SCT_print.html" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/html/man3/SCT_validate.html" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/html/man3/SHA256_Init.html" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/html/man3/SMIME_read_ASN1.html" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_read_CMS.html" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_read_PKCS7.html" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/html/man3/SMIME_write_ASN1.html" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/html/man3/SMIME_write_CMS.html" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/html/man3/SMIME_write_PKCS7.html" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/html/man3/SRP_Calc_B.html" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/html/man3/SRP_VBASE_new.html" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/html/man3/SRP_create_verifier.html" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/html/man3/SRP_user_pwd_new.html" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/html/man3/SSL_CIPHER_get_name.html" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/html/man3/SSL_COMP_add_compression_method.html" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_new.html" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd.html" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/html/man3/SSL_CONF_cmd_argv.html" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/html/man3/SSL_CTX_add_session.html" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/html/man3/SSL_CTX_config.html" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/html/man3/SSL_CTX_ctrl.html" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/html/man3/SSL_CTX_dane_enable.html" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/html/man3/SSL_CTX_flush_sessions.html" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_free.html" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get0_param.html" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/html/man3/SSL_CTX_get_verify_mode.html" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/html/man3/SSL_CTX_load_verify_locations.html" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/html/man3/SSL_CTX_new.html" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_number.html" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_sessions.html" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set0_CA_list.html" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_curves.html" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_store.html" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_cipher_list.html" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_info_callback.html" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_mode.html" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_msg_callback.html" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_num_tickets.html" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_options.html" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quic_method.html" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_read_ahead.html" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_security_level.html" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_id_context.html" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_srp_password.html" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_ssl_version.html" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_timeout.html" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/html/man3/SSL_CTX_set_verify.html" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_certificate.html" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/html/man3/SSL_CTX_use_serverinfo.html" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_free.html" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_cipher.html" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_hostname.html" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_id_context.html" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get0_peer.html" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_compress_id.html" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_get_time.html" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_has_ticket.html" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_is_resumable.html" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_print.html" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/html/man3/SSL_SESSION_set1_id.html" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/html/man3/SSL_accept.html" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/html/man3/SSL_alert_type_string.html" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/html/man3/SSL_alloc_buffers.html" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/html/man3/SSL_check_chain.html" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/html/man3/SSL_clear.html" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/html/man3/SSL_connect.html" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/html/man3/SSL_do_handshake.html" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/html/man3/SSL_export_keying_material.html" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/html/man3/SSL_extension_supported.html" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/html/man3/SSL_free.html" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/html/man3/SSL_get0_peer_scts.html" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/html/man3/SSL_get_SSL_CTX.html" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/html/man3/SSL_get_all_async_fds.html" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/html/man3/SSL_get_certificate.html" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_ciphers.html" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/html/man3/SSL_get_client_random.html" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/html/man3/SSL_get_current_cipher.html" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/html/man3/SSL_get_default_timeout.html" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/html/man3/SSL_get_error.html" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/html/man3/SSL_get_extms_support.html" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/html/man3/SSL_get_fd.html" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_cert_chain.html" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_certificate.html" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_signature_nid.html" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/html/man3/SSL_get_peer_tmp_key.html" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/html/man3/SSL_get_psk_identity.html" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/html/man3/SSL_get_rbio.html" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/html/man3/SSL_get_session.html" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/html/man3/SSL_get_shared_sigalgs.html" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/html/man3/SSL_get_verify_result.html" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_get_version.html" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/html/man3/SSL_group_to_name.html" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/html/man3/SSL_in_init.html" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/html/man3/SSL_key_update.html" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/html/man3/SSL_library_init.html" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/html/man3/SSL_load_client_CA_file.html" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/html/man3/SSL_new.html" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/html/man3/SSL_pending.html" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/html/man3/SSL_read.html" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/html/man3/SSL_read_early_data.html" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/html/man3/SSL_rstate_string.html" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/html/man3/SSL_session_reused.html" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/html/man3/SSL_set1_host.html" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/html/man3/SSL_set_async_callback.html" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/html/man3/SSL_set_bio.html" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/html/man3/SSL_set_connect_state.html" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/html/man3/SSL_set_fd.html" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/html/man3/SSL_set_retry_verify.html" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/html/man3/SSL_set_session.html" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/html/man3/SSL_set_shutdown.html" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_set_verify_result.html" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/html/man3/SSL_shutdown.html" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/html/man3/SSL_state_string.html" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/html/man3/SSL_want.html" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/html/man3/SSL_write.html" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/html/man3/TS_RESP_CTX_new.html" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/html/man3/UI_STRING.html" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/html/man3/UI_UTIL_read_pw.html" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/html/man3/UI_create_method.html" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/html/man3/UI_new.html" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/html/man3/X509V3_get_d2i.html" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/html/man3/X509V3_set_ctx.html" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/html/man3/X509_ALGOR_dup.html" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/html/man3/X509_CRL_get0_by_serial.html" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/html/man3/X509_EXTENSION_set_object.html" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP.html" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_hash_dir.html" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/html/man3/X509_LOOKUP_meth_new.html" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/html/man3/X509_NAME_get0_der.html" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/html/man3/X509_NAME_get_index_by_NID.html" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/html/man3/X509_NAME_print_ex.html" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/html/man3/X509_PUBKEY_new.html" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/html/man3/X509_SIG_get0.html" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_get_error.html" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_new.html" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/html/man3/X509_STORE_add_cert.html" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/html/man3/X509_STORE_get0_param.html" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/html/man3/X509_STORE_new.html" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/html/man3/X509_add_cert.html" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/html/man3/X509_check_ca.html" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/html/man3/X509_check_host.html" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/html/man3/X509_check_issued.html" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/html/man3/X509_check_private_key.html" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/html/man3/X509_check_purpose.html" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/html/man3/X509_cmp.html" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/html/man3/X509_cmp_time.html" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/html/man3/X509_digest.html" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/html/man3/X509_dup.html" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/html/man3/X509_get0_distinguishing_id.html" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/html/man3/X509_get0_notBefore.html" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/html/man3/X509_get0_signature.html" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/html/man3/X509_get0_uids.html" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/html/man3/X509_get_extension_flags.html" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/html/man3/X509_get_pubkey.html" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/html/man3/X509_get_serialNumber.html" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/html/man3/X509_get_subject_name.html" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/html/man3/X509_get_version.html" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/html/man3/X509_load_http.html" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/html/man3/X509_new.html" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/html/man3/X509_sign.html" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/html/man3/X509_verify.html" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/html/man3/X509_verify_cert.html" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/html/man3/X509v3_get_ext_by_NID.html" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/html/man3/b2i_PVK_bio_ex.html" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/html/man3/d2i_PrivateKey.html" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_RSAPrivateKey.html" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/html/man3/d2i_SSL_SESSION.html" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/html/man3/d2i_X509.html" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/html/man3/i2d_CMS_bio_stream.html" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_PKCS7_bio_stream.html" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/html/man3/i2d_re_X509_tbs.html" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/html/man3/o2i_SCT_LIST.html" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/html/man5/config.html" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/html/man5/fips_config.html" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/html/man5/x509v3_config.html" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-AES.html" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-ARIA.html" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CAST.html" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-CHACHA.html" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-DES.html" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-IDEA.html" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC2.html" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC4.html" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-RC5.html" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SEED.html" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/html/man7/EVP_CIPHER-SM4.html" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/html/man7/EVP_KDF-HKDF.html" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KB.html" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/html/man7/EVP_KDF-KRB5KDF.html" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF1.html" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PBKDF2.html" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SCRYPT.html" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SS.html" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/html/man7/EVP_KDF-SSHKDF.html" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-ASN1.html" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/html/man7/EVP_KDF-X963.html" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/html/man7/EVP_KEM-RSA.html" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-DH.html" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/html/man7/EVP_KEYEXCH-X25519.html" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/html/man7/EVP_MAC-BLAKE2.html" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MAC-CMAC.html" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-GMAC.html" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-HMAC.html" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-KMAC.html" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Poly1305.html" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/html/man7/EVP_MAC-Siphash.html" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/html/man7/EVP_MD-BLAKE2.html" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD2.html" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD4.html" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5-SHA1.html" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-MD5.html" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/html/man7/EVP_MD-MDC2.html" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/html/man7/EVP_MD-RIPEMD160.html" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA1.html" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA2.html" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHA3.html" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/html/man7/EVP_MD-SHAKE.html" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/html/man7/EVP_MD-SM3.html" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/html/man7/EVP_MD-common.html" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DH.html" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-DSA.html" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-EC.html" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-FFC.html" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-HMAC.html" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-RSA.html" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-SM2.html" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/html/man7/EVP_PKEY-X25519.html" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/html/man7/EVP_RAND-SEED-SRC.html" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/html/man7/EVP_RAND-TEST-RAND.html" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/html/man7/EVP_RAND.html" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-DSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/html/man7/EVP_SIGNATURE-RSA.html" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-base.html" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-default.html" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-legacy.html" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/html/man7/OSSL_PROVIDER-null.html" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/html/man7/RAND.html" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/html/man7/RSA-PSS.html" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/html/man7/X25519.html" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/html/man7/bio.html" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/html/man7/crypto.html" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/html/man7/ct.html" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/html/man7/des_modes.html" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/html/man7/evp.html" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/html/man7/fips_module.html" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/html/man7/life_cycle-cipher.html" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/html/man7/life_cycle-digest.html" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/html/man7/life_cycle-kdf.html" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/html/man7/life_cycle-mac.html" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/html/man7/life_cycle-pkey.html" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/html/man7/life_cycle-rand.html" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/html/man7/migration_guide.html" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/html/man7/openssl-core.h.html" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/html/man7/openssl-core_dispatch.h.html" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/html/man7/openssl-core_names.h.html" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/html/man7/openssl-env.html" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/html/man7/openssl-glossary.html" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/html/man7/openssl-threads.html" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/html/man7/openssl_user_macros.html" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/html/man7/ossl_store-file.html" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/html/man7/ossl_store.html" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/html/man7/passphrase-encoding.html" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/html/man7/property.html" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/html/man7/provider-asym_cipher.html" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/html/man7/provider-base.html" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/html/man7/provider-cipher.html" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/html/man7/provider-decoder.html" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/html/man7/provider-digest.html" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/html/man7/provider-encoder.html" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/html/man7/provider-kdf.html" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/html/man7/provider-kem.html" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/html/man7/provider-keyexch.html" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/html/man7/provider-keymgmt.html" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/html/man7/provider-mac.html" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/html/man7/provider-object.html" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/html/man7/provider-rand.html" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/html/man7/provider-signature.html" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/html/man7/provider-storemgmt.html" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/html/man7/provider.html" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/html/man7/proxy-certificates.html" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/html/man7/ssl.html" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/html/man7/x509.html" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man/man1/CA.pl.1" => [ ++ "doc/man1/CA.pl.pod" ++ ], ++ "doc/man/man1/openssl-asn1parse.1" => [ ++ "doc/man1/openssl-asn1parse.pod" ++ ], ++ "doc/man/man1/openssl-ca.1" => [ ++ "doc/man1/openssl-ca.pod" ++ ], ++ "doc/man/man1/openssl-ciphers.1" => [ ++ "doc/man1/openssl-ciphers.pod" ++ ], ++ "doc/man/man1/openssl-cmds.1" => [ ++ "doc/man1/openssl-cmds.pod" ++ ], ++ "doc/man/man1/openssl-cmp.1" => [ ++ "doc/man1/openssl-cmp.pod" ++ ], ++ "doc/man/man1/openssl-cms.1" => [ ++ "doc/man1/openssl-cms.pod" ++ ], ++ "doc/man/man1/openssl-crl.1" => [ ++ "doc/man1/openssl-crl.pod" ++ ], ++ "doc/man/man1/openssl-crl2pkcs7.1" => [ ++ "doc/man1/openssl-crl2pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-dgst.1" => [ ++ "doc/man1/openssl-dgst.pod" ++ ], ++ "doc/man/man1/openssl-dhparam.1" => [ ++ "doc/man1/openssl-dhparam.pod" ++ ], ++ "doc/man/man1/openssl-dsa.1" => [ ++ "doc/man1/openssl-dsa.pod" ++ ], ++ "doc/man/man1/openssl-dsaparam.1" => [ ++ "doc/man1/openssl-dsaparam.pod" ++ ], ++ "doc/man/man1/openssl-ec.1" => [ ++ "doc/man1/openssl-ec.pod" ++ ], ++ "doc/man/man1/openssl-ecparam.1" => [ ++ "doc/man1/openssl-ecparam.pod" ++ ], ++ "doc/man/man1/openssl-enc.1" => [ ++ "doc/man1/openssl-enc.pod" ++ ], ++ "doc/man/man1/openssl-engine.1" => [ ++ "doc/man1/openssl-engine.pod" ++ ], ++ "doc/man/man1/openssl-errstr.1" => [ ++ "doc/man1/openssl-errstr.pod" ++ ], ++ "doc/man/man1/openssl-fipsinstall.1" => [ ++ "doc/man1/openssl-fipsinstall.pod" ++ ], ++ "doc/man/man1/openssl-format-options.1" => [ ++ "doc/man1/openssl-format-options.pod" ++ ], ++ "doc/man/man1/openssl-gendsa.1" => [ ++ "doc/man1/openssl-gendsa.pod" ++ ], ++ "doc/man/man1/openssl-genpkey.1" => [ ++ "doc/man1/openssl-genpkey.pod" ++ ], ++ "doc/man/man1/openssl-genrsa.1" => [ ++ "doc/man1/openssl-genrsa.pod" ++ ], ++ "doc/man/man1/openssl-info.1" => [ ++ "doc/man1/openssl-info.pod" ++ ], ++ "doc/man/man1/openssl-kdf.1" => [ ++ "doc/man1/openssl-kdf.pod" ++ ], ++ "doc/man/man1/openssl-list.1" => [ ++ "doc/man1/openssl-list.pod" ++ ], ++ "doc/man/man1/openssl-mac.1" => [ ++ "doc/man1/openssl-mac.pod" ++ ], ++ "doc/man/man1/openssl-namedisplay-options.1" => [ ++ "doc/man1/openssl-namedisplay-options.pod" ++ ], ++ "doc/man/man1/openssl-nseq.1" => [ ++ "doc/man1/openssl-nseq.pod" ++ ], ++ "doc/man/man1/openssl-ocsp.1" => [ ++ "doc/man1/openssl-ocsp.pod" ++ ], ++ "doc/man/man1/openssl-passphrase-options.1" => [ ++ "doc/man1/openssl-passphrase-options.pod" ++ ], ++ "doc/man/man1/openssl-passwd.1" => [ ++ "doc/man1/openssl-passwd.pod" ++ ], ++ "doc/man/man1/openssl-pkcs12.1" => [ ++ "doc/man1/openssl-pkcs12.pod" ++ ], ++ "doc/man/man1/openssl-pkcs7.1" => [ ++ "doc/man1/openssl-pkcs7.pod" ++ ], ++ "doc/man/man1/openssl-pkcs8.1" => [ ++ "doc/man1/openssl-pkcs8.pod" ++ ], ++ "doc/man/man1/openssl-pkey.1" => [ ++ "doc/man1/openssl-pkey.pod" ++ ], ++ "doc/man/man1/openssl-pkeyparam.1" => [ ++ "doc/man1/openssl-pkeyparam.pod" ++ ], ++ "doc/man/man1/openssl-pkeyutl.1" => [ ++ "doc/man1/openssl-pkeyutl.pod" ++ ], ++ "doc/man/man1/openssl-prime.1" => [ ++ "doc/man1/openssl-prime.pod" ++ ], ++ "doc/man/man1/openssl-rand.1" => [ ++ "doc/man1/openssl-rand.pod" ++ ], ++ "doc/man/man1/openssl-rehash.1" => [ ++ "doc/man1/openssl-rehash.pod" ++ ], ++ "doc/man/man1/openssl-req.1" => [ ++ "doc/man1/openssl-req.pod" ++ ], ++ "doc/man/man1/openssl-rsa.1" => [ ++ "doc/man1/openssl-rsa.pod" ++ ], ++ "doc/man/man1/openssl-rsautl.1" => [ ++ "doc/man1/openssl-rsautl.pod" ++ ], ++ "doc/man/man1/openssl-s_client.1" => [ ++ "doc/man1/openssl-s_client.pod" ++ ], ++ "doc/man/man1/openssl-s_server.1" => [ ++ "doc/man1/openssl-s_server.pod" ++ ], ++ "doc/man/man1/openssl-s_time.1" => [ ++ "doc/man1/openssl-s_time.pod" ++ ], ++ "doc/man/man1/openssl-sess_id.1" => [ ++ "doc/man1/openssl-sess_id.pod" ++ ], ++ "doc/man/man1/openssl-smime.1" => [ ++ "doc/man1/openssl-smime.pod" ++ ], ++ "doc/man/man1/openssl-speed.1" => [ ++ "doc/man1/openssl-speed.pod" ++ ], ++ "doc/man/man1/openssl-spkac.1" => [ ++ "doc/man1/openssl-spkac.pod" ++ ], ++ "doc/man/man1/openssl-srp.1" => [ ++ "doc/man1/openssl-srp.pod" ++ ], ++ "doc/man/man1/openssl-storeutl.1" => [ ++ "doc/man1/openssl-storeutl.pod" ++ ], ++ "doc/man/man1/openssl-ts.1" => [ ++ "doc/man1/openssl-ts.pod" ++ ], ++ "doc/man/man1/openssl-verification-options.1" => [ ++ "doc/man1/openssl-verification-options.pod" ++ ], ++ "doc/man/man1/openssl-verify.1" => [ ++ "doc/man1/openssl-verify.pod" ++ ], ++ "doc/man/man1/openssl-version.1" => [ ++ "doc/man1/openssl-version.pod" ++ ], ++ "doc/man/man1/openssl-x509.1" => [ ++ "doc/man1/openssl-x509.pod" ++ ], ++ "doc/man/man1/openssl.1" => [ ++ "doc/man1/openssl.pod" ++ ], ++ "doc/man/man1/tsget.1" => [ ++ "doc/man1/tsget.pod" ++ ], ++ "doc/man/man3/ADMISSIONS.3" => [ ++ "doc/man3/ADMISSIONS.pod" ++ ], ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3" => [ ++ "doc/man3/ASN1_EXTERN_FUNCS.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_get_int64.3" => [ ++ "doc/man3/ASN1_INTEGER_get_int64.pod" ++ ], ++ "doc/man/man3/ASN1_INTEGER_new.3" => [ ++ "doc/man3/ASN1_INTEGER_new.pod" ++ ], ++ "doc/man/man3/ASN1_ITEM_lookup.3" => [ ++ "doc/man3/ASN1_ITEM_lookup.pod" ++ ], ++ "doc/man/man3/ASN1_OBJECT_new.3" => [ ++ "doc/man3/ASN1_OBJECT_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_TABLE_add.3" => [ ++ "doc/man3/ASN1_STRING_TABLE_add.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_length.3" => [ ++ "doc/man3/ASN1_STRING_length.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_new.3" => [ ++ "doc/man3/ASN1_STRING_new.pod" ++ ], ++ "doc/man/man3/ASN1_STRING_print_ex.3" => [ ++ "doc/man3/ASN1_STRING_print_ex.pod" ++ ], ++ "doc/man/man3/ASN1_TIME_set.3" => [ ++ "doc/man3/ASN1_TIME_set.pod" ++ ], ++ "doc/man/man3/ASN1_TYPE_get.3" => [ ++ "doc/man3/ASN1_TYPE_get.pod" ++ ], ++ "doc/man/man3/ASN1_aux_cb.3" => [ ++ "doc/man3/ASN1_aux_cb.pod" ++ ], ++ "doc/man/man3/ASN1_generate_nconf.3" => [ ++ "doc/man3/ASN1_generate_nconf.pod" ++ ], ++ "doc/man/man3/ASN1_item_d2i_bio.3" => [ ++ "doc/man3/ASN1_item_d2i_bio.pod" ++ ], ++ "doc/man/man3/ASN1_item_new.3" => [ ++ "doc/man3/ASN1_item_new.pod" ++ ], ++ "doc/man/man3/ASN1_item_sign.3" => [ ++ "doc/man3/ASN1_item_sign.pod" ++ ], ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3" => [ ++ "doc/man3/ASYNC_WAIT_CTX_new.pod" ++ ], ++ "doc/man/man3/ASYNC_start_job.3" => [ ++ "doc/man3/ASYNC_start_job.pod" ++ ], ++ "doc/man/man3/BF_encrypt.3" => [ ++ "doc/man3/BF_encrypt.pod" ++ ], ++ "doc/man/man3/BIO_ADDR.3" => [ ++ "doc/man3/BIO_ADDR.pod" ++ ], ++ "doc/man/man3/BIO_ADDRINFO.3" => [ ++ "doc/man3/BIO_ADDRINFO.pod" ++ ], ++ "doc/man/man3/BIO_connect.3" => [ ++ "doc/man3/BIO_connect.pod" ++ ], ++ "doc/man/man3/BIO_ctrl.3" => [ ++ "doc/man3/BIO_ctrl.pod" ++ ], ++ "doc/man/man3/BIO_f_base64.3" => [ ++ "doc/man3/BIO_f_base64.pod" ++ ], ++ "doc/man/man3/BIO_f_buffer.3" => [ ++ "doc/man3/BIO_f_buffer.pod" ++ ], ++ "doc/man/man3/BIO_f_cipher.3" => [ ++ "doc/man3/BIO_f_cipher.pod" ++ ], ++ "doc/man/man3/BIO_f_md.3" => [ ++ "doc/man3/BIO_f_md.pod" ++ ], ++ "doc/man/man3/BIO_f_null.3" => [ ++ "doc/man3/BIO_f_null.pod" ++ ], ++ "doc/man/man3/BIO_f_prefix.3" => [ ++ "doc/man3/BIO_f_prefix.pod" ++ ], ++ "doc/man/man3/BIO_f_readbuffer.3" => [ ++ "doc/man3/BIO_f_readbuffer.pod" ++ ], ++ "doc/man/man3/BIO_f_ssl.3" => [ ++ "doc/man3/BIO_f_ssl.pod" ++ ], ++ "doc/man/man3/BIO_find_type.3" => [ ++ "doc/man3/BIO_find_type.pod" ++ ], ++ "doc/man/man3/BIO_get_data.3" => [ ++ "doc/man3/BIO_get_data.pod" ++ ], ++ "doc/man/man3/BIO_get_ex_new_index.3" => [ ++ "doc/man3/BIO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/BIO_meth_new.3" => [ ++ "doc/man3/BIO_meth_new.pod" ++ ], ++ "doc/man/man3/BIO_new.3" => [ ++ "doc/man3/BIO_new.pod" ++ ], ++ "doc/man/man3/BIO_new_CMS.3" => [ ++ "doc/man3/BIO_new_CMS.pod" ++ ], ++ "doc/man/man3/BIO_parse_hostserv.3" => [ ++ "doc/man3/BIO_parse_hostserv.pod" ++ ], ++ "doc/man/man3/BIO_printf.3" => [ ++ "doc/man3/BIO_printf.pod" ++ ], ++ "doc/man/man3/BIO_push.3" => [ ++ "doc/man3/BIO_push.pod" ++ ], ++ "doc/man/man3/BIO_read.3" => [ ++ "doc/man3/BIO_read.pod" ++ ], ++ "doc/man/man3/BIO_s_accept.3" => [ ++ "doc/man3/BIO_s_accept.pod" ++ ], ++ "doc/man/man3/BIO_s_bio.3" => [ ++ "doc/man3/BIO_s_bio.pod" ++ ], ++ "doc/man/man3/BIO_s_connect.3" => [ ++ "doc/man3/BIO_s_connect.pod" ++ ], ++ "doc/man/man3/BIO_s_core.3" => [ ++ "doc/man3/BIO_s_core.pod" ++ ], ++ "doc/man/man3/BIO_s_fd.3" => [ ++ "doc/man3/BIO_s_fd.pod" ++ ], ++ "doc/man/man3/BIO_s_file.3" => [ ++ "doc/man3/BIO_s_file.pod" ++ ], ++ "doc/man/man3/BIO_s_mem.3" => [ ++ "doc/man3/BIO_s_mem.pod" ++ ], ++ "doc/man/man3/BIO_s_null.3" => [ ++ "doc/man3/BIO_s_null.pod" ++ ], ++ "doc/man/man3/BIO_s_socket.3" => [ ++ "doc/man3/BIO_s_socket.pod" ++ ], ++ "doc/man/man3/BIO_set_callback.3" => [ ++ "doc/man3/BIO_set_callback.pod" ++ ], ++ "doc/man/man3/BIO_should_retry.3" => [ ++ "doc/man3/BIO_should_retry.pod" ++ ], ++ "doc/man/man3/BIO_socket_wait.3" => [ ++ "doc/man3/BIO_socket_wait.pod" ++ ], ++ "doc/man/man3/BN_BLINDING_new.3" => [ ++ "doc/man3/BN_BLINDING_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_new.3" => [ ++ "doc/man3/BN_CTX_new.pod" ++ ], ++ "doc/man/man3/BN_CTX_start.3" => [ ++ "doc/man3/BN_CTX_start.pod" ++ ], ++ "doc/man/man3/BN_add.3" => [ ++ "doc/man3/BN_add.pod" ++ ], ++ "doc/man/man3/BN_add_word.3" => [ ++ "doc/man3/BN_add_word.pod" ++ ], ++ "doc/man/man3/BN_bn2bin.3" => [ ++ "doc/man3/BN_bn2bin.pod" ++ ], ++ "doc/man/man3/BN_cmp.3" => [ ++ "doc/man3/BN_cmp.pod" ++ ], ++ "doc/man/man3/BN_copy.3" => [ ++ "doc/man3/BN_copy.pod" ++ ], ++ "doc/man/man3/BN_generate_prime.3" => [ ++ "doc/man3/BN_generate_prime.pod" ++ ], ++ "doc/man/man3/BN_mod_exp_mont.3" => [ ++ "doc/man3/BN_mod_exp_mont.pod" ++ ], ++ "doc/man/man3/BN_mod_inverse.3" => [ ++ "doc/man3/BN_mod_inverse.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_montgomery.3" => [ ++ "doc/man3/BN_mod_mul_montgomery.pod" ++ ], ++ "doc/man/man3/BN_mod_mul_reciprocal.3" => [ ++ "doc/man3/BN_mod_mul_reciprocal.pod" ++ ], ++ "doc/man/man3/BN_new.3" => [ ++ "doc/man3/BN_new.pod" ++ ], ++ "doc/man/man3/BN_num_bytes.3" => [ ++ "doc/man3/BN_num_bytes.pod" ++ ], ++ "doc/man/man3/BN_rand.3" => [ ++ "doc/man3/BN_rand.pod" ++ ], ++ "doc/man/man3/BN_security_bits.3" => [ ++ "doc/man3/BN_security_bits.pod" ++ ], ++ "doc/man/man3/BN_set_bit.3" => [ ++ "doc/man3/BN_set_bit.pod" ++ ], ++ "doc/man/man3/BN_swap.3" => [ ++ "doc/man3/BN_swap.pod" ++ ], ++ "doc/man/man3/BN_zero.3" => [ ++ "doc/man3/BN_zero.pod" ++ ], ++ "doc/man/man3/BUF_MEM_new.3" => [ ++ "doc/man3/BUF_MEM_new.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_decrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_EncryptedData_encrypt.3" => [ ++ "doc/man3/CMS_EncryptedData_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_EnvelopedData_create.3" => [ ++ "doc/man3/CMS_EnvelopedData_create.pod" ++ ], ++ "doc/man/man3/CMS_add0_cert.3" => [ ++ "doc/man3/CMS_add0_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_recipient_cert.3" => [ ++ "doc/man3/CMS_add1_recipient_cert.pod" ++ ], ++ "doc/man/man3/CMS_add1_signer.3" => [ ++ "doc/man3/CMS_add1_signer.pod" ++ ], ++ "doc/man/man3/CMS_compress.3" => [ ++ "doc/man3/CMS_compress.pod" ++ ], ++ "doc/man/man3/CMS_data_create.3" => [ ++ "doc/man3/CMS_data_create.pod" ++ ], ++ "doc/man/man3/CMS_decrypt.3" => [ ++ "doc/man3/CMS_decrypt.pod" ++ ], ++ "doc/man/man3/CMS_digest_create.3" => [ ++ "doc/man3/CMS_digest_create.pod" ++ ], ++ "doc/man/man3/CMS_encrypt.3" => [ ++ "doc/man3/CMS_encrypt.pod" ++ ], ++ "doc/man/man3/CMS_final.3" => [ ++ "doc/man3/CMS_final.pod" ++ ], ++ "doc/man/man3/CMS_get0_RecipientInfos.3" => [ ++ "doc/man3/CMS_get0_RecipientInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_SignerInfos.3" => [ ++ "doc/man3/CMS_get0_SignerInfos.pod" ++ ], ++ "doc/man/man3/CMS_get0_type.3" => [ ++ "doc/man3/CMS_get0_type.pod" ++ ], ++ "doc/man/man3/CMS_get1_ReceiptRequest.3" => [ ++ "doc/man3/CMS_get1_ReceiptRequest.pod" ++ ], ++ "doc/man/man3/CMS_sign.3" => [ ++ "doc/man3/CMS_sign.pod" ++ ], ++ "doc/man/man3/CMS_sign_receipt.3" => [ ++ "doc/man3/CMS_sign_receipt.pod" ++ ], ++ "doc/man/man3/CMS_uncompress.3" => [ ++ "doc/man3/CMS_uncompress.pod" ++ ], ++ "doc/man/man3/CMS_verify.3" => [ ++ "doc/man3/CMS_verify.pod" ++ ], ++ "doc/man/man3/CMS_verify_receipt.3" => [ ++ "doc/man3/CMS_verify_receipt.pod" ++ ], ++ "doc/man/man3/CONF_modules_free.3" => [ ++ "doc/man3/CONF_modules_free.pod" ++ ], ++ "doc/man/man3/CONF_modules_load_file.3" => [ ++ "doc/man3/CONF_modules_load_file.pod" ++ ], ++ "doc/man/man3/CRYPTO_THREAD_run_once.3" => [ ++ "doc/man3/CRYPTO_THREAD_run_once.pod" ++ ], ++ "doc/man/man3/CRYPTO_get_ex_new_index.3" => [ ++ "doc/man3/CRYPTO_get_ex_new_index.pod" ++ ], ++ "doc/man/man3/CRYPTO_memcmp.3" => [ ++ "doc/man3/CRYPTO_memcmp.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3" => [ ++ "doc/man3/CTLOG_STORE_get0_log_by_id.pod" ++ ], ++ "doc/man/man3/CTLOG_STORE_new.3" => [ ++ "doc/man3/CTLOG_STORE_new.pod" ++ ], ++ "doc/man/man3/CTLOG_new.3" => [ ++ "doc/man3/CTLOG_new.pod" ++ ], ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3" => [ ++ "doc/man3/CT_POLICY_EVAL_CTX_new.pod" ++ ], ++ "doc/man/man3/DEFINE_STACK_OF.3" => [ ++ "doc/man3/DEFINE_STACK_OF.pod" ++ ], ++ "doc/man/man3/DES_random_key.3" => [ ++ "doc/man3/DES_random_key.pod" ++ ], ++ "doc/man/man3/DH_generate_key.3" => [ ++ "doc/man3/DH_generate_key.pod" ++ ], ++ "doc/man/man3/DH_generate_parameters.3" => [ ++ "doc/man3/DH_generate_parameters.pod" ++ ], ++ "doc/man/man3/DH_get0_pqg.3" => [ ++ "doc/man3/DH_get0_pqg.pod" ++ ], ++ "doc/man/man3/DH_get_1024_160.3" => [ ++ "doc/man3/DH_get_1024_160.pod" ++ ], ++ "doc/man/man3/DH_meth_new.3" => [ ++ "doc/man3/DH_meth_new.pod" ++ ], ++ "doc/man/man3/DH_new.3" => [ ++ "doc/man3/DH_new.pod" ++ ], ++ "doc/man/man3/DH_new_by_nid.3" => [ ++ "doc/man3/DH_new_by_nid.pod" ++ ], ++ "doc/man/man3/DH_set_method.3" => [ ++ "doc/man3/DH_set_method.pod" ++ ], ++ "doc/man/man3/DH_size.3" => [ ++ "doc/man3/DH_size.pod" ++ ], ++ "doc/man/man3/DSA_SIG_new.3" => [ ++ "doc/man3/DSA_SIG_new.pod" ++ ], ++ "doc/man/man3/DSA_do_sign.3" => [ ++ "doc/man3/DSA_do_sign.pod" ++ ], ++ "doc/man/man3/DSA_dup_DH.3" => [ ++ "doc/man3/DSA_dup_DH.pod" ++ ], ++ "doc/man/man3/DSA_generate_key.3" => [ ++ "doc/man3/DSA_generate_key.pod" ++ ], ++ "doc/man/man3/DSA_generate_parameters.3" => [ ++ "doc/man3/DSA_generate_parameters.pod" ++ ], ++ "doc/man/man3/DSA_get0_pqg.3" => [ ++ "doc/man3/DSA_get0_pqg.pod" ++ ], ++ "doc/man/man3/DSA_meth_new.3" => [ ++ "doc/man3/DSA_meth_new.pod" ++ ], ++ "doc/man/man3/DSA_new.3" => [ ++ "doc/man3/DSA_new.pod" ++ ], ++ "doc/man/man3/DSA_set_method.3" => [ ++ "doc/man3/DSA_set_method.pod" ++ ], ++ "doc/man/man3/DSA_sign.3" => [ ++ "doc/man3/DSA_sign.pod" ++ ], ++ "doc/man/man3/DSA_size.3" => [ ++ "doc/man3/DSA_size.pod" ++ ], ++ "doc/man/man3/DTLS_get_data_mtu.3" => [ ++ "doc/man3/DTLS_get_data_mtu.pod" ++ ], ++ "doc/man/man3/DTLS_set_timer_cb.3" => [ ++ "doc/man3/DTLS_set_timer_cb.pod" ++ ], ++ "doc/man/man3/DTLSv1_listen.3" => [ ++ "doc/man3/DTLSv1_listen.pod" ++ ], ++ "doc/man/man3/ECDSA_SIG_new.3" => [ ++ "doc/man3/ECDSA_SIG_new.pod" ++ ], ++ "doc/man/man3/ECPKParameters_print.3" => [ ++ "doc/man3/ECPKParameters_print.pod" ++ ], ++ "doc/man/man3/EC_GFp_simple_method.3" => [ ++ "doc/man3/EC_GFp_simple_method.pod" ++ ], ++ "doc/man/man3/EC_GROUP_copy.3" => [ ++ "doc/man3/EC_GROUP_copy.pod" ++ ], ++ "doc/man/man3/EC_GROUP_new.3" => [ ++ "doc/man3/EC_GROUP_new.pod" ++ ], ++ "doc/man/man3/EC_KEY_get_enc_flags.3" => [ ++ "doc/man3/EC_KEY_get_enc_flags.pod" ++ ], ++ "doc/man/man3/EC_KEY_new.3" => [ ++ "doc/man3/EC_KEY_new.pod" ++ ], ++ "doc/man/man3/EC_POINT_add.3" => [ ++ "doc/man3/EC_POINT_add.pod" ++ ], ++ "doc/man/man3/EC_POINT_new.3" => [ ++ "doc/man3/EC_POINT_new.pod" ++ ], ++ "doc/man/man3/ENGINE_add.3" => [ ++ "doc/man3/ENGINE_add.pod" ++ ], ++ "doc/man/man3/ERR_GET_LIB.3" => [ ++ "doc/man3/ERR_GET_LIB.pod" ++ ], ++ "doc/man/man3/ERR_clear_error.3" => [ ++ "doc/man3/ERR_clear_error.pod" ++ ], ++ "doc/man/man3/ERR_error_string.3" => [ ++ "doc/man3/ERR_error_string.pod" ++ ], ++ "doc/man/man3/ERR_get_error.3" => [ ++ "doc/man3/ERR_get_error.pod" ++ ], ++ "doc/man/man3/ERR_load_crypto_strings.3" => [ ++ "doc/man3/ERR_load_crypto_strings.pod" ++ ], ++ "doc/man/man3/ERR_load_strings.3" => [ ++ "doc/man3/ERR_load_strings.pod" ++ ], ++ "doc/man/man3/ERR_new.3" => [ ++ "doc/man3/ERR_new.pod" ++ ], ++ "doc/man/man3/ERR_print_errors.3" => [ ++ "doc/man3/ERR_print_errors.pod" ++ ], ++ "doc/man/man3/ERR_put_error.3" => [ ++ "doc/man3/ERR_put_error.pod" ++ ], ++ "doc/man/man3/ERR_remove_state.3" => [ ++ "doc/man3/ERR_remove_state.pod" ++ ], ++ "doc/man/man3/ERR_set_mark.3" => [ ++ "doc/man3/ERR_set_mark.pod" ++ ], ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3" => [ ++ "doc/man3/EVP_ASYM_CIPHER_free.pod" ++ ], ++ "doc/man/man3/EVP_BytesToKey.3" => [ ++ "doc/man3/EVP_BytesToKey.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_cipher_data.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3" => [ ++ "doc/man3/EVP_CIPHER_CTX_get_original_iv.pod" ++ ], ++ "doc/man/man3/EVP_CIPHER_meth_new.3" => [ ++ "doc/man3/EVP_CIPHER_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_DigestInit.3" => [ ++ "doc/man3/EVP_DigestInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestSignInit.3" => [ ++ "doc/man3/EVP_DigestSignInit.pod" ++ ], ++ "doc/man/man3/EVP_DigestVerifyInit.3" => [ ++ "doc/man3/EVP_DigestVerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_EncodeInit.3" => [ ++ "doc/man3/EVP_EncodeInit.pod" ++ ], ++ "doc/man/man3/EVP_EncryptInit.3" => [ ++ "doc/man3/EVP_EncryptInit.pod" ++ ], ++ "doc/man/man3/EVP_KDF.3" => [ ++ "doc/man3/EVP_KDF.pod" ++ ], ++ "doc/man/man3/EVP_KEM_free.3" => [ ++ "doc/man3/EVP_KEM_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYEXCH_free.3" => [ ++ "doc/man3/EVP_KEYEXCH_free.pod" ++ ], ++ "doc/man/man3/EVP_KEYMGMT.3" => [ ++ "doc/man3/EVP_KEYMGMT.pod" ++ ], ++ "doc/man/man3/EVP_MAC.3" => [ ++ "doc/man3/EVP_MAC.pod" ++ ], ++ "doc/man/man3/EVP_MD_meth_new.3" => [ ++ "doc/man3/EVP_MD_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_OpenInit.3" => [ ++ "doc/man3/EVP_OpenInit.pod" ++ ], ++ "doc/man/man3/EVP_PBE_CipherInit.3" => [ ++ "doc/man3/EVP_PBE_CipherInit.pod" ++ ], ++ "doc/man/man3/EVP_PKEY2PKCS8.3" => [ ++ "doc/man3/EVP_PKEY2PKCS8.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3" => [ ++ "doc/man3/EVP_PKEY_ASN1_METHOD.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3" => [ ++ "doc/man3/EVP_PKEY_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3" => [ ++ "doc/man3/EVP_PKEY_CTX_get0_libctx.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_new.3" => [ ++ "doc/man3/EVP_PKEY_CTX_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set1_pbe_pass.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_hkdf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_scrypt_N.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3" => [ ++ "doc/man3/EVP_PKEY_CTX_set_tls1_prf_md.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3" => [ ++ "doc/man3/EVP_PKEY_asn1_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_check.3" => [ ++ "doc/man3/EVP_PKEY_check.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_copy_parameters.3" => [ ++ "doc/man3/EVP_PKEY_copy_parameters.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decapsulate.3" => [ ++ "doc/man3/EVP_PKEY_decapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_decrypt.3" => [ ++ "doc/man3/EVP_PKEY_decrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_derive.3" => [ ++ "doc/man3/EVP_PKEY_derive.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3" => [ ++ "doc/man3/EVP_PKEY_digestsign_supports_digest.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encapsulate.3" => [ ++ "doc/man3/EVP_PKEY_encapsulate.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_encrypt.3" => [ ++ "doc/man3/EVP_PKEY_encrypt.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_fromdata.3" => [ ++ "doc/man3/EVP_PKEY_fromdata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3" => [ ++ "doc/man3/EVP_PKEY_get_default_digest_nid.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_field_type.3" => [ ++ "doc/man3/EVP_PKEY_get_field_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_group_name.3" => [ ++ "doc/man3/EVP_PKEY_get_group_name.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_get_size.3" => [ ++ "doc/man3/EVP_PKEY_get_size.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_gettable_params.3" => [ ++ "doc/man3/EVP_PKEY_gettable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_is_a.3" => [ ++ "doc/man3/EVP_PKEY_is_a.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_keygen.3" => [ ++ "doc/man3/EVP_PKEY_keygen.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_get_count.3" => [ ++ "doc/man3/EVP_PKEY_meth_get_count.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_meth_new.3" => [ ++ "doc/man3/EVP_PKEY_meth_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_new.3" => [ ++ "doc/man3/EVP_PKEY_new.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_print_private.3" => [ ++ "doc/man3/EVP_PKEY_print_private.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_RSA.3" => [ ++ "doc/man3/EVP_PKEY_set1_RSA.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3" => [ ++ "doc/man3/EVP_PKEY_set1_encoded_public_key.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_set_type.3" => [ ++ "doc/man3/EVP_PKEY_set_type.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_settable_params.3" => [ ++ "doc/man3/EVP_PKEY_settable_params.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_sign.3" => [ ++ "doc/man3/EVP_PKEY_sign.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_todata.3" => [ ++ "doc/man3/EVP_PKEY_todata.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify.3" => [ ++ "doc/man3/EVP_PKEY_verify.pod" ++ ], ++ "doc/man/man3/EVP_PKEY_verify_recover.3" => [ ++ "doc/man3/EVP_PKEY_verify_recover.pod" ++ ], ++ "doc/man/man3/EVP_RAND.3" => [ ++ "doc/man3/EVP_RAND.pod" ++ ], ++ "doc/man/man3/EVP_SIGNATURE.3" => [ ++ "doc/man3/EVP_SIGNATURE.pod" ++ ], ++ "doc/man/man3/EVP_SealInit.3" => [ ++ "doc/man3/EVP_SealInit.pod" ++ ], ++ "doc/man/man3/EVP_SignInit.3" => [ ++ "doc/man3/EVP_SignInit.pod" ++ ], ++ "doc/man/man3/EVP_VerifyInit.3" => [ ++ "doc/man3/EVP_VerifyInit.pod" ++ ], ++ "doc/man/man3/EVP_aes_128_gcm.3" => [ ++ "doc/man3/EVP_aes_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_aria_128_gcm.3" => [ ++ "doc/man3/EVP_aria_128_gcm.pod" ++ ], ++ "doc/man/man3/EVP_bf_cbc.3" => [ ++ "doc/man3/EVP_bf_cbc.pod" ++ ], ++ "doc/man/man3/EVP_blake2b512.3" => [ ++ "doc/man3/EVP_blake2b512.pod" ++ ], ++ "doc/man/man3/EVP_camellia_128_ecb.3" => [ ++ "doc/man3/EVP_camellia_128_ecb.pod" ++ ], ++ "doc/man/man3/EVP_cast5_cbc.3" => [ ++ "doc/man3/EVP_cast5_cbc.pod" ++ ], ++ "doc/man/man3/EVP_chacha20.3" => [ ++ "doc/man3/EVP_chacha20.pod" ++ ], ++ "doc/man/man3/EVP_des_cbc.3" => [ ++ "doc/man3/EVP_des_cbc.pod" ++ ], ++ "doc/man/man3/EVP_desx_cbc.3" => [ ++ "doc/man3/EVP_desx_cbc.pod" ++ ], ++ "doc/man/man3/EVP_idea_cbc.3" => [ ++ "doc/man3/EVP_idea_cbc.pod" ++ ], ++ "doc/man/man3/EVP_md2.3" => [ ++ "doc/man3/EVP_md2.pod" ++ ], ++ "doc/man/man3/EVP_md4.3" => [ ++ "doc/man3/EVP_md4.pod" ++ ], ++ "doc/man/man3/EVP_md5.3" => [ ++ "doc/man3/EVP_md5.pod" ++ ], ++ "doc/man/man3/EVP_mdc2.3" => [ ++ "doc/man3/EVP_mdc2.pod" ++ ], ++ "doc/man/man3/EVP_rc2_cbc.3" => [ ++ "doc/man3/EVP_rc2_cbc.pod" ++ ], ++ "doc/man/man3/EVP_rc4.3" => [ ++ "doc/man3/EVP_rc4.pod" ++ ], ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3" => [ ++ "doc/man3/EVP_rc5_32_12_16_cbc.pod" ++ ], ++ "doc/man/man3/EVP_ripemd160.3" => [ ++ "doc/man3/EVP_ripemd160.pod" ++ ], ++ "doc/man/man3/EVP_seed_cbc.3" => [ ++ "doc/man3/EVP_seed_cbc.pod" ++ ], ++ "doc/man/man3/EVP_set_default_properties.3" => [ ++ "doc/man3/EVP_set_default_properties.pod" ++ ], ++ "doc/man/man3/EVP_sha1.3" => [ ++ "doc/man3/EVP_sha1.pod" ++ ], ++ "doc/man/man3/EVP_sha224.3" => [ ++ "doc/man3/EVP_sha224.pod" ++ ], ++ "doc/man/man3/EVP_sha3_224.3" => [ ++ "doc/man3/EVP_sha3_224.pod" ++ ], ++ "doc/man/man3/EVP_sm3.3" => [ ++ "doc/man3/EVP_sm3.pod" ++ ], ++ "doc/man/man3/EVP_sm4_cbc.3" => [ ++ "doc/man3/EVP_sm4_cbc.pod" ++ ], ++ "doc/man/man3/EVP_whirlpool.3" => [ ++ "doc/man3/EVP_whirlpool.pod" ++ ], ++ "doc/man/man3/HMAC.3" => [ ++ "doc/man3/HMAC.pod" ++ ], ++ "doc/man/man3/MD5.3" => [ ++ "doc/man3/MD5.pod" ++ ], ++ "doc/man/man3/MDC2_Init.3" => [ ++ "doc/man3/MDC2_Init.pod" ++ ], ++ "doc/man/man3/NCONF_new_ex.3" => [ ++ "doc/man3/NCONF_new_ex.pod" ++ ], ++ "doc/man/man3/OBJ_nid2obj.3" => [ ++ "doc/man3/OBJ_nid2obj.pod" ++ ], ++ "doc/man/man3/OCSP_REQUEST_new.3" => [ ++ "doc/man3/OCSP_REQUEST_new.pod" ++ ], ++ "doc/man/man3/OCSP_cert_to_id.3" => [ ++ "doc/man3/OCSP_cert_to_id.pod" ++ ], ++ "doc/man/man3/OCSP_request_add1_nonce.3" => [ ++ "doc/man3/OCSP_request_add1_nonce.pod" ++ ], ++ "doc/man/man3/OCSP_resp_find_status.3" => [ ++ "doc/man3/OCSP_resp_find_status.pod" ++ ], ++ "doc/man/man3/OCSP_response_status.3" => [ ++ "doc/man3/OCSP_response_status.pod" ++ ], ++ "doc/man/man3/OCSP_sendreq_new.3" => [ ++ "doc/man3/OCSP_sendreq_new.pod" ++ ], ++ "doc/man/man3/OPENSSL_Applink.3" => [ ++ "doc/man3/OPENSSL_Applink.pod" ++ ], ++ "doc/man/man3/OPENSSL_FILE.3" => [ ++ "doc/man3/OPENSSL_FILE.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3" => [ ++ "doc/man3/OPENSSL_LH_COMPFUNC.pod" ++ ], ++ "doc/man/man3/OPENSSL_LH_stats.3" => [ ++ "doc/man3/OPENSSL_LH_stats.pod" ++ ], ++ "doc/man/man3/OPENSSL_config.3" => [ ++ "doc/man3/OPENSSL_config.pod" ++ ], ++ "doc/man/man3/OPENSSL_fork_prepare.3" => [ ++ "doc/man3/OPENSSL_fork_prepare.pod" ++ ], ++ "doc/man/man3/OPENSSL_hexchar2int.3" => [ ++ "doc/man3/OPENSSL_hexchar2int.pod" ++ ], ++ "doc/man/man3/OPENSSL_ia32cap.3" => [ ++ "doc/man3/OPENSSL_ia32cap.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_crypto.3" => [ ++ "doc/man3/OPENSSL_init_crypto.pod" ++ ], ++ "doc/man/man3/OPENSSL_init_ssl.3" => [ ++ "doc/man3/OPENSSL_init_ssl.pod" ++ ], ++ "doc/man/man3/OPENSSL_instrument_bus.3" => [ ++ "doc/man3/OPENSSL_instrument_bus.pod" ++ ], ++ "doc/man/man3/OPENSSL_load_builtin_modules.3" => [ ++ "doc/man3/OPENSSL_load_builtin_modules.pod" ++ ], ++ "doc/man/man3/OPENSSL_malloc.3" => [ ++ "doc/man3/OPENSSL_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_s390xcap.3" => [ ++ "doc/man3/OPENSSL_s390xcap.pod" ++ ], ++ "doc/man/man3/OPENSSL_secure_malloc.3" => [ ++ "doc/man3/OPENSSL_secure_malloc.pod" ++ ], ++ "doc/man/man3/OPENSSL_strcasecmp.3" => [ ++ "doc/man3/OPENSSL_strcasecmp.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3" => [ ++ "doc/man3/OSSL_CMP_HDR_get0_transactionID.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3" => [ ++ "doc/man3/OSSL_CMP_ITAV_set0.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3" => [ ++ "doc/man3/OSSL_CMP_MSG_get0_header.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3" => [ ++ "doc/man3/OSSL_CMP_MSG_http_perform.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3" => [ ++ "doc/man3/OSSL_CMP_SRV_CTX_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3" => [ ++ "doc/man3/OSSL_CMP_STATUSINFO_new.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_exec_certreq.3" => [ ++ "doc/man3/OSSL_CMP_exec_certreq.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_log_open.3" => [ ++ "doc/man3/OSSL_CMP_log_open.pod" ++ ], ++ "doc/man/man3/OSSL_CMP_validate_msg.3" => [ ++ "doc/man3/OSSL_CMP_validate_msg.pod" ++ ], ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3" => [ ++ "doc/man3/OSSL_CORE_MAKE_FUNC.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_get0_tmpl.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set0_validity.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3" => [ ++ "doc/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.pod" ++ ], ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3" => [ ++ "doc/man3/OSSL_CRMF_pbmp_new.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER.3" => [ ++ "doc/man3/OSSL_DECODER.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX.3" => [ ++ "doc/man3/OSSL_DECODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_DECODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_DECODER_from_bio.3" => [ ++ "doc/man3/OSSL_DECODER_from_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER.3" => [ ++ "doc/man3/OSSL_ENCODER.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3" => [ ++ "doc/man3/OSSL_ENCODER_CTX_new_for_pkey.pod" ++ ], ++ "doc/man/man3/OSSL_ENCODER_to_bio.3" => [ ++ "doc/man3/OSSL_ENCODER_to_bio.pod" ++ ], ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3" => [ ++ "doc/man3/OSSL_ESS_check_signing_certs.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3" => [ ++ "doc/man3/OSSL_HTTP_REQ_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_parse_url.3" => [ ++ "doc/man3/OSSL_HTTP_parse_url.pod" ++ ], ++ "doc/man/man3/OSSL_HTTP_transfer.3" => [ ++ "doc/man3/OSSL_HTTP_transfer.pod" ++ ], ++ "doc/man/man3/OSSL_LIB_CTX.3" => [ ++ "doc/man3/OSSL_LIB_CTX.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM.3" => [ ++ "doc/man3/OSSL_PARAM.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_BLD.3" => [ ++ "doc/man3/OSSL_PARAM_BLD.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3" => [ ++ "doc/man3/OSSL_PARAM_allocate_from_text.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_dup.3" => [ ++ "doc/man3/OSSL_PARAM_dup.pod" ++ ], ++ "doc/man/man3/OSSL_PARAM_int.3" => [ ++ "doc/man3/OSSL_PARAM_int.pod" ++ ], ++ "doc/man/man3/OSSL_PROVIDER.3" => [ ++ "doc/man3/OSSL_PROVIDER.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_new.3" => [ ++ "doc/man3/OSSL_SELF_TEST_new.pod" ++ ], ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3" => [ ++ "doc/man3/OSSL_SELF_TEST_set_callback.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_INFO.3" => [ ++ "doc/man3/OSSL_STORE_INFO.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_LOADER.3" => [ ++ "doc/man3/OSSL_STORE_LOADER.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_SEARCH.3" => [ ++ "doc/man3/OSSL_STORE_SEARCH.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_attach.3" => [ ++ "doc/man3/OSSL_STORE_attach.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_expect.3" => [ ++ "doc/man3/OSSL_STORE_expect.pod" ++ ], ++ "doc/man/man3/OSSL_STORE_open.3" => [ ++ "doc/man3/OSSL_STORE_open.pod" ++ ], ++ "doc/man/man3/OSSL_trace_enabled.3" => [ ++ "doc/man3/OSSL_trace_enabled.pod" ++ ], ++ "doc/man/man3/OSSL_trace_get_category_num.3" => [ ++ "doc/man3/OSSL_trace_get_category_num.pod" ++ ], ++ "doc/man/man3/OSSL_trace_set_channel.3" => [ ++ "doc/man3/OSSL_trace_set_channel.pod" ++ ], ++ "doc/man/man3/OpenSSL_add_all_algorithms.3" => [ ++ "doc/man3/OpenSSL_add_all_algorithms.pod" ++ ], ++ "doc/man/man3/OpenSSL_version.3" => [ ++ "doc/man3/OpenSSL_version.pod" ++ ], ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3" => [ ++ "doc/man3/PEM_X509_INFO_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_bytes_read_bio.3" => [ ++ "doc/man3/PEM_bytes_read_bio.pod" ++ ], ++ "doc/man/man3/PEM_read.3" => [ ++ "doc/man3/PEM_read.pod" ++ ], ++ "doc/man/man3/PEM_read_CMS.3" => [ ++ "doc/man3/PEM_read_CMS.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_PrivateKey.3" => [ ++ "doc/man3/PEM_read_bio_PrivateKey.pod" ++ ], ++ "doc/man/man3/PEM_read_bio_ex.3" => [ ++ "doc/man3/PEM_read_bio_ex.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_CMS_stream.3" => [ ++ "doc/man3/PEM_write_bio_CMS_stream.pod" ++ ], ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3" => [ ++ "doc/man3/PEM_write_bio_PKCS7_stream.pod" ++ ], ++ "doc/man/man3/PKCS12_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS12_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_create_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get0_attrs.pod" ++ ], ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3" => [ ++ "doc/man3/PKCS12_SAFEBAG_get1_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3" => [ ++ "doc/man3/PKCS12_add1_attr_by_NID.pod" ++ ], ++ "doc/man/man3/PKCS12_add_CSPName_asc.3" => [ ++ "doc/man3/PKCS12_add_CSPName_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_cert.3" => [ ++ "doc/man3/PKCS12_add_cert.pod" ++ ], ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3" => [ ++ "doc/man3/PKCS12_add_friendlyname_asc.pod" ++ ], ++ "doc/man/man3/PKCS12_add_localkeyid.3" => [ ++ "doc/man3/PKCS12_add_localkeyid.pod" ++ ], ++ "doc/man/man3/PKCS12_add_safe.3" => [ ++ "doc/man3/PKCS12_add_safe.pod" ++ ], ++ "doc/man/man3/PKCS12_create.3" => [ ++ "doc/man3/PKCS12_create.pod" ++ ], ++ "doc/man/man3/PKCS12_decrypt_skey.3" => [ ++ "doc/man3/PKCS12_decrypt_skey.pod" ++ ], ++ "doc/man/man3/PKCS12_gen_mac.3" => [ ++ "doc/man3/PKCS12_gen_mac.pod" ++ ], ++ "doc/man/man3/PKCS12_get_friendlyname.3" => [ ++ "doc/man3/PKCS12_get_friendlyname.pod" ++ ], ++ "doc/man/man3/PKCS12_init.3" => [ ++ "doc/man3/PKCS12_init.pod" ++ ], ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3" => [ ++ "doc/man3/PKCS12_item_decrypt_d2i.pod" ++ ], ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3" => [ ++ "doc/man3/PKCS12_key_gen_utf8_ex.pod" ++ ], ++ "doc/man/man3/PKCS12_newpass.3" => [ ++ "doc/man3/PKCS12_newpass.pod" ++ ], ++ "doc/man/man3/PKCS12_pack_p7encdata.3" => [ ++ "doc/man3/PKCS12_pack_p7encdata.pod" ++ ], ++ "doc/man/man3/PKCS12_parse.3" => [ ++ "doc/man3/PKCS12_parse.pod" ++ ], ++ "doc/man/man3/PKCS5_PBE_keyivgen.3" => [ ++ "doc/man3/PKCS5_PBE_keyivgen.pod" ++ ], ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3" => [ ++ "doc/man3/PKCS5_PBKDF2_HMAC.pod" ++ ], ++ "doc/man/man3/PKCS7_decrypt.3" => [ ++ "doc/man3/PKCS7_decrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_encrypt.3" => [ ++ "doc/man3/PKCS7_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS7_get_octet_string.3" => [ ++ "doc/man3/PKCS7_get_octet_string.pod" ++ ], ++ "doc/man/man3/PKCS7_sign.3" => [ ++ "doc/man3/PKCS7_sign.pod" ++ ], ++ "doc/man/man3/PKCS7_sign_add_signer.3" => [ ++ "doc/man3/PKCS7_sign_add_signer.pod" ++ ], ++ "doc/man/man3/PKCS7_type_is_other.3" => [ ++ "doc/man3/PKCS7_type_is_other.pod" ++ ], ++ "doc/man/man3/PKCS7_verify.3" => [ ++ "doc/man3/PKCS7_verify.pod" ++ ], ++ "doc/man/man3/PKCS8_encrypt.3" => [ ++ "doc/man3/PKCS8_encrypt.pod" ++ ], ++ "doc/man/man3/PKCS8_pkey_add1_attr.3" => [ ++ "doc/man3/PKCS8_pkey_add1_attr.pod" ++ ], ++ "doc/man/man3/RAND_add.3" => [ ++ "doc/man3/RAND_add.pod" ++ ], ++ "doc/man/man3/RAND_bytes.3" => [ ++ "doc/man3/RAND_bytes.pod" ++ ], ++ "doc/man/man3/RAND_cleanup.3" => [ ++ "doc/man3/RAND_cleanup.pod" ++ ], ++ "doc/man/man3/RAND_egd.3" => [ ++ "doc/man3/RAND_egd.pod" ++ ], ++ "doc/man/man3/RAND_get0_primary.3" => [ ++ "doc/man3/RAND_get0_primary.pod" ++ ], ++ "doc/man/man3/RAND_load_file.3" => [ ++ "doc/man3/RAND_load_file.pod" ++ ], ++ "doc/man/man3/RAND_set_DRBG_type.3" => [ ++ "doc/man3/RAND_set_DRBG_type.pod" ++ ], ++ "doc/man/man3/RAND_set_rand_method.3" => [ ++ "doc/man3/RAND_set_rand_method.pod" ++ ], ++ "doc/man/man3/RC4_set_key.3" => [ ++ "doc/man3/RC4_set_key.pod" ++ ], ++ "doc/man/man3/RIPEMD160_Init.3" => [ ++ "doc/man3/RIPEMD160_Init.pod" ++ ], ++ "doc/man/man3/RSA_blinding_on.3" => [ ++ "doc/man3/RSA_blinding_on.pod" ++ ], ++ "doc/man/man3/RSA_check_key.3" => [ ++ "doc/man3/RSA_check_key.pod" ++ ], ++ "doc/man/man3/RSA_generate_key.3" => [ ++ "doc/man3/RSA_generate_key.pod" ++ ], ++ "doc/man/man3/RSA_get0_key.3" => [ ++ "doc/man3/RSA_get0_key.pod" ++ ], ++ "doc/man/man3/RSA_meth_new.3" => [ ++ "doc/man3/RSA_meth_new.pod" ++ ], ++ "doc/man/man3/RSA_new.3" => [ ++ "doc/man3/RSA_new.pod" ++ ], ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3" => [ ++ "doc/man3/RSA_padding_add_PKCS1_type_1.pod" ++ ], ++ "doc/man/man3/RSA_print.3" => [ ++ "doc/man3/RSA_print.pod" ++ ], ++ "doc/man/man3/RSA_private_encrypt.3" => [ ++ "doc/man3/RSA_private_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_public_encrypt.3" => [ ++ "doc/man3/RSA_public_encrypt.pod" ++ ], ++ "doc/man/man3/RSA_set_method.3" => [ ++ "doc/man3/RSA_set_method.pod" ++ ], ++ "doc/man/man3/RSA_sign.3" => [ ++ "doc/man3/RSA_sign.pod" ++ ], ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3" => [ ++ "doc/man3/RSA_sign_ASN1_OCTET_STRING.pod" ++ ], ++ "doc/man/man3/RSA_size.3" => [ ++ "doc/man3/RSA_size.pod" ++ ], ++ "doc/man/man3/SCT_new.3" => [ ++ "doc/man3/SCT_new.pod" ++ ], ++ "doc/man/man3/SCT_print.3" => [ ++ "doc/man3/SCT_print.pod" ++ ], ++ "doc/man/man3/SCT_validate.3" => [ ++ "doc/man3/SCT_validate.pod" ++ ], ++ "doc/man/man3/SHA256_Init.3" => [ ++ "doc/man3/SHA256_Init.pod" ++ ], ++ "doc/man/man3/SMIME_read_ASN1.3" => [ ++ "doc/man3/SMIME_read_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_read_CMS.3" => [ ++ "doc/man3/SMIME_read_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_read_PKCS7.3" => [ ++ "doc/man3/SMIME_read_PKCS7.pod" ++ ], ++ "doc/man/man3/SMIME_write_ASN1.3" => [ ++ "doc/man3/SMIME_write_ASN1.pod" ++ ], ++ "doc/man/man3/SMIME_write_CMS.3" => [ ++ "doc/man3/SMIME_write_CMS.pod" ++ ], ++ "doc/man/man3/SMIME_write_PKCS7.3" => [ ++ "doc/man3/SMIME_write_PKCS7.pod" ++ ], ++ "doc/man/man3/SRP_Calc_B.3" => [ ++ "doc/man3/SRP_Calc_B.pod" ++ ], ++ "doc/man/man3/SRP_VBASE_new.3" => [ ++ "doc/man3/SRP_VBASE_new.pod" ++ ], ++ "doc/man/man3/SRP_create_verifier.3" => [ ++ "doc/man3/SRP_create_verifier.pod" ++ ], ++ "doc/man/man3/SRP_user_pwd_new.3" => [ ++ "doc/man3/SRP_user_pwd_new.pod" ++ ], ++ "doc/man/man3/SSL_CIPHER_get_name.3" => [ ++ "doc/man3/SSL_CIPHER_get_name.pod" ++ ], ++ "doc/man/man3/SSL_COMP_add_compression_method.3" => [ ++ "doc/man3/SSL_COMP_add_compression_method.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_new.3" => [ ++ "doc/man3/SSL_CONF_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3" => [ ++ "doc/man3/SSL_CONF_CTX_set1_prefix.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_flags.pod" ++ ], ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3" => [ ++ "doc/man3/SSL_CONF_CTX_set_ssl_ctx.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd.3" => [ ++ "doc/man3/SSL_CONF_cmd.pod" ++ ], ++ "doc/man/man3/SSL_CONF_cmd_argv.3" => [ ++ "doc/man3/SSL_CONF_cmd_argv.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add1_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3" => [ ++ "doc/man3/SSL_CTX_add_extra_chain_cert.pod" ++ ], ++ "doc/man/man3/SSL_CTX_add_session.3" => [ ++ "doc/man3/SSL_CTX_add_session.pod" ++ ], ++ "doc/man/man3/SSL_CTX_config.3" => [ ++ "doc/man3/SSL_CTX_config.pod" ++ ], ++ "doc/man/man3/SSL_CTX_ctrl.3" => [ ++ "doc/man3/SSL_CTX_ctrl.pod" ++ ], ++ "doc/man/man3/SSL_CTX_dane_enable.3" => [ ++ "doc/man3/SSL_CTX_dane_enable.pod" ++ ], ++ "doc/man/man3/SSL_CTX_flush_sessions.3" => [ ++ "doc/man3/SSL_CTX_flush_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_free.3" => [ ++ "doc/man3/SSL_CTX_free.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get0_param.3" => [ ++ "doc/man3/SSL_CTX_get0_param.pod" ++ ], ++ "doc/man/man3/SSL_CTX_get_verify_mode.3" => [ ++ "doc/man3/SSL_CTX_get_verify_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3" => [ ++ "doc/man3/SSL_CTX_has_client_custom_ext.pod" ++ ], ++ "doc/man/man3/SSL_CTX_load_verify_locations.3" => [ ++ "doc/man3/SSL_CTX_load_verify_locations.pod" ++ ], ++ "doc/man/man3/SSL_CTX_new.3" => [ ++ "doc/man3/SSL_CTX_new.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_number.3" => [ ++ "doc/man3/SSL_CTX_sess_number.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3" => [ ++ "doc/man3/SSL_CTX_sess_set_cache_size.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3" => [ ++ "doc/man3/SSL_CTX_sess_set_get_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_sessions.3" => [ ++ "doc/man3/SSL_CTX_sessions.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set0_CA_list.3" => [ ++ "doc/man3/SSL_CTX_set0_CA_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_curves.3" => [ ++ "doc/man3/SSL_CTX_set1_curves.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3" => [ ++ "doc/man3/SSL_CTX_set1_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set1_verify_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3" => [ ++ "doc/man3/SSL_CTX_set_alpn_select_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_store.3" => [ ++ "doc/man3/SSL_CTX_set_cert_store.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3" => [ ++ "doc/man3/SSL_CTX_set_cert_verify_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_cipher_list.3" => [ ++ "doc/man3/SSL_CTX_set_cipher_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_cert_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3" => [ ++ "doc/man3/SSL_CTX_set_client_hello_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3" => [ ++ "doc/man3/SSL_CTX_set_ct_validation_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3" => [ ++ "doc/man3/SSL_CTX_set_ctlog_list_file.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3" => [ ++ "doc/man3/SSL_CTX_set_default_passwd_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3" => [ ++ "doc/man3/SSL_CTX_set_generate_session_id.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_info_callback.3" => [ ++ "doc/man3/SSL_CTX_set_info_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3" => [ ++ "doc/man3/SSL_CTX_set_keylog_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3" => [ ++ "doc/man3/SSL_CTX_set_max_cert_list.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3" => [ ++ "doc/man3/SSL_CTX_set_min_proto_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_mode.3" => [ ++ "doc/man3/SSL_CTX_set_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_msg_callback.3" => [ ++ "doc/man3/SSL_CTX_set_msg_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_num_tickets.3" => [ ++ "doc/man3/SSL_CTX_set_num_tickets.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_options.3" => [ ++ "doc/man3/SSL_CTX_set_options.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3" => [ ++ "doc/man3/SSL_CTX_set_psk_client_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quic_method.3" => [ ++ "doc/man3/SSL_CTX_set_quic_method.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3" => [ ++ "doc/man3/SSL_CTX_set_quiet_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_read_ahead.3" => [ ++ "doc/man3/SSL_CTX_set_read_ahead.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3" => [ ++ "doc/man3/SSL_CTX_set_record_padding_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_security_level.3" => [ ++ "doc/man3/SSL_CTX_set_security_level.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3" => [ ++ "doc/man3/SSL_CTX_set_session_cache_mode.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_id_context.3" => [ ++ "doc/man3/SSL_CTX_set_session_id_context.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3" => [ ++ "doc/man3/SSL_CTX_set_session_ticket_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3" => [ ++ "doc/man3/SSL_CTX_set_split_send_fragment.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_srp_password.3" => [ ++ "doc/man3/SSL_CTX_set_srp_password.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_ssl_version.3" => [ ++ "doc/man3/SSL_CTX_set_ssl_version.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3" => [ ++ "doc/man3/SSL_CTX_set_stateless_cookie_generate_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_timeout.3" => [ ++ "doc/man3/SSL_CTX_set_timeout.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_servername_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_status_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_ticket_key_cb.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3" => [ ++ "doc/man3/SSL_CTX_set_tlsext_use_srtp.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_dh_callback.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3" => [ ++ "doc/man3/SSL_CTX_set_tmp_ecdh.pod" ++ ], ++ "doc/man/man3/SSL_CTX_set_verify.3" => [ ++ "doc/man3/SSL_CTX_set_verify.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_certificate.3" => [ ++ "doc/man3/SSL_CTX_use_certificate.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3" => [ ++ "doc/man3/SSL_CTX_use_psk_identity_hint.pod" ++ ], ++ "doc/man/man3/SSL_CTX_use_serverinfo.3" => [ ++ "doc/man3/SSL_CTX_use_serverinfo.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_free.3" => [ ++ "doc/man3/SSL_SESSION_free.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_cipher.3" => [ ++ "doc/man3/SSL_SESSION_get0_cipher.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_hostname.3" => [ ++ "doc/man3/SSL_SESSION_get0_hostname.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_id_context.3" => [ ++ "doc/man3/SSL_SESSION_get0_id_context.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get0_peer.3" => [ ++ "doc/man3/SSL_SESSION_get0_peer.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_compress_id.3" => [ ++ "doc/man3/SSL_SESSION_get_compress_id.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3" => [ ++ "doc/man3/SSL_SESSION_get_protocol_version.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_get_time.3" => [ ++ "doc/man3/SSL_SESSION_get_time.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_has_ticket.3" => [ ++ "doc/man3/SSL_SESSION_has_ticket.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_is_resumable.3" => [ ++ "doc/man3/SSL_SESSION_is_resumable.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_print.3" => [ ++ "doc/man3/SSL_SESSION_print.pod" ++ ], ++ "doc/man/man3/SSL_SESSION_set1_id.3" => [ ++ "doc/man3/SSL_SESSION_set1_id.pod" ++ ], ++ "doc/man/man3/SSL_accept.3" => [ ++ "doc/man3/SSL_accept.pod" ++ ], ++ "doc/man/man3/SSL_alert_type_string.3" => [ ++ "doc/man3/SSL_alert_type_string.pod" ++ ], ++ "doc/man/man3/SSL_alloc_buffers.3" => [ ++ "doc/man3/SSL_alloc_buffers.pod" ++ ], ++ "doc/man/man3/SSL_check_chain.3" => [ ++ "doc/man3/SSL_check_chain.pod" ++ ], ++ "doc/man/man3/SSL_clear.3" => [ ++ "doc/man3/SSL_clear.pod" ++ ], ++ "doc/man/man3/SSL_connect.3" => [ ++ "doc/man3/SSL_connect.pod" ++ ], ++ "doc/man/man3/SSL_do_handshake.3" => [ ++ "doc/man3/SSL_do_handshake.pod" ++ ], ++ "doc/man/man3/SSL_export_keying_material.3" => [ ++ "doc/man3/SSL_export_keying_material.pod" ++ ], ++ "doc/man/man3/SSL_extension_supported.3" => [ ++ "doc/man3/SSL_extension_supported.pod" ++ ], ++ "doc/man/man3/SSL_free.3" => [ ++ "doc/man3/SSL_free.pod" ++ ], ++ "doc/man/man3/SSL_get0_peer_scts.3" => [ ++ "doc/man3/SSL_get0_peer_scts.pod" ++ ], ++ "doc/man/man3/SSL_get_SSL_CTX.3" => [ ++ "doc/man3/SSL_get_SSL_CTX.pod" ++ ], ++ "doc/man/man3/SSL_get_all_async_fds.3" => [ ++ "doc/man3/SSL_get_all_async_fds.pod" ++ ], ++ "doc/man/man3/SSL_get_certificate.3" => [ ++ "doc/man3/SSL_get_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_ciphers.3" => [ ++ "doc/man3/SSL_get_ciphers.pod" ++ ], ++ "doc/man/man3/SSL_get_client_random.3" => [ ++ "doc/man3/SSL_get_client_random.pod" ++ ], ++ "doc/man/man3/SSL_get_current_cipher.3" => [ ++ "doc/man3/SSL_get_current_cipher.pod" ++ ], ++ "doc/man/man3/SSL_get_default_timeout.3" => [ ++ "doc/man3/SSL_get_default_timeout.pod" ++ ], ++ "doc/man/man3/SSL_get_error.3" => [ ++ "doc/man3/SSL_get_error.pod" ++ ], ++ "doc/man/man3/SSL_get_extms_support.3" => [ ++ "doc/man3/SSL_get_extms_support.pod" ++ ], ++ "doc/man/man3/SSL_get_fd.3" => [ ++ "doc/man3/SSL_get_fd.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_cert_chain.3" => [ ++ "doc/man3/SSL_get_peer_cert_chain.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_certificate.3" => [ ++ "doc/man3/SSL_get_peer_certificate.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_signature_nid.3" => [ ++ "doc/man3/SSL_get_peer_signature_nid.pod" ++ ], ++ "doc/man/man3/SSL_get_peer_tmp_key.3" => [ ++ "doc/man3/SSL_get_peer_tmp_key.pod" ++ ], ++ "doc/man/man3/SSL_get_psk_identity.3" => [ ++ "doc/man3/SSL_get_psk_identity.pod" ++ ], ++ "doc/man/man3/SSL_get_rbio.3" => [ ++ "doc/man3/SSL_get_rbio.pod" ++ ], ++ "doc/man/man3/SSL_get_session.3" => [ ++ "doc/man3/SSL_get_session.pod" ++ ], ++ "doc/man/man3/SSL_get_shared_sigalgs.3" => [ ++ "doc/man3/SSL_get_shared_sigalgs.pod" ++ ], ++ "doc/man/man3/SSL_get_verify_result.3" => [ ++ "doc/man3/SSL_get_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_get_version.3" => [ ++ "doc/man3/SSL_get_version.pod" ++ ], ++ "doc/man/man3/SSL_group_to_name.3" => [ ++ "doc/man3/SSL_group_to_name.pod" ++ ], ++ "doc/man/man3/SSL_in_init.3" => [ ++ "doc/man3/SSL_in_init.pod" ++ ], ++ "doc/man/man3/SSL_key_update.3" => [ ++ "doc/man3/SSL_key_update.pod" ++ ], ++ "doc/man/man3/SSL_library_init.3" => [ ++ "doc/man3/SSL_library_init.pod" ++ ], ++ "doc/man/man3/SSL_load_client_CA_file.3" => [ ++ "doc/man3/SSL_load_client_CA_file.pod" ++ ], ++ "doc/man/man3/SSL_new.3" => [ ++ "doc/man3/SSL_new.pod" ++ ], ++ "doc/man/man3/SSL_pending.3" => [ ++ "doc/man3/SSL_pending.pod" ++ ], ++ "doc/man/man3/SSL_read.3" => [ ++ "doc/man3/SSL_read.pod" ++ ], ++ "doc/man/man3/SSL_read_early_data.3" => [ ++ "doc/man3/SSL_read_early_data.pod" ++ ], ++ "doc/man/man3/SSL_rstate_string.3" => [ ++ "doc/man3/SSL_rstate_string.pod" ++ ], ++ "doc/man/man3/SSL_session_reused.3" => [ ++ "doc/man3/SSL_session_reused.pod" ++ ], ++ "doc/man/man3/SSL_set1_host.3" => [ ++ "doc/man3/SSL_set1_host.pod" ++ ], ++ "doc/man/man3/SSL_set_async_callback.3" => [ ++ "doc/man3/SSL_set_async_callback.pod" ++ ], ++ "doc/man/man3/SSL_set_bio.3" => [ ++ "doc/man3/SSL_set_bio.pod" ++ ], ++ "doc/man/man3/SSL_set_connect_state.3" => [ ++ "doc/man3/SSL_set_connect_state.pod" ++ ], ++ "doc/man/man3/SSL_set_fd.3" => [ ++ "doc/man3/SSL_set_fd.pod" ++ ], ++ "doc/man/man3/SSL_set_retry_verify.3" => [ ++ "doc/man3/SSL_set_retry_verify.pod" ++ ], ++ "doc/man/man3/SSL_set_session.3" => [ ++ "doc/man3/SSL_set_session.pod" ++ ], ++ "doc/man/man3/SSL_set_shutdown.3" => [ ++ "doc/man3/SSL_set_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_set_verify_result.3" => [ ++ "doc/man3/SSL_set_verify_result.pod" ++ ], ++ "doc/man/man3/SSL_shutdown.3" => [ ++ "doc/man3/SSL_shutdown.pod" ++ ], ++ "doc/man/man3/SSL_state_string.3" => [ ++ "doc/man3/SSL_state_string.pod" ++ ], ++ "doc/man/man3/SSL_want.3" => [ ++ "doc/man3/SSL_want.pod" ++ ], ++ "doc/man/man3/SSL_write.3" => [ ++ "doc/man3/SSL_write.pod" ++ ], ++ "doc/man/man3/TS_RESP_CTX_new.3" => [ ++ "doc/man3/TS_RESP_CTX_new.pod" ++ ], ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3" => [ ++ "doc/man3/TS_VERIFY_CTX_set_certs.pod" ++ ], ++ "doc/man/man3/UI_STRING.3" => [ ++ "doc/man3/UI_STRING.pod" ++ ], ++ "doc/man/man3/UI_UTIL_read_pw.3" => [ ++ "doc/man3/UI_UTIL_read_pw.pod" ++ ], ++ "doc/man/man3/UI_create_method.3" => [ ++ "doc/man3/UI_create_method.pod" ++ ], ++ "doc/man/man3/UI_new.3" => [ ++ "doc/man3/UI_new.pod" ++ ], ++ "doc/man/man3/X509V3_get_d2i.3" => [ ++ "doc/man3/X509V3_get_d2i.pod" ++ ], ++ "doc/man/man3/X509V3_set_ctx.3" => [ ++ "doc/man3/X509V3_set_ctx.pod" ++ ], ++ "doc/man/man3/X509_ALGOR_dup.3" => [ ++ "doc/man3/X509_ALGOR_dup.pod" ++ ], ++ "doc/man/man3/X509_CRL_get0_by_serial.3" => [ ++ "doc/man3/X509_CRL_get0_by_serial.pod" ++ ], ++ "doc/man/man3/X509_EXTENSION_set_object.3" => [ ++ "doc/man3/X509_EXTENSION_set_object.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP.3" => [ ++ "doc/man3/X509_LOOKUP.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_hash_dir.3" => [ ++ "doc/man3/X509_LOOKUP_hash_dir.pod" ++ ], ++ "doc/man/man3/X509_LOOKUP_meth_new.3" => [ ++ "doc/man3/X509_LOOKUP_meth_new.pod" ++ ], ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3" => [ ++ "doc/man3/X509_NAME_ENTRY_get_object.pod" ++ ], ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3" => [ ++ "doc/man3/X509_NAME_add_entry_by_txt.pod" ++ ], ++ "doc/man/man3/X509_NAME_get0_der.3" => [ ++ "doc/man3/X509_NAME_get0_der.pod" ++ ], ++ "doc/man/man3/X509_NAME_get_index_by_NID.3" => [ ++ "doc/man3/X509_NAME_get_index_by_NID.pod" ++ ], ++ "doc/man/man3/X509_NAME_print_ex.3" => [ ++ "doc/man3/X509_NAME_print_ex.pod" ++ ], ++ "doc/man/man3/X509_PUBKEY_new.3" => [ ++ "doc/man3/X509_PUBKEY_new.pod" ++ ], ++ "doc/man/man3/X509_SIG_get0.3" => [ ++ "doc/man3/X509_SIG_get0.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_get_error.3" => [ ++ "doc/man3/X509_STORE_CTX_get_error.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_new.3" => [ ++ "doc/man3/X509_STORE_CTX_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3" => [ ++ "doc/man3/X509_STORE_CTX_set_verify_cb.pod" ++ ], ++ "doc/man/man3/X509_STORE_add_cert.3" => [ ++ "doc/man3/X509_STORE_add_cert.pod" ++ ], ++ "doc/man/man3/X509_STORE_get0_param.3" => [ ++ "doc/man3/X509_STORE_get0_param.pod" ++ ], ++ "doc/man/man3/X509_STORE_new.3" => [ ++ "doc/man3/X509_STORE_new.pod" ++ ], ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3" => [ ++ "doc/man3/X509_STORE_set_verify_cb_func.pod" ++ ], ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3" => [ ++ "doc/man3/X509_VERIFY_PARAM_set_flags.pod" ++ ], ++ "doc/man/man3/X509_add_cert.3" => [ ++ "doc/man3/X509_add_cert.pod" ++ ], ++ "doc/man/man3/X509_check_ca.3" => [ ++ "doc/man3/X509_check_ca.pod" ++ ], ++ "doc/man/man3/X509_check_host.3" => [ ++ "doc/man3/X509_check_host.pod" ++ ], ++ "doc/man/man3/X509_check_issued.3" => [ ++ "doc/man3/X509_check_issued.pod" ++ ], ++ "doc/man/man3/X509_check_private_key.3" => [ ++ "doc/man3/X509_check_private_key.pod" ++ ], ++ "doc/man/man3/X509_check_purpose.3" => [ ++ "doc/man3/X509_check_purpose.pod" ++ ], ++ "doc/man/man3/X509_cmp.3" => [ ++ "doc/man3/X509_cmp.pod" ++ ], ++ "doc/man/man3/X509_cmp_time.3" => [ ++ "doc/man3/X509_cmp_time.pod" ++ ], ++ "doc/man/man3/X509_digest.3" => [ ++ "doc/man3/X509_digest.pod" ++ ], ++ "doc/man/man3/X509_dup.3" => [ ++ "doc/man3/X509_dup.pod" ++ ], ++ "doc/man/man3/X509_get0_distinguishing_id.3" => [ ++ "doc/man3/X509_get0_distinguishing_id.pod" ++ ], ++ "doc/man/man3/X509_get0_notBefore.3" => [ ++ "doc/man3/X509_get0_notBefore.pod" ++ ], ++ "doc/man/man3/X509_get0_signature.3" => [ ++ "doc/man3/X509_get0_signature.pod" ++ ], ++ "doc/man/man3/X509_get0_uids.3" => [ ++ "doc/man3/X509_get0_uids.pod" ++ ], ++ "doc/man/man3/X509_get_extension_flags.3" => [ ++ "doc/man3/X509_get_extension_flags.pod" ++ ], ++ "doc/man/man3/X509_get_pubkey.3" => [ ++ "doc/man3/X509_get_pubkey.pod" ++ ], ++ "doc/man/man3/X509_get_serialNumber.3" => [ ++ "doc/man3/X509_get_serialNumber.pod" ++ ], ++ "doc/man/man3/X509_get_subject_name.3" => [ ++ "doc/man3/X509_get_subject_name.pod" ++ ], ++ "doc/man/man3/X509_get_version.3" => [ ++ "doc/man3/X509_get_version.pod" ++ ], ++ "doc/man/man3/X509_load_http.3" => [ ++ "doc/man3/X509_load_http.pod" ++ ], ++ "doc/man/man3/X509_new.3" => [ ++ "doc/man3/X509_new.pod" ++ ], ++ "doc/man/man3/X509_sign.3" => [ ++ "doc/man3/X509_sign.pod" ++ ], ++ "doc/man/man3/X509_verify.3" => [ ++ "doc/man3/X509_verify.pod" ++ ], ++ "doc/man/man3/X509_verify_cert.3" => [ ++ "doc/man3/X509_verify_cert.pod" ++ ], ++ "doc/man/man3/X509v3_get_ext_by_NID.3" => [ ++ "doc/man3/X509v3_get_ext_by_NID.pod" ++ ], ++ "doc/man/man3/b2i_PVK_bio_ex.3" => [ ++ "doc/man3/b2i_PVK_bio_ex.pod" ++ ], ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3" => [ ++ "doc/man3/d2i_PKCS8PrivateKey_bio.pod" ++ ], ++ "doc/man/man3/d2i_PrivateKey.3" => [ ++ "doc/man3/d2i_PrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_RSAPrivateKey.3" => [ ++ "doc/man3/d2i_RSAPrivateKey.pod" ++ ], ++ "doc/man/man3/d2i_SSL_SESSION.3" => [ ++ "doc/man3/d2i_SSL_SESSION.pod" ++ ], ++ "doc/man/man3/d2i_X509.3" => [ ++ "doc/man3/d2i_X509.pod" ++ ], ++ "doc/man/man3/i2d_CMS_bio_stream.3" => [ ++ "doc/man3/i2d_CMS_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_PKCS7_bio_stream.3" => [ ++ "doc/man3/i2d_PKCS7_bio_stream.pod" ++ ], ++ "doc/man/man3/i2d_re_X509_tbs.3" => [ ++ "doc/man3/i2d_re_X509_tbs.pod" ++ ], ++ "doc/man/man3/o2i_SCT_LIST.3" => [ ++ "doc/man3/o2i_SCT_LIST.pod" ++ ], ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" => [ ++ "doc/man3/s2i_ASN1_IA5STRING.pod" ++ ], ++ "doc/man/man5/config.5" => [ ++ "doc/man5/config.pod" ++ ], ++ "doc/man/man5/fips_config.5" => [ ++ "doc/man5/fips_config.pod" ++ ], ++ "doc/man/man5/x509v3_config.5" => [ ++ "doc/man5/x509v3_config.pod" ++ ], ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7" => [ ++ "doc/man7/EVP_ASYM_CIPHER-SM2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-AES.7" => [ ++ "doc/man7/EVP_CIPHER-AES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-ARIA.7" => [ ++ "doc/man7/EVP_CIPHER-ARIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7" => [ ++ "doc/man7/EVP_CIPHER-BLOWFISH.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7" => [ ++ "doc/man7/EVP_CIPHER-CAMELLIA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CAST.7" => [ ++ "doc/man7/EVP_CIPHER-CAST.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-CHACHA.7" => [ ++ "doc/man7/EVP_CIPHER-CHACHA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-DES.7" => [ ++ "doc/man7/EVP_CIPHER-DES.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-IDEA.7" => [ ++ "doc/man7/EVP_CIPHER-IDEA.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC2.7" => [ ++ "doc/man7/EVP_CIPHER-RC2.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC4.7" => [ ++ "doc/man7/EVP_CIPHER-RC4.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-RC5.7" => [ ++ "doc/man7/EVP_CIPHER-RC5.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SEED.7" => [ ++ "doc/man7/EVP_CIPHER-SEED.pod" ++ ], ++ "doc/man/man7/EVP_CIPHER-SM4.7" => [ ++ "doc/man7/EVP_CIPHER-SM4.pod" ++ ], ++ "doc/man/man7/EVP_KDF-HKDF.7" => [ ++ "doc/man7/EVP_KDF-HKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KB.7" => [ ++ "doc/man7/EVP_KDF-KB.pod" ++ ], ++ "doc/man/man7/EVP_KDF-KRB5KDF.7" => [ ++ "doc/man7/EVP_KDF-KRB5KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF1.7" => [ ++ "doc/man7/EVP_KDF-PBKDF1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PBKDF2.7" => [ ++ "doc/man7/EVP_KDF-PBKDF2.pod" ++ ], ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7" => [ ++ "doc/man7/EVP_KDF-PKCS12KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SCRYPT.7" => [ ++ "doc/man7/EVP_KDF-SCRYPT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SS.7" => [ ++ "doc/man7/EVP_KDF-SS.pod" ++ ], ++ "doc/man/man7/EVP_KDF-SSHKDF.7" => [ ++ "doc/man7/EVP_KDF-SSHKDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7" => [ ++ "doc/man7/EVP_KDF-TLS13_KDF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7" => [ ++ "doc/man7/EVP_KDF-TLS1_PRF.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-ASN1.7" => [ ++ "doc/man7/EVP_KDF-X942-ASN1.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7" => [ ++ "doc/man7/EVP_KDF-X942-CONCAT.pod" ++ ], ++ "doc/man/man7/EVP_KDF-X963.7" => [ ++ "doc/man7/EVP_KDF-X963.pod" ++ ], ++ "doc/man/man7/EVP_KEM-RSA.7" => [ ++ "doc/man7/EVP_KEM-RSA.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-DH.7" => [ ++ "doc/man7/EVP_KEYEXCH-DH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7" => [ ++ "doc/man7/EVP_KEYEXCH-ECDH.pod" ++ ], ++ "doc/man/man7/EVP_KEYEXCH-X25519.7" => [ ++ "doc/man7/EVP_KEYEXCH-X25519.pod" ++ ], ++ "doc/man/man7/EVP_MAC-BLAKE2.7" => [ ++ "doc/man7/EVP_MAC-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MAC-CMAC.7" => [ ++ "doc/man7/EVP_MAC-CMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-GMAC.7" => [ ++ "doc/man7/EVP_MAC-GMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-HMAC.7" => [ ++ "doc/man7/EVP_MAC-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-KMAC.7" => [ ++ "doc/man7/EVP_MAC-KMAC.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Poly1305.7" => [ ++ "doc/man7/EVP_MAC-Poly1305.pod" ++ ], ++ "doc/man/man7/EVP_MAC-Siphash.7" => [ ++ "doc/man7/EVP_MAC-Siphash.pod" ++ ], ++ "doc/man/man7/EVP_MD-BLAKE2.7" => [ ++ "doc/man7/EVP_MD-BLAKE2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD2.7" => [ ++ "doc/man7/EVP_MD-MD2.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD4.7" => [ ++ "doc/man7/EVP_MD-MD4.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5-SHA1.7" => [ ++ "doc/man7/EVP_MD-MD5-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-MD5.7" => [ ++ "doc/man7/EVP_MD-MD5.pod" ++ ], ++ "doc/man/man7/EVP_MD-MDC2.7" => [ ++ "doc/man7/EVP_MD-MDC2.pod" ++ ], ++ "doc/man/man7/EVP_MD-RIPEMD160.7" => [ ++ "doc/man7/EVP_MD-RIPEMD160.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA1.7" => [ ++ "doc/man7/EVP_MD-SHA1.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA2.7" => [ ++ "doc/man7/EVP_MD-SHA2.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHA3.7" => [ ++ "doc/man7/EVP_MD-SHA3.pod" ++ ], ++ "doc/man/man7/EVP_MD-SHAKE.7" => [ ++ "doc/man7/EVP_MD-SHAKE.pod" ++ ], ++ "doc/man/man7/EVP_MD-SM3.7" => [ ++ "doc/man7/EVP_MD-SM3.pod" ++ ], ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7" => [ ++ "doc/man7/EVP_MD-WHIRLPOOL.pod" ++ ], ++ "doc/man/man7/EVP_MD-common.7" => [ ++ "doc/man7/EVP_MD-common.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DH.7" => [ ++ "doc/man7/EVP_PKEY-DH.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-DSA.7" => [ ++ "doc/man7/EVP_PKEY-DSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-EC.7" => [ ++ "doc/man7/EVP_PKEY-EC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-FFC.7" => [ ++ "doc/man7/EVP_PKEY-FFC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-HMAC.7" => [ ++ "doc/man7/EVP_PKEY-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-RSA.7" => [ ++ "doc/man7/EVP_PKEY-RSA.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-SM2.7" => [ ++ "doc/man7/EVP_PKEY-SM2.pod" ++ ], ++ "doc/man/man7/EVP_PKEY-X25519.7" => [ ++ "doc/man7/EVP_PKEY-X25519.pod" ++ ], ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7" => [ ++ "doc/man7/EVP_RAND-CTR-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HASH-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7" => [ ++ "doc/man7/EVP_RAND-HMAC-DRBG.pod" ++ ], ++ "doc/man/man7/EVP_RAND-SEED-SRC.7" => [ ++ "doc/man7/EVP_RAND-SEED-SRC.pod" ++ ], ++ "doc/man/man7/EVP_RAND-TEST-RAND.7" => [ ++ "doc/man7/EVP_RAND-TEST-RAND.pod" ++ ], ++ "doc/man/man7/EVP_RAND.7" => [ ++ "doc/man7/EVP_RAND.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-DSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-DSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-ECDSA.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7" => [ ++ "doc/man7/EVP_SIGNATURE-ED25519.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7" => [ ++ "doc/man7/EVP_SIGNATURE-HMAC.pod" ++ ], ++ "doc/man/man7/EVP_SIGNATURE-RSA.7" => [ ++ "doc/man7/EVP_SIGNATURE-RSA.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7" => [ ++ "doc/man7/OSSL_PROVIDER-FIPS.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-base.7" => [ ++ "doc/man7/OSSL_PROVIDER-base.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-default.7" => [ ++ "doc/man7/OSSL_PROVIDER-default.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-legacy.7" => [ ++ "doc/man7/OSSL_PROVIDER-legacy.pod" ++ ], ++ "doc/man/man7/OSSL_PROVIDER-null.7" => [ ++ "doc/man7/OSSL_PROVIDER-null.pod" ++ ], ++ "doc/man/man7/RAND.7" => [ ++ "doc/man7/RAND.pod" ++ ], ++ "doc/man/man7/RSA-PSS.7" => [ ++ "doc/man7/RSA-PSS.pod" ++ ], ++ "doc/man/man7/X25519.7" => [ ++ "doc/man7/X25519.pod" ++ ], ++ "doc/man/man7/bio.7" => [ ++ "doc/man7/bio.pod" ++ ], ++ "doc/man/man7/crypto.7" => [ ++ "doc/man7/crypto.pod" ++ ], ++ "doc/man/man7/ct.7" => [ ++ "doc/man7/ct.pod" ++ ], ++ "doc/man/man7/des_modes.7" => [ ++ "doc/man7/des_modes.pod" ++ ], ++ "doc/man/man7/evp.7" => [ ++ "doc/man7/evp.pod" ++ ], ++ "doc/man/man7/fips_module.7" => [ ++ "doc/man7/fips_module.pod" ++ ], ++ "doc/man/man7/life_cycle-cipher.7" => [ ++ "doc/man7/life_cycle-cipher.pod" ++ ], ++ "doc/man/man7/life_cycle-digest.7" => [ ++ "doc/man7/life_cycle-digest.pod" ++ ], ++ "doc/man/man7/life_cycle-kdf.7" => [ ++ "doc/man7/life_cycle-kdf.pod" ++ ], ++ "doc/man/man7/life_cycle-mac.7" => [ ++ "doc/man7/life_cycle-mac.pod" ++ ], ++ "doc/man/man7/life_cycle-pkey.7" => [ ++ "doc/man7/life_cycle-pkey.pod" ++ ], ++ "doc/man/man7/life_cycle-rand.7" => [ ++ "doc/man7/life_cycle-rand.pod" ++ ], ++ "doc/man/man7/migration_guide.7" => [ ++ "doc/man7/migration_guide.pod" ++ ], ++ "doc/man/man7/openssl-core.h.7" => [ ++ "doc/man7/openssl-core.h.pod" ++ ], ++ "doc/man/man7/openssl-core_dispatch.h.7" => [ ++ "doc/man7/openssl-core_dispatch.h.pod" ++ ], ++ "doc/man/man7/openssl-core_names.h.7" => [ ++ "doc/man7/openssl-core_names.h.pod" ++ ], ++ "doc/man/man7/openssl-env.7" => [ ++ "doc/man7/openssl-env.pod" ++ ], ++ "doc/man/man7/openssl-glossary.7" => [ ++ "doc/man7/openssl-glossary.pod" ++ ], ++ "doc/man/man7/openssl-threads.7" => [ ++ "doc/man7/openssl-threads.pod" ++ ], ++ "doc/man/man7/openssl_user_macros.7" => [ ++ "doc/man7/openssl_user_macros.pod" ++ ], ++ "doc/man/man7/ossl_store-file.7" => [ ++ "doc/man7/ossl_store-file.pod" ++ ], ++ "doc/man/man7/ossl_store.7" => [ ++ "doc/man7/ossl_store.pod" ++ ], ++ "doc/man/man7/passphrase-encoding.7" => [ ++ "doc/man7/passphrase-encoding.pod" ++ ], ++ "doc/man/man7/property.7" => [ ++ "doc/man7/property.pod" ++ ], ++ "doc/man/man7/provider-asym_cipher.7" => [ ++ "doc/man7/provider-asym_cipher.pod" ++ ], ++ "doc/man/man7/provider-base.7" => [ ++ "doc/man7/provider-base.pod" ++ ], ++ "doc/man/man7/provider-cipher.7" => [ ++ "doc/man7/provider-cipher.pod" ++ ], ++ "doc/man/man7/provider-decoder.7" => [ ++ "doc/man7/provider-decoder.pod" ++ ], ++ "doc/man/man7/provider-digest.7" => [ ++ "doc/man7/provider-digest.pod" ++ ], ++ "doc/man/man7/provider-encoder.7" => [ ++ "doc/man7/provider-encoder.pod" ++ ], ++ "doc/man/man7/provider-kdf.7" => [ ++ "doc/man7/provider-kdf.pod" ++ ], ++ "doc/man/man7/provider-kem.7" => [ ++ "doc/man7/provider-kem.pod" ++ ], ++ "doc/man/man7/provider-keyexch.7" => [ ++ "doc/man7/provider-keyexch.pod" ++ ], ++ "doc/man/man7/provider-keymgmt.7" => [ ++ "doc/man7/provider-keymgmt.pod" ++ ], ++ "doc/man/man7/provider-mac.7" => [ ++ "doc/man7/provider-mac.pod" ++ ], ++ "doc/man/man7/provider-object.7" => [ ++ "doc/man7/provider-object.pod" ++ ], ++ "doc/man/man7/provider-rand.7" => [ ++ "doc/man7/provider-rand.pod" ++ ], ++ "doc/man/man7/provider-signature.7" => [ ++ "doc/man7/provider-signature.pod" ++ ], ++ "doc/man/man7/provider-storemgmt.7" => [ ++ "doc/man7/provider-storemgmt.pod" ++ ], ++ "doc/man/man7/provider.7" => [ ++ "doc/man7/provider.pod" ++ ], ++ "doc/man/man7/proxy-certificates.7" => [ ++ "doc/man7/proxy-certificates.pod" ++ ], ++ "doc/man/man7/ssl.7" => [ ++ "doc/man7/ssl.pod" ++ ], ++ "doc/man/man7/x509.7" => [ ++ "doc/man7/x509.pod" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc/man1/openssl-asn1parse.pod.in" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc/man1/openssl-ca.pod.in" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc/man1/openssl-ciphers.pod.in" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc/man1/openssl-cmds.pod.in" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc/man1/openssl-cmp.pod.in" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc/man1/openssl-cms.pod.in" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc/man1/openssl-crl.pod.in" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc/man1/openssl-crl2pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc/man1/openssl-dgst.pod.in" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc/man1/openssl-dhparam.pod.in" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc/man1/openssl-dsa.pod.in" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc/man1/openssl-dsaparam.pod.in" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc/man1/openssl-ec.pod.in" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc/man1/openssl-ecparam.pod.in" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc/man1/openssl-enc.pod.in" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc/man1/openssl-engine.pod.in" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc/man1/openssl-errstr.pod.in" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc/man1/openssl-fipsinstall.pod.in" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc/man1/openssl-gendsa.pod.in" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc/man1/openssl-genpkey.pod.in" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc/man1/openssl-genrsa.pod.in" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc/man1/openssl-info.pod.in" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc/man1/openssl-kdf.pod.in" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc/man1/openssl-list.pod.in" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc/man1/openssl-mac.pod.in" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc/man1/openssl-nseq.pod.in" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc/man1/openssl-ocsp.pod.in" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc/man1/openssl-passwd.pod.in" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc/man1/openssl-pkcs12.pod.in" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc/man1/openssl-pkcs7.pod.in" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc/man1/openssl-pkcs8.pod.in" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc/man1/openssl-pkey.pod.in" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc/man1/openssl-pkeyparam.pod.in" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc/man1/openssl-pkeyutl.pod.in" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc/man1/openssl-prime.pod.in" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc/man1/openssl-rand.pod.in" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc/man1/openssl-rehash.pod.in" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc/man1/openssl-req.pod.in" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc/man1/openssl-rsa.pod.in" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc/man1/openssl-rsautl.pod.in" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc/man1/openssl-s_client.pod.in" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc/man1/openssl-s_server.pod.in" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc/man1/openssl-s_time.pod.in" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc/man1/openssl-sess_id.pod.in" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc/man1/openssl-smime.pod.in" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc/man1/openssl-speed.pod.in" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc/man1/openssl-spkac.pod.in" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc/man1/openssl-srp.pod.in" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc/man1/openssl-storeutl.pod.in" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc/man1/openssl-ts.pod.in" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc/man1/openssl-verify.pod.in" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc/man1/openssl-version.pod.in" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc/man1/openssl-x509.pod.in" ++ ], ++ "doc/man7/openssl_user_macros.pod" => [ ++ "doc/man7/openssl_user_macros.pod.in" ++ ], ++ "engines/e_padlock-x86.S" => [ ++ "engines/asm/e_padlock-x86.pl" ++ ], ++ "engines/e_padlock-x86_64.s" => [ ++ "engines/asm/e_padlock-x86_64.pl" ++ ], ++ "include/crypto/bn_conf.h" => [ ++ "include/crypto/bn_conf.h.in" ++ ], ++ "include/crypto/dso_conf.h" => [ ++ "include/crypto/dso_conf.h.in" ++ ], ++ "include/openssl/asn1.h" => [ ++ "include/openssl/asn1.h.in" ++ ], ++ "include/openssl/asn1t.h" => [ ++ "include/openssl/asn1t.h.in" ++ ], ++ "include/openssl/bio.h" => [ ++ "include/openssl/bio.h.in" ++ ], ++ "include/openssl/cmp.h" => [ ++ "include/openssl/cmp.h.in" ++ ], ++ "include/openssl/cms.h" => [ ++ "include/openssl/cms.h.in" ++ ], ++ "include/openssl/conf.h" => [ ++ "include/openssl/conf.h.in" ++ ], ++ "include/openssl/configuration.h" => [ ++ "include/openssl/configuration.h.in" ++ ], ++ "include/openssl/crmf.h" => [ ++ "include/openssl/crmf.h.in" ++ ], ++ "include/openssl/crypto.h" => [ ++ "include/openssl/crypto.h.in" ++ ], ++ "include/openssl/ct.h" => [ ++ "include/openssl/ct.h.in" ++ ], ++ "include/openssl/err.h" => [ ++ "include/openssl/err.h.in" ++ ], ++ "include/openssl/ess.h" => [ ++ "include/openssl/ess.h.in" ++ ], ++ "include/openssl/fipskey.h" => [ ++ "include/openssl/fipskey.h.in" ++ ], ++ "include/openssl/lhash.h" => [ ++ "include/openssl/lhash.h.in" ++ ], ++ "include/openssl/ocsp.h" => [ ++ "include/openssl/ocsp.h.in" ++ ], ++ "include/openssl/opensslv.h" => [ ++ "include/openssl/opensslv.h.in" ++ ], ++ "include/openssl/pkcs12.h" => [ ++ "include/openssl/pkcs12.h.in" ++ ], ++ "include/openssl/pkcs7.h" => [ ++ "include/openssl/pkcs7.h.in" ++ ], ++ "include/openssl/safestack.h" => [ ++ "include/openssl/safestack.h.in" ++ ], ++ "include/openssl/srp.h" => [ ++ "include/openssl/srp.h.in" ++ ], ++ "include/openssl/ssl.h" => [ ++ "include/openssl/ssl.h.in" ++ ], ++ "include/openssl/ui.h" => [ ++ "include/openssl/ui.h.in" ++ ], ++ "include/openssl/x509.h" => [ ++ "include/openssl/x509.h.in" ++ ], ++ "include/openssl/x509_vfy.h" => [ ++ "include/openssl/x509_vfy.h.in" ++ ], ++ "include/openssl/x509v3.h" => [ ++ "include/openssl/x509v3.h.in" ++ ], ++ "libcrypto.ld" => [ ++ "util/libcrypto.num", ++ "libcrypto" ++ ], ++ "libssl.ld" => [ ++ "util/libssl.num", ++ "libssl" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der/der_digests_gen.c.in" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der/der_dsa_gen.c.in" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der/der_ec_gen.c.in" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der/der_ecx_gen.c.in" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der/der_rsa_gen.c.in" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der/der_sm2_gen.c.in" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der/der_wrap_gen.c.in" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/include/prov/der_digests.h.in" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/include/prov/der_dsa.h.in" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/include/prov/der_ec.h.in" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/include/prov/der_ecx.h.in" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/include/prov/der_rsa.h.in" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/include/prov/der_sm2.h.in" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/include/prov/der_wrap.h.in" ++ ], ++ "providers/fips.ld" => [ ++ "util/providers.num" ++ ], ++ "providers/fipsmodule.cnf" => [ ++ "util/mk-fipsmodule-cnf.pl", ++ "-module", ++ "\$(FIPSMODULE)", ++ "-section_name", ++ "fips_sect", ++ "-key", ++ "\$(FIPSKEY)" ++ ], ++ "providers/legacy.ld" => [ ++ "util/providers.num" ++ ], ++ "test/buildtest_aes.c" => [ ++ "test/generate_buildtest.pl", ++ "aes" ++ ], ++ "test/buildtest_async.c" => [ ++ "test/generate_buildtest.pl", ++ "async" ++ ], ++ "test/buildtest_blowfish.c" => [ ++ "test/generate_buildtest.pl", ++ "blowfish" ++ ], ++ "test/buildtest_bn.c" => [ ++ "test/generate_buildtest.pl", ++ "bn" ++ ], ++ "test/buildtest_buffer.c" => [ ++ "test/generate_buildtest.pl", ++ "buffer" ++ ], ++ "test/buildtest_camellia.c" => [ ++ "test/generate_buildtest.pl", ++ "camellia" ++ ], ++ "test/buildtest_cast.c" => [ ++ "test/generate_buildtest.pl", ++ "cast" ++ ], ++ "test/buildtest_cmac.c" => [ ++ "test/generate_buildtest.pl", ++ "cmac" ++ ], ++ "test/buildtest_cmp_util.c" => [ ++ "test/generate_buildtest.pl", ++ "cmp_util" ++ ], ++ "test/buildtest_conf_api.c" => [ ++ "test/generate_buildtest.pl", ++ "conf_api" ++ ], ++ "test/buildtest_conftypes.c" => [ ++ "test/generate_buildtest.pl", ++ "conftypes" ++ ], ++ "test/buildtest_core.c" => [ ++ "test/generate_buildtest.pl", ++ "core" ++ ], ++ "test/buildtest_core_dispatch.c" => [ ++ "test/generate_buildtest.pl", ++ "core_dispatch" ++ ], ++ "test/buildtest_core_names.c" => [ ++ "test/generate_buildtest.pl", ++ "core_names" ++ ], ++ "test/buildtest_core_object.c" => [ ++ "test/generate_buildtest.pl", ++ "core_object" ++ ], ++ "test/buildtest_cryptoerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "cryptoerr_legacy" ++ ], ++ "test/buildtest_decoder.c" => [ ++ "test/generate_buildtest.pl", ++ "decoder" ++ ], ++ "test/buildtest_des.c" => [ ++ "test/generate_buildtest.pl", ++ "des" ++ ], ++ "test/buildtest_dh.c" => [ ++ "test/generate_buildtest.pl", ++ "dh" ++ ], ++ "test/buildtest_dsa.c" => [ ++ "test/generate_buildtest.pl", ++ "dsa" ++ ], ++ "test/buildtest_dtls1.c" => [ ++ "test/generate_buildtest.pl", ++ "dtls1" ++ ], ++ "test/buildtest_e_os2.c" => [ ++ "test/generate_buildtest.pl", ++ "e_os2" ++ ], ++ "test/buildtest_ebcdic.c" => [ ++ "test/generate_buildtest.pl", ++ "ebcdic" ++ ], ++ "test/buildtest_ec.c" => [ ++ "test/generate_buildtest.pl", ++ "ec" ++ ], ++ "test/buildtest_ecdh.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdh" ++ ], ++ "test/buildtest_ecdsa.c" => [ ++ "test/generate_buildtest.pl", ++ "ecdsa" ++ ], ++ "test/buildtest_encoder.c" => [ ++ "test/generate_buildtest.pl", ++ "encoder" ++ ], ++ "test/buildtest_engine.c" => [ ++ "test/generate_buildtest.pl", ++ "engine" ++ ], ++ "test/buildtest_evp.c" => [ ++ "test/generate_buildtest.pl", ++ "evp" ++ ], ++ "test/buildtest_fips_names.c" => [ ++ "test/generate_buildtest.pl", ++ "fips_names" ++ ], ++ "test/buildtest_hmac.c" => [ ++ "test/generate_buildtest.pl", ++ "hmac" ++ ], ++ "test/buildtest_http.c" => [ ++ "test/generate_buildtest.pl", ++ "http" ++ ], ++ "test/buildtest_idea.c" => [ ++ "test/generate_buildtest.pl", ++ "idea" ++ ], ++ "test/buildtest_kdf.c" => [ ++ "test/generate_buildtest.pl", ++ "kdf" ++ ], ++ "test/buildtest_macros.c" => [ ++ "test/generate_buildtest.pl", ++ "macros" ++ ], ++ "test/buildtest_md4.c" => [ ++ "test/generate_buildtest.pl", ++ "md4" ++ ], ++ "test/buildtest_md5.c" => [ ++ "test/generate_buildtest.pl", ++ "md5" ++ ], ++ "test/buildtest_mdc2.c" => [ ++ "test/generate_buildtest.pl", ++ "mdc2" ++ ], ++ "test/buildtest_modes.c" => [ ++ "test/generate_buildtest.pl", ++ "modes" ++ ], ++ "test/buildtest_obj_mac.c" => [ ++ "test/generate_buildtest.pl", ++ "obj_mac" ++ ], ++ "test/buildtest_objects.c" => [ ++ "test/generate_buildtest.pl", ++ "objects" ++ ], ++ "test/buildtest_ossl_typ.c" => [ ++ "test/generate_buildtest.pl", ++ "ossl_typ" ++ ], ++ "test/buildtest_param_build.c" => [ ++ "test/generate_buildtest.pl", ++ "param_build" ++ ], ++ "test/buildtest_params.c" => [ ++ "test/generate_buildtest.pl", ++ "params" ++ ], ++ "test/buildtest_pem.c" => [ ++ "test/generate_buildtest.pl", ++ "pem" ++ ], ++ "test/buildtest_pem2.c" => [ ++ "test/generate_buildtest.pl", ++ "pem2" ++ ], ++ "test/buildtest_prov_ssl.c" => [ ++ "test/generate_buildtest.pl", ++ "prov_ssl" ++ ], ++ "test/buildtest_provider.c" => [ ++ "test/generate_buildtest.pl", ++ "provider" ++ ], ++ "test/buildtest_quic.c" => [ ++ "test/generate_buildtest.pl", ++ "quic" ++ ], ++ "test/buildtest_rand.c" => [ ++ "test/generate_buildtest.pl", ++ "rand" ++ ], ++ "test/buildtest_rc2.c" => [ ++ "test/generate_buildtest.pl", ++ "rc2" ++ ], ++ "test/buildtest_rc4.c" => [ ++ "test/generate_buildtest.pl", ++ "rc4" ++ ], ++ "test/buildtest_ripemd.c" => [ ++ "test/generate_buildtest.pl", ++ "ripemd" ++ ], ++ "test/buildtest_rsa.c" => [ ++ "test/generate_buildtest.pl", ++ "rsa" ++ ], ++ "test/buildtest_seed.c" => [ ++ "test/generate_buildtest.pl", ++ "seed" ++ ], ++ "test/buildtest_self_test.c" => [ ++ "test/generate_buildtest.pl", ++ "self_test" ++ ], ++ "test/buildtest_sha.c" => [ ++ "test/generate_buildtest.pl", ++ "sha" ++ ], ++ "test/buildtest_srtp.c" => [ ++ "test/generate_buildtest.pl", ++ "srtp" ++ ], ++ "test/buildtest_ssl2.c" => [ ++ "test/generate_buildtest.pl", ++ "ssl2" ++ ], ++ "test/buildtest_sslerr_legacy.c" => [ ++ "test/generate_buildtest.pl", ++ "sslerr_legacy" ++ ], ++ "test/buildtest_stack.c" => [ ++ "test/generate_buildtest.pl", ++ "stack" ++ ], ++ "test/buildtest_store.c" => [ ++ "test/generate_buildtest.pl", ++ "store" ++ ], ++ "test/buildtest_symhacks.c" => [ ++ "test/generate_buildtest.pl", ++ "symhacks" ++ ], ++ "test/buildtest_tls1.c" => [ ++ "test/generate_buildtest.pl", ++ "tls1" ++ ], ++ "test/buildtest_ts.c" => [ ++ "test/generate_buildtest.pl", ++ "ts" ++ ], ++ "test/buildtest_txt_db.c" => [ ++ "test/generate_buildtest.pl", ++ "txt_db" ++ ], ++ "test/buildtest_types.c" => [ ++ "test/generate_buildtest.pl", ++ "types" ++ ], ++ "test/buildtest_whrlpool.c" => [ ++ "test/generate_buildtest.pl", ++ "whrlpool" ++ ], ++ "test/p_test.ld" => [ ++ "util/providers.num" ++ ], ++ "test/provider_internal_test.cnf" => [ ++ "test/provider_internal_test.cnf.in" ++ ] ++ }, ++ "htmldocs" => { ++ "man1" => [ ++ "doc/html/man1/CA.pl.html", ++ "doc/html/man1/openssl-asn1parse.html", ++ "doc/html/man1/openssl-ca.html", ++ "doc/html/man1/openssl-ciphers.html", ++ "doc/html/man1/openssl-cmds.html", ++ "doc/html/man1/openssl-cmp.html", ++ "doc/html/man1/openssl-cms.html", ++ "doc/html/man1/openssl-crl.html", ++ "doc/html/man1/openssl-crl2pkcs7.html", ++ "doc/html/man1/openssl-dgst.html", ++ "doc/html/man1/openssl-dhparam.html", ++ "doc/html/man1/openssl-dsa.html", ++ "doc/html/man1/openssl-dsaparam.html", ++ "doc/html/man1/openssl-ec.html", ++ "doc/html/man1/openssl-ecparam.html", ++ "doc/html/man1/openssl-enc.html", ++ "doc/html/man1/openssl-engine.html", ++ "doc/html/man1/openssl-errstr.html", ++ "doc/html/man1/openssl-fipsinstall.html", ++ "doc/html/man1/openssl-format-options.html", ++ "doc/html/man1/openssl-gendsa.html", ++ "doc/html/man1/openssl-genpkey.html", ++ "doc/html/man1/openssl-genrsa.html", ++ "doc/html/man1/openssl-info.html", ++ "doc/html/man1/openssl-kdf.html", ++ "doc/html/man1/openssl-list.html", ++ "doc/html/man1/openssl-mac.html", ++ "doc/html/man1/openssl-namedisplay-options.html", ++ "doc/html/man1/openssl-nseq.html", ++ "doc/html/man1/openssl-ocsp.html", ++ "doc/html/man1/openssl-passphrase-options.html", ++ "doc/html/man1/openssl-passwd.html", ++ "doc/html/man1/openssl-pkcs12.html", ++ "doc/html/man1/openssl-pkcs7.html", ++ "doc/html/man1/openssl-pkcs8.html", ++ "doc/html/man1/openssl-pkey.html", ++ "doc/html/man1/openssl-pkeyparam.html", ++ "doc/html/man1/openssl-pkeyutl.html", ++ "doc/html/man1/openssl-prime.html", ++ "doc/html/man1/openssl-rand.html", ++ "doc/html/man1/openssl-rehash.html", ++ "doc/html/man1/openssl-req.html", ++ "doc/html/man1/openssl-rsa.html", ++ "doc/html/man1/openssl-rsautl.html", ++ "doc/html/man1/openssl-s_client.html", ++ "doc/html/man1/openssl-s_server.html", ++ "doc/html/man1/openssl-s_time.html", ++ "doc/html/man1/openssl-sess_id.html", ++ "doc/html/man1/openssl-smime.html", ++ "doc/html/man1/openssl-speed.html", ++ "doc/html/man1/openssl-spkac.html", ++ "doc/html/man1/openssl-srp.html", ++ "doc/html/man1/openssl-storeutl.html", ++ "doc/html/man1/openssl-ts.html", ++ "doc/html/man1/openssl-verification-options.html", ++ "doc/html/man1/openssl-verify.html", ++ "doc/html/man1/openssl-version.html", ++ "doc/html/man1/openssl-x509.html", ++ "doc/html/man1/openssl.html", ++ "doc/html/man1/tsget.html" ++ ], ++ "man3" => [ ++ "doc/html/man3/ADMISSIONS.html", ++ "doc/html/man3/ASN1_EXTERN_FUNCS.html", ++ "doc/html/man3/ASN1_INTEGER_get_int64.html", ++ "doc/html/man3/ASN1_INTEGER_new.html", ++ "doc/html/man3/ASN1_ITEM_lookup.html", ++ "doc/html/man3/ASN1_OBJECT_new.html", ++ "doc/html/man3/ASN1_STRING_TABLE_add.html", ++ "doc/html/man3/ASN1_STRING_length.html", ++ "doc/html/man3/ASN1_STRING_new.html", ++ "doc/html/man3/ASN1_STRING_print_ex.html", ++ "doc/html/man3/ASN1_TIME_set.html", ++ "doc/html/man3/ASN1_TYPE_get.html", ++ "doc/html/man3/ASN1_aux_cb.html", ++ "doc/html/man3/ASN1_generate_nconf.html", ++ "doc/html/man3/ASN1_item_d2i_bio.html", ++ "doc/html/man3/ASN1_item_new.html", ++ "doc/html/man3/ASN1_item_sign.html", ++ "doc/html/man3/ASYNC_WAIT_CTX_new.html", ++ "doc/html/man3/ASYNC_start_job.html", ++ "doc/html/man3/BF_encrypt.html", ++ "doc/html/man3/BIO_ADDR.html", ++ "doc/html/man3/BIO_ADDRINFO.html", ++ "doc/html/man3/BIO_connect.html", ++ "doc/html/man3/BIO_ctrl.html", ++ "doc/html/man3/BIO_f_base64.html", ++ "doc/html/man3/BIO_f_buffer.html", ++ "doc/html/man3/BIO_f_cipher.html", ++ "doc/html/man3/BIO_f_md.html", ++ "doc/html/man3/BIO_f_null.html", ++ "doc/html/man3/BIO_f_prefix.html", ++ "doc/html/man3/BIO_f_readbuffer.html", ++ "doc/html/man3/BIO_f_ssl.html", ++ "doc/html/man3/BIO_find_type.html", ++ "doc/html/man3/BIO_get_data.html", ++ "doc/html/man3/BIO_get_ex_new_index.html", ++ "doc/html/man3/BIO_meth_new.html", ++ "doc/html/man3/BIO_new.html", ++ "doc/html/man3/BIO_new_CMS.html", ++ "doc/html/man3/BIO_parse_hostserv.html", ++ "doc/html/man3/BIO_printf.html", ++ "doc/html/man3/BIO_push.html", ++ "doc/html/man3/BIO_read.html", ++ "doc/html/man3/BIO_s_accept.html", ++ "doc/html/man3/BIO_s_bio.html", ++ "doc/html/man3/BIO_s_connect.html", ++ "doc/html/man3/BIO_s_core.html", ++ "doc/html/man3/BIO_s_fd.html", ++ "doc/html/man3/BIO_s_file.html", ++ "doc/html/man3/BIO_s_mem.html", ++ "doc/html/man3/BIO_s_null.html", ++ "doc/html/man3/BIO_s_socket.html", ++ "doc/html/man3/BIO_set_callback.html", ++ "doc/html/man3/BIO_should_retry.html", ++ "doc/html/man3/BIO_socket_wait.html", ++ "doc/html/man3/BN_BLINDING_new.html", ++ "doc/html/man3/BN_CTX_new.html", ++ "doc/html/man3/BN_CTX_start.html", ++ "doc/html/man3/BN_add.html", ++ "doc/html/man3/BN_add_word.html", ++ "doc/html/man3/BN_bn2bin.html", ++ "doc/html/man3/BN_cmp.html", ++ "doc/html/man3/BN_copy.html", ++ "doc/html/man3/BN_generate_prime.html", ++ "doc/html/man3/BN_mod_exp_mont.html", ++ "doc/html/man3/BN_mod_inverse.html", ++ "doc/html/man3/BN_mod_mul_montgomery.html", ++ "doc/html/man3/BN_mod_mul_reciprocal.html", ++ "doc/html/man3/BN_new.html", ++ "doc/html/man3/BN_num_bytes.html", ++ "doc/html/man3/BN_rand.html", ++ "doc/html/man3/BN_security_bits.html", ++ "doc/html/man3/BN_set_bit.html", ++ "doc/html/man3/BN_swap.html", ++ "doc/html/man3/BN_zero.html", ++ "doc/html/man3/BUF_MEM_new.html", ++ "doc/html/man3/CMS_EncryptedData_decrypt.html", ++ "doc/html/man3/CMS_EncryptedData_encrypt.html", ++ "doc/html/man3/CMS_EnvelopedData_create.html", ++ "doc/html/man3/CMS_add0_cert.html", ++ "doc/html/man3/CMS_add1_recipient_cert.html", ++ "doc/html/man3/CMS_add1_signer.html", ++ "doc/html/man3/CMS_compress.html", ++ "doc/html/man3/CMS_data_create.html", ++ "doc/html/man3/CMS_decrypt.html", ++ "doc/html/man3/CMS_digest_create.html", ++ "doc/html/man3/CMS_encrypt.html", ++ "doc/html/man3/CMS_final.html", ++ "doc/html/man3/CMS_get0_RecipientInfos.html", ++ "doc/html/man3/CMS_get0_SignerInfos.html", ++ "doc/html/man3/CMS_get0_type.html", ++ "doc/html/man3/CMS_get1_ReceiptRequest.html", ++ "doc/html/man3/CMS_sign.html", ++ "doc/html/man3/CMS_sign_receipt.html", ++ "doc/html/man3/CMS_uncompress.html", ++ "doc/html/man3/CMS_verify.html", ++ "doc/html/man3/CMS_verify_receipt.html", ++ "doc/html/man3/CONF_modules_free.html", ++ "doc/html/man3/CONF_modules_load_file.html", ++ "doc/html/man3/CRYPTO_THREAD_run_once.html", ++ "doc/html/man3/CRYPTO_get_ex_new_index.html", ++ "doc/html/man3/CRYPTO_memcmp.html", ++ "doc/html/man3/CTLOG_STORE_get0_log_by_id.html", ++ "doc/html/man3/CTLOG_STORE_new.html", ++ "doc/html/man3/CTLOG_new.html", ++ "doc/html/man3/CT_POLICY_EVAL_CTX_new.html", ++ "doc/html/man3/DEFINE_STACK_OF.html", ++ "doc/html/man3/DES_random_key.html", ++ "doc/html/man3/DH_generate_key.html", ++ "doc/html/man3/DH_generate_parameters.html", ++ "doc/html/man3/DH_get0_pqg.html", ++ "doc/html/man3/DH_get_1024_160.html", ++ "doc/html/man3/DH_meth_new.html", ++ "doc/html/man3/DH_new.html", ++ "doc/html/man3/DH_new_by_nid.html", ++ "doc/html/man3/DH_set_method.html", ++ "doc/html/man3/DH_size.html", ++ "doc/html/man3/DSA_SIG_new.html", ++ "doc/html/man3/DSA_do_sign.html", ++ "doc/html/man3/DSA_dup_DH.html", ++ "doc/html/man3/DSA_generate_key.html", ++ "doc/html/man3/DSA_generate_parameters.html", ++ "doc/html/man3/DSA_get0_pqg.html", ++ "doc/html/man3/DSA_meth_new.html", ++ "doc/html/man3/DSA_new.html", ++ "doc/html/man3/DSA_set_method.html", ++ "doc/html/man3/DSA_sign.html", ++ "doc/html/man3/DSA_size.html", ++ "doc/html/man3/DTLS_get_data_mtu.html", ++ "doc/html/man3/DTLS_set_timer_cb.html", ++ "doc/html/man3/DTLSv1_listen.html", ++ "doc/html/man3/ECDSA_SIG_new.html", ++ "doc/html/man3/ECPKParameters_print.html", ++ "doc/html/man3/EC_GFp_simple_method.html", ++ "doc/html/man3/EC_GROUP_copy.html", ++ "doc/html/man3/EC_GROUP_new.html", ++ "doc/html/man3/EC_KEY_get_enc_flags.html", ++ "doc/html/man3/EC_KEY_new.html", ++ "doc/html/man3/EC_POINT_add.html", ++ "doc/html/man3/EC_POINT_new.html", ++ "doc/html/man3/ENGINE_add.html", ++ "doc/html/man3/ERR_GET_LIB.html", ++ "doc/html/man3/ERR_clear_error.html", ++ "doc/html/man3/ERR_error_string.html", ++ "doc/html/man3/ERR_get_error.html", ++ "doc/html/man3/ERR_load_crypto_strings.html", ++ "doc/html/man3/ERR_load_strings.html", ++ "doc/html/man3/ERR_new.html", ++ "doc/html/man3/ERR_print_errors.html", ++ "doc/html/man3/ERR_put_error.html", ++ "doc/html/man3/ERR_remove_state.html", ++ "doc/html/man3/ERR_set_mark.html", ++ "doc/html/man3/EVP_ASYM_CIPHER_free.html", ++ "doc/html/man3/EVP_BytesToKey.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_cipher_data.html", ++ "doc/html/man3/EVP_CIPHER_CTX_get_original_iv.html", ++ "doc/html/man3/EVP_CIPHER_meth_new.html", ++ "doc/html/man3/EVP_DigestInit.html", ++ "doc/html/man3/EVP_DigestSignInit.html", ++ "doc/html/man3/EVP_DigestVerifyInit.html", ++ "doc/html/man3/EVP_EncodeInit.html", ++ "doc/html/man3/EVP_EncryptInit.html", ++ "doc/html/man3/EVP_KDF.html", ++ "doc/html/man3/EVP_KEM_free.html", ++ "doc/html/man3/EVP_KEYEXCH_free.html", ++ "doc/html/man3/EVP_KEYMGMT.html", ++ "doc/html/man3/EVP_MAC.html", ++ "doc/html/man3/EVP_MD_meth_new.html", ++ "doc/html/man3/EVP_OpenInit.html", ++ "doc/html/man3/EVP_PBE_CipherInit.html", ++ "doc/html/man3/EVP_PKEY2PKCS8.html", ++ "doc/html/man3/EVP_PKEY_ASN1_METHOD.html", ++ "doc/html/man3/EVP_PKEY_CTX_ctrl.html", ++ "doc/html/man3/EVP_PKEY_CTX_get0_libctx.html", ++ "doc/html/man3/EVP_PKEY_CTX_new.html", ++ "doc/html/man3/EVP_PKEY_CTX_set1_pbe_pass.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_hkdf_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_params.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_scrypt_N.html", ++ "doc/html/man3/EVP_PKEY_CTX_set_tls1_prf_md.html", ++ "doc/html/man3/EVP_PKEY_asn1_get_count.html", ++ "doc/html/man3/EVP_PKEY_check.html", ++ "doc/html/man3/EVP_PKEY_copy_parameters.html", ++ "doc/html/man3/EVP_PKEY_decapsulate.html", ++ "doc/html/man3/EVP_PKEY_decrypt.html", ++ "doc/html/man3/EVP_PKEY_derive.html", ++ "doc/html/man3/EVP_PKEY_digestsign_supports_digest.html", ++ "doc/html/man3/EVP_PKEY_encapsulate.html", ++ "doc/html/man3/EVP_PKEY_encrypt.html", ++ "doc/html/man3/EVP_PKEY_fromdata.html", ++ "doc/html/man3/EVP_PKEY_get_default_digest_nid.html", ++ "doc/html/man3/EVP_PKEY_get_field_type.html", ++ "doc/html/man3/EVP_PKEY_get_group_name.html", ++ "doc/html/man3/EVP_PKEY_get_size.html", ++ "doc/html/man3/EVP_PKEY_gettable_params.html", ++ "doc/html/man3/EVP_PKEY_is_a.html", ++ "doc/html/man3/EVP_PKEY_keygen.html", ++ "doc/html/man3/EVP_PKEY_meth_get_count.html", ++ "doc/html/man3/EVP_PKEY_meth_new.html", ++ "doc/html/man3/EVP_PKEY_new.html", ++ "doc/html/man3/EVP_PKEY_print_private.html", ++ "doc/html/man3/EVP_PKEY_set1_RSA.html", ++ "doc/html/man3/EVP_PKEY_set1_encoded_public_key.html", ++ "doc/html/man3/EVP_PKEY_set_type.html", ++ "doc/html/man3/EVP_PKEY_settable_params.html", ++ "doc/html/man3/EVP_PKEY_sign.html", ++ "doc/html/man3/EVP_PKEY_todata.html", ++ "doc/html/man3/EVP_PKEY_verify.html", ++ "doc/html/man3/EVP_PKEY_verify_recover.html", ++ "doc/html/man3/EVP_RAND.html", ++ "doc/html/man3/EVP_SIGNATURE.html", ++ "doc/html/man3/EVP_SealInit.html", ++ "doc/html/man3/EVP_SignInit.html", ++ "doc/html/man3/EVP_VerifyInit.html", ++ "doc/html/man3/EVP_aes_128_gcm.html", ++ "doc/html/man3/EVP_aria_128_gcm.html", ++ "doc/html/man3/EVP_bf_cbc.html", ++ "doc/html/man3/EVP_blake2b512.html", ++ "doc/html/man3/EVP_camellia_128_ecb.html", ++ "doc/html/man3/EVP_cast5_cbc.html", ++ "doc/html/man3/EVP_chacha20.html", ++ "doc/html/man3/EVP_des_cbc.html", ++ "doc/html/man3/EVP_desx_cbc.html", ++ "doc/html/man3/EVP_idea_cbc.html", ++ "doc/html/man3/EVP_md2.html", ++ "doc/html/man3/EVP_md4.html", ++ "doc/html/man3/EVP_md5.html", ++ "doc/html/man3/EVP_mdc2.html", ++ "doc/html/man3/EVP_rc2_cbc.html", ++ "doc/html/man3/EVP_rc4.html", ++ "doc/html/man3/EVP_rc5_32_12_16_cbc.html", ++ "doc/html/man3/EVP_ripemd160.html", ++ "doc/html/man3/EVP_seed_cbc.html", ++ "doc/html/man3/EVP_set_default_properties.html", ++ "doc/html/man3/EVP_sha1.html", ++ "doc/html/man3/EVP_sha224.html", ++ "doc/html/man3/EVP_sha3_224.html", ++ "doc/html/man3/EVP_sm3.html", ++ "doc/html/man3/EVP_sm4_cbc.html", ++ "doc/html/man3/EVP_whirlpool.html", ++ "doc/html/man3/HMAC.html", ++ "doc/html/man3/MD5.html", ++ "doc/html/man3/MDC2_Init.html", ++ "doc/html/man3/NCONF_new_ex.html", ++ "doc/html/man3/OBJ_nid2obj.html", ++ "doc/html/man3/OCSP_REQUEST_new.html", ++ "doc/html/man3/OCSP_cert_to_id.html", ++ "doc/html/man3/OCSP_request_add1_nonce.html", ++ "doc/html/man3/OCSP_resp_find_status.html", ++ "doc/html/man3/OCSP_response_status.html", ++ "doc/html/man3/OCSP_sendreq_new.html", ++ "doc/html/man3/OPENSSL_Applink.html", ++ "doc/html/man3/OPENSSL_FILE.html", ++ "doc/html/man3/OPENSSL_LH_COMPFUNC.html", ++ "doc/html/man3/OPENSSL_LH_stats.html", ++ "doc/html/man3/OPENSSL_config.html", ++ "doc/html/man3/OPENSSL_fork_prepare.html", ++ "doc/html/man3/OPENSSL_hexchar2int.html", ++ "doc/html/man3/OPENSSL_ia32cap.html", ++ "doc/html/man3/OPENSSL_init_crypto.html", ++ "doc/html/man3/OPENSSL_init_ssl.html", ++ "doc/html/man3/OPENSSL_instrument_bus.html", ++ "doc/html/man3/OPENSSL_load_builtin_modules.html", ++ "doc/html/man3/OPENSSL_malloc.html", ++ "doc/html/man3/OPENSSL_s390xcap.html", ++ "doc/html/man3/OPENSSL_secure_malloc.html", ++ "doc/html/man3/OPENSSL_strcasecmp.html", ++ "doc/html/man3/OSSL_CMP_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_HDR_get0_transactionID.html", ++ "doc/html/man3/OSSL_CMP_ITAV_set0.html", ++ "doc/html/man3/OSSL_CMP_MSG_get0_header.html", ++ "doc/html/man3/OSSL_CMP_MSG_http_perform.html", ++ "doc/html/man3/OSSL_CMP_SRV_CTX_new.html", ++ "doc/html/man3/OSSL_CMP_STATUSINFO_new.html", ++ "doc/html/man3/OSSL_CMP_exec_certreq.html", ++ "doc/html/man3/OSSL_CMP_log_open.html", ++ "doc/html/man3/OSSL_CMP_validate_msg.html", ++ "doc/html/man3/OSSL_CORE_MAKE_FUNC.html", ++ "doc/html/man3/OSSL_CRMF_MSG_get0_tmpl.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set0_validity.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.html", ++ "doc/html/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.html", ++ "doc/html/man3/OSSL_CRMF_pbmp_new.html", ++ "doc/html/man3/OSSL_DECODER.html", ++ "doc/html/man3/OSSL_DECODER_CTX.html", ++ "doc/html/man3/OSSL_DECODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_DECODER_from_bio.html", ++ "doc/html/man3/OSSL_ENCODER.html", ++ "doc/html/man3/OSSL_ENCODER_CTX.html", ++ "doc/html/man3/OSSL_ENCODER_CTX_new_for_pkey.html", ++ "doc/html/man3/OSSL_ENCODER_to_bio.html", ++ "doc/html/man3/OSSL_ESS_check_signing_certs.html", ++ "doc/html/man3/OSSL_HTTP_REQ_CTX.html", ++ "doc/html/man3/OSSL_HTTP_parse_url.html", ++ "doc/html/man3/OSSL_HTTP_transfer.html", ++ "doc/html/man3/OSSL_LIB_CTX.html", ++ "doc/html/man3/OSSL_PARAM.html", ++ "doc/html/man3/OSSL_PARAM_BLD.html", ++ "doc/html/man3/OSSL_PARAM_allocate_from_text.html", ++ "doc/html/man3/OSSL_PARAM_dup.html", ++ "doc/html/man3/OSSL_PARAM_int.html", ++ "doc/html/man3/OSSL_PROVIDER.html", ++ "doc/html/man3/OSSL_SELF_TEST_new.html", ++ "doc/html/man3/OSSL_SELF_TEST_set_callback.html", ++ "doc/html/man3/OSSL_STORE_INFO.html", ++ "doc/html/man3/OSSL_STORE_LOADER.html", ++ "doc/html/man3/OSSL_STORE_SEARCH.html", ++ "doc/html/man3/OSSL_STORE_attach.html", ++ "doc/html/man3/OSSL_STORE_expect.html", ++ "doc/html/man3/OSSL_STORE_open.html", ++ "doc/html/man3/OSSL_trace_enabled.html", ++ "doc/html/man3/OSSL_trace_get_category_num.html", ++ "doc/html/man3/OSSL_trace_set_channel.html", ++ "doc/html/man3/OpenSSL_add_all_algorithms.html", ++ "doc/html/man3/OpenSSL_version.html", ++ "doc/html/man3/PEM_X509_INFO_read_bio_ex.html", ++ "doc/html/man3/PEM_bytes_read_bio.html", ++ "doc/html/man3/PEM_read.html", ++ "doc/html/man3/PEM_read_CMS.html", ++ "doc/html/man3/PEM_read_bio_PrivateKey.html", ++ "doc/html/man3/PEM_read_bio_ex.html", ++ "doc/html/man3/PEM_write_bio_CMS_stream.html", ++ "doc/html/man3/PEM_write_bio_PKCS7_stream.html", ++ "doc/html/man3/PKCS12_PBE_keyivgen.html", ++ "doc/html/man3/PKCS12_SAFEBAG_create_cert.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get0_attrs.html", ++ "doc/html/man3/PKCS12_SAFEBAG_get1_cert.html", ++ "doc/html/man3/PKCS12_add1_attr_by_NID.html", ++ "doc/html/man3/PKCS12_add_CSPName_asc.html", ++ "doc/html/man3/PKCS12_add_cert.html", ++ "doc/html/man3/PKCS12_add_friendlyname_asc.html", ++ "doc/html/man3/PKCS12_add_localkeyid.html", ++ "doc/html/man3/PKCS12_add_safe.html", ++ "doc/html/man3/PKCS12_create.html", ++ "doc/html/man3/PKCS12_decrypt_skey.html", ++ "doc/html/man3/PKCS12_gen_mac.html", ++ "doc/html/man3/PKCS12_get_friendlyname.html", ++ "doc/html/man3/PKCS12_init.html", ++ "doc/html/man3/PKCS12_item_decrypt_d2i.html", ++ "doc/html/man3/PKCS12_key_gen_utf8_ex.html", ++ "doc/html/man3/PKCS12_newpass.html", ++ "doc/html/man3/PKCS12_pack_p7encdata.html", ++ "doc/html/man3/PKCS12_parse.html", ++ "doc/html/man3/PKCS5_PBE_keyivgen.html", ++ "doc/html/man3/PKCS5_PBKDF2_HMAC.html", ++ "doc/html/man3/PKCS7_decrypt.html", ++ "doc/html/man3/PKCS7_encrypt.html", ++ "doc/html/man3/PKCS7_get_octet_string.html", ++ "doc/html/man3/PKCS7_sign.html", ++ "doc/html/man3/PKCS7_sign_add_signer.html", ++ "doc/html/man3/PKCS7_type_is_other.html", ++ "doc/html/man3/PKCS7_verify.html", ++ "doc/html/man3/PKCS8_encrypt.html", ++ "doc/html/man3/PKCS8_pkey_add1_attr.html", ++ "doc/html/man3/RAND_add.html", ++ "doc/html/man3/RAND_bytes.html", ++ "doc/html/man3/RAND_cleanup.html", ++ "doc/html/man3/RAND_egd.html", ++ "doc/html/man3/RAND_get0_primary.html", ++ "doc/html/man3/RAND_load_file.html", ++ "doc/html/man3/RAND_set_DRBG_type.html", ++ "doc/html/man3/RAND_set_rand_method.html", ++ "doc/html/man3/RC4_set_key.html", ++ "doc/html/man3/RIPEMD160_Init.html", ++ "doc/html/man3/RSA_blinding_on.html", ++ "doc/html/man3/RSA_check_key.html", ++ "doc/html/man3/RSA_generate_key.html", ++ "doc/html/man3/RSA_get0_key.html", ++ "doc/html/man3/RSA_meth_new.html", ++ "doc/html/man3/RSA_new.html", ++ "doc/html/man3/RSA_padding_add_PKCS1_type_1.html", ++ "doc/html/man3/RSA_print.html", ++ "doc/html/man3/RSA_private_encrypt.html", ++ "doc/html/man3/RSA_public_encrypt.html", ++ "doc/html/man3/RSA_set_method.html", ++ "doc/html/man3/RSA_sign.html", ++ "doc/html/man3/RSA_sign_ASN1_OCTET_STRING.html", ++ "doc/html/man3/RSA_size.html", ++ "doc/html/man3/SCT_new.html", ++ "doc/html/man3/SCT_print.html", ++ "doc/html/man3/SCT_validate.html", ++ "doc/html/man3/SHA256_Init.html", ++ "doc/html/man3/SMIME_read_ASN1.html", ++ "doc/html/man3/SMIME_read_CMS.html", ++ "doc/html/man3/SMIME_read_PKCS7.html", ++ "doc/html/man3/SMIME_write_ASN1.html", ++ "doc/html/man3/SMIME_write_CMS.html", ++ "doc/html/man3/SMIME_write_PKCS7.html", ++ "doc/html/man3/SRP_Calc_B.html", ++ "doc/html/man3/SRP_VBASE_new.html", ++ "doc/html/man3/SRP_create_verifier.html", ++ "doc/html/man3/SRP_user_pwd_new.html", ++ "doc/html/man3/SSL_CIPHER_get_name.html", ++ "doc/html/man3/SSL_COMP_add_compression_method.html", ++ "doc/html/man3/SSL_CONF_CTX_new.html", ++ "doc/html/man3/SSL_CONF_CTX_set1_prefix.html", ++ "doc/html/man3/SSL_CONF_CTX_set_flags.html", ++ "doc/html/man3/SSL_CONF_CTX_set_ssl_ctx.html", ++ "doc/html/man3/SSL_CONF_cmd.html", ++ "doc/html/man3/SSL_CONF_cmd_argv.html", ++ "doc/html/man3/SSL_CTX_add1_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_extra_chain_cert.html", ++ "doc/html/man3/SSL_CTX_add_session.html", ++ "doc/html/man3/SSL_CTX_config.html", ++ "doc/html/man3/SSL_CTX_ctrl.html", ++ "doc/html/man3/SSL_CTX_dane_enable.html", ++ "doc/html/man3/SSL_CTX_flush_sessions.html", ++ "doc/html/man3/SSL_CTX_free.html", ++ "doc/html/man3/SSL_CTX_get0_param.html", ++ "doc/html/man3/SSL_CTX_get_verify_mode.html", ++ "doc/html/man3/SSL_CTX_has_client_custom_ext.html", ++ "doc/html/man3/SSL_CTX_load_verify_locations.html", ++ "doc/html/man3/SSL_CTX_new.html", ++ "doc/html/man3/SSL_CTX_sess_number.html", ++ "doc/html/man3/SSL_CTX_sess_set_cache_size.html", ++ "doc/html/man3/SSL_CTX_sess_set_get_cb.html", ++ "doc/html/man3/SSL_CTX_sessions.html", ++ "doc/html/man3/SSL_CTX_set0_CA_list.html", ++ "doc/html/man3/SSL_CTX_set1_curves.html", ++ "doc/html/man3/SSL_CTX_set1_sigalgs.html", ++ "doc/html/man3/SSL_CTX_set1_verify_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_alpn_select_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_cert_store.html", ++ "doc/html/man3/SSL_CTX_set_cert_verify_callback.html", ++ "doc/html/man3/SSL_CTX_set_cipher_list.html", ++ "doc/html/man3/SSL_CTX_set_client_cert_cb.html", ++ "doc/html/man3/SSL_CTX_set_client_hello_cb.html", ++ "doc/html/man3/SSL_CTX_set_ct_validation_callback.html", ++ "doc/html/man3/SSL_CTX_set_ctlog_list_file.html", ++ "doc/html/man3/SSL_CTX_set_default_passwd_cb.html", ++ "doc/html/man3/SSL_CTX_set_generate_session_id.html", ++ "doc/html/man3/SSL_CTX_set_info_callback.html", ++ "doc/html/man3/SSL_CTX_set_keylog_callback.html", ++ "doc/html/man3/SSL_CTX_set_max_cert_list.html", ++ "doc/html/man3/SSL_CTX_set_min_proto_version.html", ++ "doc/html/man3/SSL_CTX_set_mode.html", ++ "doc/html/man3/SSL_CTX_set_msg_callback.html", ++ "doc/html/man3/SSL_CTX_set_num_tickets.html", ++ "doc/html/man3/SSL_CTX_set_options.html", ++ "doc/html/man3/SSL_CTX_set_psk_client_callback.html", ++ "doc/html/man3/SSL_CTX_set_quic_method.html", ++ "doc/html/man3/SSL_CTX_set_quiet_shutdown.html", ++ "doc/html/man3/SSL_CTX_set_read_ahead.html", ++ "doc/html/man3/SSL_CTX_set_record_padding_callback.html", ++ "doc/html/man3/SSL_CTX_set_security_level.html", ++ "doc/html/man3/SSL_CTX_set_session_cache_mode.html", ++ "doc/html/man3/SSL_CTX_set_session_id_context.html", ++ "doc/html/man3/SSL_CTX_set_session_ticket_cb.html", ++ "doc/html/man3/SSL_CTX_set_split_send_fragment.html", ++ "doc/html/man3/SSL_CTX_set_srp_password.html", ++ "doc/html/man3/SSL_CTX_set_ssl_version.html", ++ "doc/html/man3/SSL_CTX_set_stateless_cookie_generate_cb.html", ++ "doc/html/man3/SSL_CTX_set_timeout.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_servername_callback.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_status_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_ticket_key_cb.html", ++ "doc/html/man3/SSL_CTX_set_tlsext_use_srtp.html", ++ "doc/html/man3/SSL_CTX_set_tmp_dh_callback.html", ++ "doc/html/man3/SSL_CTX_set_tmp_ecdh.html", ++ "doc/html/man3/SSL_CTX_set_verify.html", ++ "doc/html/man3/SSL_CTX_use_certificate.html", ++ "doc/html/man3/SSL_CTX_use_psk_identity_hint.html", ++ "doc/html/man3/SSL_CTX_use_serverinfo.html", ++ "doc/html/man3/SSL_SESSION_free.html", ++ "doc/html/man3/SSL_SESSION_get0_cipher.html", ++ "doc/html/man3/SSL_SESSION_get0_hostname.html", ++ "doc/html/man3/SSL_SESSION_get0_id_context.html", ++ "doc/html/man3/SSL_SESSION_get0_peer.html", ++ "doc/html/man3/SSL_SESSION_get_compress_id.html", ++ "doc/html/man3/SSL_SESSION_get_protocol_version.html", ++ "doc/html/man3/SSL_SESSION_get_time.html", ++ "doc/html/man3/SSL_SESSION_has_ticket.html", ++ "doc/html/man3/SSL_SESSION_is_resumable.html", ++ "doc/html/man3/SSL_SESSION_print.html", ++ "doc/html/man3/SSL_SESSION_set1_id.html", ++ "doc/html/man3/SSL_accept.html", ++ "doc/html/man3/SSL_alert_type_string.html", ++ "doc/html/man3/SSL_alloc_buffers.html", ++ "doc/html/man3/SSL_check_chain.html", ++ "doc/html/man3/SSL_clear.html", ++ "doc/html/man3/SSL_connect.html", ++ "doc/html/man3/SSL_do_handshake.html", ++ "doc/html/man3/SSL_export_keying_material.html", ++ "doc/html/man3/SSL_extension_supported.html", ++ "doc/html/man3/SSL_free.html", ++ "doc/html/man3/SSL_get0_peer_scts.html", ++ "doc/html/man3/SSL_get_SSL_CTX.html", ++ "doc/html/man3/SSL_get_all_async_fds.html", ++ "doc/html/man3/SSL_get_certificate.html", ++ "doc/html/man3/SSL_get_ciphers.html", ++ "doc/html/man3/SSL_get_client_random.html", ++ "doc/html/man3/SSL_get_current_cipher.html", ++ "doc/html/man3/SSL_get_default_timeout.html", ++ "doc/html/man3/SSL_get_error.html", ++ "doc/html/man3/SSL_get_extms_support.html", ++ "doc/html/man3/SSL_get_fd.html", ++ "doc/html/man3/SSL_get_peer_cert_chain.html", ++ "doc/html/man3/SSL_get_peer_certificate.html", ++ "doc/html/man3/SSL_get_peer_signature_nid.html", ++ "doc/html/man3/SSL_get_peer_tmp_key.html", ++ "doc/html/man3/SSL_get_psk_identity.html", ++ "doc/html/man3/SSL_get_rbio.html", ++ "doc/html/man3/SSL_get_session.html", ++ "doc/html/man3/SSL_get_shared_sigalgs.html", ++ "doc/html/man3/SSL_get_verify_result.html", ++ "doc/html/man3/SSL_get_version.html", ++ "doc/html/man3/SSL_group_to_name.html", ++ "doc/html/man3/SSL_in_init.html", ++ "doc/html/man3/SSL_key_update.html", ++ "doc/html/man3/SSL_library_init.html", ++ "doc/html/man3/SSL_load_client_CA_file.html", ++ "doc/html/man3/SSL_new.html", ++ "doc/html/man3/SSL_pending.html", ++ "doc/html/man3/SSL_read.html", ++ "doc/html/man3/SSL_read_early_data.html", ++ "doc/html/man3/SSL_rstate_string.html", ++ "doc/html/man3/SSL_session_reused.html", ++ "doc/html/man3/SSL_set1_host.html", ++ "doc/html/man3/SSL_set_async_callback.html", ++ "doc/html/man3/SSL_set_bio.html", ++ "doc/html/man3/SSL_set_connect_state.html", ++ "doc/html/man3/SSL_set_fd.html", ++ "doc/html/man3/SSL_set_retry_verify.html", ++ "doc/html/man3/SSL_set_session.html", ++ "doc/html/man3/SSL_set_shutdown.html", ++ "doc/html/man3/SSL_set_verify_result.html", ++ "doc/html/man3/SSL_shutdown.html", ++ "doc/html/man3/SSL_state_string.html", ++ "doc/html/man3/SSL_want.html", ++ "doc/html/man3/SSL_write.html", ++ "doc/html/man3/TS_RESP_CTX_new.html", ++ "doc/html/man3/TS_VERIFY_CTX_set_certs.html", ++ "doc/html/man3/UI_STRING.html", ++ "doc/html/man3/UI_UTIL_read_pw.html", ++ "doc/html/man3/UI_create_method.html", ++ "doc/html/man3/UI_new.html", ++ "doc/html/man3/X509V3_get_d2i.html", ++ "doc/html/man3/X509V3_set_ctx.html", ++ "doc/html/man3/X509_ALGOR_dup.html", ++ "doc/html/man3/X509_CRL_get0_by_serial.html", ++ "doc/html/man3/X509_EXTENSION_set_object.html", ++ "doc/html/man3/X509_LOOKUP.html", ++ "doc/html/man3/X509_LOOKUP_hash_dir.html", ++ "doc/html/man3/X509_LOOKUP_meth_new.html", ++ "doc/html/man3/X509_NAME_ENTRY_get_object.html", ++ "doc/html/man3/X509_NAME_add_entry_by_txt.html", ++ "doc/html/man3/X509_NAME_get0_der.html", ++ "doc/html/man3/X509_NAME_get_index_by_NID.html", ++ "doc/html/man3/X509_NAME_print_ex.html", ++ "doc/html/man3/X509_PUBKEY_new.html", ++ "doc/html/man3/X509_SIG_get0.html", ++ "doc/html/man3/X509_STORE_CTX_get_error.html", ++ "doc/html/man3/X509_STORE_CTX_new.html", ++ "doc/html/man3/X509_STORE_CTX_set_verify_cb.html", ++ "doc/html/man3/X509_STORE_add_cert.html", ++ "doc/html/man3/X509_STORE_get0_param.html", ++ "doc/html/man3/X509_STORE_new.html", ++ "doc/html/man3/X509_STORE_set_verify_cb_func.html", ++ "doc/html/man3/X509_VERIFY_PARAM_set_flags.html", ++ "doc/html/man3/X509_add_cert.html", ++ "doc/html/man3/X509_check_ca.html", ++ "doc/html/man3/X509_check_host.html", ++ "doc/html/man3/X509_check_issued.html", ++ "doc/html/man3/X509_check_private_key.html", ++ "doc/html/man3/X509_check_purpose.html", ++ "doc/html/man3/X509_cmp.html", ++ "doc/html/man3/X509_cmp_time.html", ++ "doc/html/man3/X509_digest.html", ++ "doc/html/man3/X509_dup.html", ++ "doc/html/man3/X509_get0_distinguishing_id.html", ++ "doc/html/man3/X509_get0_notBefore.html", ++ "doc/html/man3/X509_get0_signature.html", ++ "doc/html/man3/X509_get0_uids.html", ++ "doc/html/man3/X509_get_extension_flags.html", ++ "doc/html/man3/X509_get_pubkey.html", ++ "doc/html/man3/X509_get_serialNumber.html", ++ "doc/html/man3/X509_get_subject_name.html", ++ "doc/html/man3/X509_get_version.html", ++ "doc/html/man3/X509_load_http.html", ++ "doc/html/man3/X509_new.html", ++ "doc/html/man3/X509_sign.html", ++ "doc/html/man3/X509_verify.html", ++ "doc/html/man3/X509_verify_cert.html", ++ "doc/html/man3/X509v3_get_ext_by_NID.html", ++ "doc/html/man3/b2i_PVK_bio_ex.html", ++ "doc/html/man3/d2i_PKCS8PrivateKey_bio.html", ++ "doc/html/man3/d2i_PrivateKey.html", ++ "doc/html/man3/d2i_RSAPrivateKey.html", ++ "doc/html/man3/d2i_SSL_SESSION.html", ++ "doc/html/man3/d2i_X509.html", ++ "doc/html/man3/i2d_CMS_bio_stream.html", ++ "doc/html/man3/i2d_PKCS7_bio_stream.html", ++ "doc/html/man3/i2d_re_X509_tbs.html", ++ "doc/html/man3/o2i_SCT_LIST.html", ++ "doc/html/man3/s2i_ASN1_IA5STRING.html" ++ ], ++ "man5" => [ ++ "doc/html/man5/config.html", ++ "doc/html/man5/fips_config.html", ++ "doc/html/man5/x509v3_config.html" ++ ], ++ "man7" => [ ++ "doc/html/man7/EVP_ASYM_CIPHER-SM2.html", ++ "doc/html/man7/EVP_CIPHER-AES.html", ++ "doc/html/man7/EVP_CIPHER-ARIA.html", ++ "doc/html/man7/EVP_CIPHER-BLOWFISH.html", ++ "doc/html/man7/EVP_CIPHER-CAMELLIA.html", ++ "doc/html/man7/EVP_CIPHER-CAST.html", ++ "doc/html/man7/EVP_CIPHER-CHACHA.html", ++ "doc/html/man7/EVP_CIPHER-DES.html", ++ "doc/html/man7/EVP_CIPHER-IDEA.html", ++ "doc/html/man7/EVP_CIPHER-RC2.html", ++ "doc/html/man7/EVP_CIPHER-RC4.html", ++ "doc/html/man7/EVP_CIPHER-RC5.html", ++ "doc/html/man7/EVP_CIPHER-SEED.html", ++ "doc/html/man7/EVP_CIPHER-SM4.html", ++ "doc/html/man7/EVP_KDF-HKDF.html", ++ "doc/html/man7/EVP_KDF-KB.html", ++ "doc/html/man7/EVP_KDF-KRB5KDF.html", ++ "doc/html/man7/EVP_KDF-PBKDF1.html", ++ "doc/html/man7/EVP_KDF-PBKDF2.html", ++ "doc/html/man7/EVP_KDF-PKCS12KDF.html", ++ "doc/html/man7/EVP_KDF-SCRYPT.html", ++ "doc/html/man7/EVP_KDF-SS.html", ++ "doc/html/man7/EVP_KDF-SSHKDF.html", ++ "doc/html/man7/EVP_KDF-TLS13_KDF.html", ++ "doc/html/man7/EVP_KDF-TLS1_PRF.html", ++ "doc/html/man7/EVP_KDF-X942-ASN1.html", ++ "doc/html/man7/EVP_KDF-X942-CONCAT.html", ++ "doc/html/man7/EVP_KDF-X963.html", ++ "doc/html/man7/EVP_KEM-RSA.html", ++ "doc/html/man7/EVP_KEYEXCH-DH.html", ++ "doc/html/man7/EVP_KEYEXCH-ECDH.html", ++ "doc/html/man7/EVP_KEYEXCH-X25519.html", ++ "doc/html/man7/EVP_MAC-BLAKE2.html", ++ "doc/html/man7/EVP_MAC-CMAC.html", ++ "doc/html/man7/EVP_MAC-GMAC.html", ++ "doc/html/man7/EVP_MAC-HMAC.html", ++ "doc/html/man7/EVP_MAC-KMAC.html", ++ "doc/html/man7/EVP_MAC-Poly1305.html", ++ "doc/html/man7/EVP_MAC-Siphash.html", ++ "doc/html/man7/EVP_MD-BLAKE2.html", ++ "doc/html/man7/EVP_MD-MD2.html", ++ "doc/html/man7/EVP_MD-MD4.html", ++ "doc/html/man7/EVP_MD-MD5-SHA1.html", ++ "doc/html/man7/EVP_MD-MD5.html", ++ "doc/html/man7/EVP_MD-MDC2.html", ++ "doc/html/man7/EVP_MD-RIPEMD160.html", ++ "doc/html/man7/EVP_MD-SHA1.html", ++ "doc/html/man7/EVP_MD-SHA2.html", ++ "doc/html/man7/EVP_MD-SHA3.html", ++ "doc/html/man7/EVP_MD-SHAKE.html", ++ "doc/html/man7/EVP_MD-SM3.html", ++ "doc/html/man7/EVP_MD-WHIRLPOOL.html", ++ "doc/html/man7/EVP_MD-common.html", ++ "doc/html/man7/EVP_PKEY-DH.html", ++ "doc/html/man7/EVP_PKEY-DSA.html", ++ "doc/html/man7/EVP_PKEY-EC.html", ++ "doc/html/man7/EVP_PKEY-FFC.html", ++ "doc/html/man7/EVP_PKEY-HMAC.html", ++ "doc/html/man7/EVP_PKEY-RSA.html", ++ "doc/html/man7/EVP_PKEY-SM2.html", ++ "doc/html/man7/EVP_PKEY-X25519.html", ++ "doc/html/man7/EVP_RAND-CTR-DRBG.html", ++ "doc/html/man7/EVP_RAND-HASH-DRBG.html", ++ "doc/html/man7/EVP_RAND-HMAC-DRBG.html", ++ "doc/html/man7/EVP_RAND-SEED-SRC.html", ++ "doc/html/man7/EVP_RAND-TEST-RAND.html", ++ "doc/html/man7/EVP_RAND.html", ++ "doc/html/man7/EVP_SIGNATURE-DSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ECDSA.html", ++ "doc/html/man7/EVP_SIGNATURE-ED25519.html", ++ "doc/html/man7/EVP_SIGNATURE-HMAC.html", ++ "doc/html/man7/EVP_SIGNATURE-RSA.html", ++ "doc/html/man7/OSSL_PROVIDER-FIPS.html", ++ "doc/html/man7/OSSL_PROVIDER-base.html", ++ "doc/html/man7/OSSL_PROVIDER-default.html", ++ "doc/html/man7/OSSL_PROVIDER-legacy.html", ++ "doc/html/man7/OSSL_PROVIDER-null.html", ++ "doc/html/man7/RAND.html", ++ "doc/html/man7/RSA-PSS.html", ++ "doc/html/man7/X25519.html", ++ "doc/html/man7/bio.html", ++ "doc/html/man7/crypto.html", ++ "doc/html/man7/ct.html", ++ "doc/html/man7/des_modes.html", ++ "doc/html/man7/evp.html", ++ "doc/html/man7/fips_module.html", ++ "doc/html/man7/life_cycle-cipher.html", ++ "doc/html/man7/life_cycle-digest.html", ++ "doc/html/man7/life_cycle-kdf.html", ++ "doc/html/man7/life_cycle-mac.html", ++ "doc/html/man7/life_cycle-pkey.html", ++ "doc/html/man7/life_cycle-rand.html", ++ "doc/html/man7/migration_guide.html", ++ "doc/html/man7/openssl-core.h.html", ++ "doc/html/man7/openssl-core_dispatch.h.html", ++ "doc/html/man7/openssl-core_names.h.html", ++ "doc/html/man7/openssl-env.html", ++ "doc/html/man7/openssl-glossary.html", ++ "doc/html/man7/openssl-threads.html", ++ "doc/html/man7/openssl_user_macros.html", ++ "doc/html/man7/ossl_store-file.html", ++ "doc/html/man7/ossl_store.html", ++ "doc/html/man7/passphrase-encoding.html", ++ "doc/html/man7/property.html", ++ "doc/html/man7/provider-asym_cipher.html", ++ "doc/html/man7/provider-base.html", ++ "doc/html/man7/provider-cipher.html", ++ "doc/html/man7/provider-decoder.html", ++ "doc/html/man7/provider-digest.html", ++ "doc/html/man7/provider-encoder.html", ++ "doc/html/man7/provider-kdf.html", ++ "doc/html/man7/provider-kem.html", ++ "doc/html/man7/provider-keyexch.html", ++ "doc/html/man7/provider-keymgmt.html", ++ "doc/html/man7/provider-mac.html", ++ "doc/html/man7/provider-object.html", ++ "doc/html/man7/provider-rand.html", ++ "doc/html/man7/provider-signature.html", ++ "doc/html/man7/provider-storemgmt.html", ++ "doc/html/man7/provider.html", ++ "doc/html/man7/proxy-certificates.html", ++ "doc/html/man7/ssl.html", ++ "doc/html/man7/x509.html" ++ ] ++ }, ++ "imagedocs" => { ++ "man7" => [ ++ "doc/man7/img/cipher.png", ++ "doc/man7/img/digest.png", ++ "doc/man7/img/kdf.png", ++ "doc/man7/img/mac.png", ++ "doc/man7/img/pkey.png", ++ "doc/man7/img/rand.png" ++ ] ++ }, ++ "includes" => { ++ "apps/asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/ca.o" => [ ++ "apps" ++ ], ++ "apps/ciphers.o" => [ ++ "apps" ++ ], ++ "apps/cmp.o" => [ ++ "apps" ++ ], ++ "apps/cms.o" => [ ++ "apps" ++ ], ++ "apps/crl.o" => [ ++ "apps" ++ ], ++ "apps/crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/dgst.o" => [ ++ "apps" ++ ], ++ "apps/dhparam.o" => [ ++ "apps" ++ ], ++ "apps/dsa.o" => [ ++ "apps" ++ ], ++ "apps/dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/ec.o" => [ ++ "apps" ++ ], ++ "apps/ecparam.o" => [ ++ "apps" ++ ], ++ "apps/enc.o" => [ ++ "apps" ++ ], ++ "apps/engine.o" => [ ++ "apps" ++ ], ++ "apps/errstr.o" => [ ++ "apps" ++ ], ++ "apps/fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/gendsa.o" => [ ++ "apps" ++ ], ++ "apps/genpkey.o" => [ ++ "apps" ++ ], ++ "apps/genrsa.o" => [ ++ "apps" ++ ], ++ "apps/info.o" => [ ++ "apps" ++ ], ++ "apps/kdf.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps" ++ ], ++ "apps/libapps.a" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/list.o" => [ ++ "apps" ++ ], ++ "apps/mac.o" => [ ++ "apps" ++ ], ++ "apps/nseq.o" => [ ++ "apps" ++ ], ++ "apps/ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps" ++ ], ++ "apps/openssl.o" => [ ++ "apps" ++ ], ++ "apps/passwd.o" => [ ++ "apps" ++ ], ++ "apps/pkcs12.o" => [ ++ "apps" ++ ], ++ "apps/pkcs7.o" => [ ++ "apps" ++ ], ++ "apps/pkcs8.o" => [ ++ "apps" ++ ], ++ "apps/pkey.o" => [ ++ "apps" ++ ], ++ "apps/pkeyparam.o" => [ ++ "apps" ++ ], ++ "apps/pkeyutl.o" => [ ++ "apps" ++ ], ++ "apps/prime.o" => [ ++ "apps" ++ ], ++ "apps/progs.c" => [ ++ "." ++ ], ++ "apps/progs.o" => [ ++ "apps" ++ ], ++ "apps/rand.o" => [ ++ "apps" ++ ], ++ "apps/rehash.o" => [ ++ "apps" ++ ], ++ "apps/req.o" => [ ++ "apps" ++ ], ++ "apps/rsa.o" => [ ++ "apps" ++ ], ++ "apps/rsautl.o" => [ ++ "apps" ++ ], ++ "apps/s_client.o" => [ ++ "apps" ++ ], ++ "apps/s_server.o" => [ ++ "apps" ++ ], ++ "apps/s_time.o" => [ ++ "apps" ++ ], ++ "apps/sess_id.o" => [ ++ "apps" ++ ], ++ "apps/smime.o" => [ ++ "apps" ++ ], ++ "apps/speed.o" => [ ++ "apps" ++ ], ++ "apps/spkac.o" => [ ++ "apps" ++ ], ++ "apps/srp.o" => [ ++ "apps" ++ ], ++ "apps/storeutl.o" => [ ++ "apps" ++ ], ++ "apps/ts.o" => [ ++ "apps" ++ ], ++ "apps/verify.o" => [ ++ "apps" ++ ], ++ "apps/version.o" => [ ++ "apps" ++ ], ++ "apps/x509.o" => [ ++ "apps" ++ ], ++ "crypto/aes/aes-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aes-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesfx-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/aesv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/aes/bsaes-armv7.o" => [ ++ "crypto" ++ ], ++ "crypto/arm64cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/armv4cpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/armv8-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sw_64-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparct4-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-gf2m.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/sparcv9a-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/bn/vis3-mont.o" => [ ++ "crypto" ++ ], ++ "crypto/camellia/cmllt4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/chacha/chacha-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/cpuid.o" => [ ++ "." ++ ], ++ "crypto/cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/des/dest4-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_nistz256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecp_s390x_nistp.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/ecx_s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto", ++ "crypto/modes" ++ ], ++ "crypto/info.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "." ++ ], ++ "crypto/md5/md5-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/aes-gcm-armv8_64.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghash-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/ghashv8-armx.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/poly1305/poly1305-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/s390xcpuid.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/keccak1600-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv4-large.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha1-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha256-sparcv9.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv4.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-armv8.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sw_64.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-s390x.o" => [ ++ "crypto" ++ ], ++ "crypto/sha/sha512-sparcv9.o" => [ ++ "crypto" ++ ], ++ "doc/man1/openssl-asn1parse.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ca.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ciphers.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmds.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cmp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-cms.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-crl2pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dgst.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dhparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-dsaparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ec.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ecparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-enc.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-engine.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-errstr.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-fipsinstall.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-gendsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genpkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-genrsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-info.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-kdf.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-list.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-mac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-nseq.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ocsp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-passwd.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs12.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs7.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkcs8.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkey.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyparam.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-pkeyutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-prime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rand.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rehash.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-req.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsa.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-rsautl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_client.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_server.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-s_time.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-sess_id.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-smime.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-speed.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-spkac.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-srp.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-storeutl.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-ts.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-verify.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-version.pod" => [ ++ "doc" ++ ], ++ "doc/man1/openssl-x509.pod" => [ ++ "doc" ++ ], ++ "fuzz/asn1-test" => [ ++ "include" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "include" ++ ], ++ "fuzz/bignum-test" => [ ++ "include" ++ ], ++ "fuzz/bndiv-test" => [ ++ "include" ++ ], ++ "fuzz/client-test" => [ ++ "include" ++ ], ++ "fuzz/cmp-test" => [ ++ "include" ++ ], ++ "fuzz/cms-test" => [ ++ "include" ++ ], ++ "fuzz/conf-test" => [ ++ "include" ++ ], ++ "fuzz/crl-test" => [ ++ "include" ++ ], ++ "fuzz/ct-test" => [ ++ "include" ++ ], ++ "fuzz/server-test" => [ ++ "include" ++ ], ++ "fuzz/x509-test" => [ ++ "include" ++ ], ++ "libcrypto" => [ ++ ".", ++ "include", ++ "providers/common/include", ++ "providers/implementations/include" ++ ], ++ "libcrypto.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "libssl" => [ ++ ".", ++ "include" ++ ], ++ "libssl.ld" => [ ++ ".", ++ "util/perl/OpenSSL" ++ ], ++ "providers/common/der/der_digests_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/der_wrap_gen.c" => [ ++ "providers/common/der" ++ ], ++ "providers/common/der/der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/common/include/prov/der_digests.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_dsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ec.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_ecx.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_rsa.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_sm2.h" => [ ++ "providers/common/der" ++ ], ++ "providers/common/include/prov/der_wrap.h" => [ ++ "providers/common/der" ++ ], ++ "providers/fips" => [ ++ "include" ++ ], ++ "providers/implementations/encode_decode/encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/kdfs/x942kdf.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/rsa_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/implementations/signature/sm2_sig.o" => [ ++ "providers/common/include/prov" ++ ], ++ "providers/legacy" => [ ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libcommon.a" => [ ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libdefault.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/libfips.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "providers/liblegacy.a" => [ ++ ".", ++ "crypto", ++ "include", ++ "providers/implementations/include", ++ "providers/common/include" ++ ], ++ "test/aborttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/acvp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/aesgcmtest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/afalgtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/algorithmid_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_decode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_encode_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_string_table_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asn1_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynciotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/asynctest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bad_dtls_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_callback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_core_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_enc_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_memleak_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bio_prefix_text" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bioprinttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/bn_internal_test" => [ ++ ".", ++ "include", ++ "crypto/bn", ++ "apps/include" ++ ], ++ "test/bntest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/buildtest_c_aes" => [ ++ "include" ++ ], ++ "test/buildtest_c_async" => [ ++ "include" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "include" ++ ], ++ "test/buildtest_c_bn" => [ ++ "include" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "include" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "include" ++ ], ++ "test/buildtest_c_cast" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "include" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "include" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "include" ++ ], ++ "test/buildtest_c_core" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "include" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_des" => [ ++ "include" ++ ], ++ "test/buildtest_c_dh" => [ ++ "include" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "include" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "include" ++ ], ++ "test/buildtest_c_ec" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "include" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "include" ++ ], ++ "test/buildtest_c_engine" => [ ++ "include" ++ ], ++ "test/buildtest_c_evp" => [ ++ "include" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "include" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "include" ++ ], ++ "test/buildtest_c_http" => [ ++ "include" ++ ], ++ "test/buildtest_c_idea" => [ ++ "include" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "include" ++ ], ++ "test/buildtest_c_macros" => [ ++ "include" ++ ], ++ "test/buildtest_c_md4" => [ ++ "include" ++ ], ++ "test/buildtest_c_md5" => [ ++ "include" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_modes" => [ ++ "include" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "include" ++ ], ++ "test/buildtest_c_objects" => [ ++ "include" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "include" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "include" ++ ], ++ "test/buildtest_c_params" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem" => [ ++ "include" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "include" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "include" ++ ], ++ "test/buildtest_c_provider" => [ ++ "include" ++ ], ++ "test/buildtest_c_quic" => [ ++ "include" ++ ], ++ "test/buildtest_c_rand" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "include" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "include" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "include" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "include" ++ ], ++ "test/buildtest_c_seed" => [ ++ "include" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "include" ++ ], ++ "test/buildtest_c_sha" => [ ++ "include" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "include" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "include" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "include" ++ ], ++ "test/buildtest_c_stack" => [ ++ "include" ++ ], ++ "test/buildtest_c_store" => [ ++ "include" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "include" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "include" ++ ], ++ "test/buildtest_c_ts" => [ ++ "include" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "include" ++ ], ++ "test/buildtest_c_types" => [ ++ "include" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "include" ++ ], ++ "test/casttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/chacha_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipher_overhead_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cipherbytes_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cipherlist_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ciphername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/clienthellotest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_asn_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_client_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_ctx_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_hdr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_msg_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_protect_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_server_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_status_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmp_vfy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/cmsapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/conf_include_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/confdump" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/constant_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/context_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/crltest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ct_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ctype_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/curve448_internal_test" => [ ++ ".", ++ "include", ++ "apps/include", ++ "crypto/ec/curve448" ++ ], ++ "test/d2i_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/danetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/defltfips_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/destest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dhtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/drbgtest" => [ ++ "include", ++ "apps/include", ++ "providers/common/include" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtls_mtu_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/dtlstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/dtlsv1listentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ec_internal_test" => [ ++ "include", ++ "crypto/ec", ++ "apps/include" ++ ], ++ "test/ecdsatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ecstresstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ectest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/endecode_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/endecoder_legacy_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/enginetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/errtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_extra_test2" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_libctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/evp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exdatatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/exptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/fatalerrtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ffc_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/gmdifftest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "include" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ ".", ++ "include" ++ ], ++ "test/hexstr_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/hmactest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/http_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ideatest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/igetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/keymgmt_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/lhash_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/libtestutil.a" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/localetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/mdc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/memleaktest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/modes_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/namemap_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ocspapitest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ossl_store_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/p_test" => [ ++ "include", ++ "." ++ ], ++ "test/packettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/param_build_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_api_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_conversion_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/params_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/pbelutest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pbetest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pem_read_depr_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs12_format_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkcs7_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/pkey_meth_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/poly1305_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/property_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/prov_config_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provfetchtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_fallback_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_internal_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/provider_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/provider_test" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/rand_status_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rand_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc2test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc4test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rc5test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/recordlentest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_complex" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_mp_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ ".", ++ "include", ++ "crypto/rsa", ++ "apps/include" ++ ], ++ "test/rsa_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sanitytest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/secmemtest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/servername_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sha_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/siphash_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sm2_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm3_internal_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sm4_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/sparse_array_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/srptest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_old_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslapitest" => [ ++ "include", ++ "apps/include", ++ "." ++ ], ++ "test/sslbuffertest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sslcorrupttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/stack_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/sysdefaulttest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/test_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/threadstest_fips" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/time_offset_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13ccstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/tls13encryptiontest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/uitest" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/upcallstest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/user_property_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3ext" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/v3nametest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/verify_extra_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/versions" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/wpackettest" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509_internal_test" => [ ++ ".", ++ "include", ++ "apps/include" ++ ], ++ "test/x509_time_test" => [ ++ "include", ++ "apps/include" ++ ], ++ "test/x509aux" => [ ++ "include", ++ "apps/include" ++ ], ++ "util/wrap.pl" => [ ++ "." ++ ] ++ }, ++ "ldadd" => {}, ++ "libraries" => [ ++ "apps/libapps.a", ++ "libcrypto", ++ "libssl", ++ "providers/libcommon.a", ++ "providers/libdefault.a", ++ "providers/libfips.a", ++ "providers/liblegacy.a", ++ "test/libtestutil.a" ++ ], ++ "mandocs" => { ++ "man1" => [ ++ "doc/man/man1/CA.pl.1", ++ "doc/man/man1/openssl-asn1parse.1", ++ "doc/man/man1/openssl-ca.1", ++ "doc/man/man1/openssl-ciphers.1", ++ "doc/man/man1/openssl-cmds.1", ++ "doc/man/man1/openssl-cmp.1", ++ "doc/man/man1/openssl-cms.1", ++ "doc/man/man1/openssl-crl.1", ++ "doc/man/man1/openssl-crl2pkcs7.1", ++ "doc/man/man1/openssl-dgst.1", ++ "doc/man/man1/openssl-dhparam.1", ++ "doc/man/man1/openssl-dsa.1", ++ "doc/man/man1/openssl-dsaparam.1", ++ "doc/man/man1/openssl-ec.1", ++ "doc/man/man1/openssl-ecparam.1", ++ "doc/man/man1/openssl-enc.1", ++ "doc/man/man1/openssl-engine.1", ++ "doc/man/man1/openssl-errstr.1", ++ "doc/man/man1/openssl-fipsinstall.1", ++ "doc/man/man1/openssl-format-options.1", ++ "doc/man/man1/openssl-gendsa.1", ++ "doc/man/man1/openssl-genpkey.1", ++ "doc/man/man1/openssl-genrsa.1", ++ "doc/man/man1/openssl-info.1", ++ "doc/man/man1/openssl-kdf.1", ++ "doc/man/man1/openssl-list.1", ++ "doc/man/man1/openssl-mac.1", ++ "doc/man/man1/openssl-namedisplay-options.1", ++ "doc/man/man1/openssl-nseq.1", ++ "doc/man/man1/openssl-ocsp.1", ++ "doc/man/man1/openssl-passphrase-options.1", ++ "doc/man/man1/openssl-passwd.1", ++ "doc/man/man1/openssl-pkcs12.1", ++ "doc/man/man1/openssl-pkcs7.1", ++ "doc/man/man1/openssl-pkcs8.1", ++ "doc/man/man1/openssl-pkey.1", ++ "doc/man/man1/openssl-pkeyparam.1", ++ "doc/man/man1/openssl-pkeyutl.1", ++ "doc/man/man1/openssl-prime.1", ++ "doc/man/man1/openssl-rand.1", ++ "doc/man/man1/openssl-rehash.1", ++ "doc/man/man1/openssl-req.1", ++ "doc/man/man1/openssl-rsa.1", ++ "doc/man/man1/openssl-rsautl.1", ++ "doc/man/man1/openssl-s_client.1", ++ "doc/man/man1/openssl-s_server.1", ++ "doc/man/man1/openssl-s_time.1", ++ "doc/man/man1/openssl-sess_id.1", ++ "doc/man/man1/openssl-smime.1", ++ "doc/man/man1/openssl-speed.1", ++ "doc/man/man1/openssl-spkac.1", ++ "doc/man/man1/openssl-srp.1", ++ "doc/man/man1/openssl-storeutl.1", ++ "doc/man/man1/openssl-ts.1", ++ "doc/man/man1/openssl-verification-options.1", ++ "doc/man/man1/openssl-verify.1", ++ "doc/man/man1/openssl-version.1", ++ "doc/man/man1/openssl-x509.1", ++ "doc/man/man1/openssl.1", ++ "doc/man/man1/tsget.1" ++ ], ++ "man3" => [ ++ "doc/man/man3/ADMISSIONS.3", ++ "doc/man/man3/ASN1_EXTERN_FUNCS.3", ++ "doc/man/man3/ASN1_INTEGER_get_int64.3", ++ "doc/man/man3/ASN1_INTEGER_new.3", ++ "doc/man/man3/ASN1_ITEM_lookup.3", ++ "doc/man/man3/ASN1_OBJECT_new.3", ++ "doc/man/man3/ASN1_STRING_TABLE_add.3", ++ "doc/man/man3/ASN1_STRING_length.3", ++ "doc/man/man3/ASN1_STRING_new.3", ++ "doc/man/man3/ASN1_STRING_print_ex.3", ++ "doc/man/man3/ASN1_TIME_set.3", ++ "doc/man/man3/ASN1_TYPE_get.3", ++ "doc/man/man3/ASN1_aux_cb.3", ++ "doc/man/man3/ASN1_generate_nconf.3", ++ "doc/man/man3/ASN1_item_d2i_bio.3", ++ "doc/man/man3/ASN1_item_new.3", ++ "doc/man/man3/ASN1_item_sign.3", ++ "doc/man/man3/ASYNC_WAIT_CTX_new.3", ++ "doc/man/man3/ASYNC_start_job.3", ++ "doc/man/man3/BF_encrypt.3", ++ "doc/man/man3/BIO_ADDR.3", ++ "doc/man/man3/BIO_ADDRINFO.3", ++ "doc/man/man3/BIO_connect.3", ++ "doc/man/man3/BIO_ctrl.3", ++ "doc/man/man3/BIO_f_base64.3", ++ "doc/man/man3/BIO_f_buffer.3", ++ "doc/man/man3/BIO_f_cipher.3", ++ "doc/man/man3/BIO_f_md.3", ++ "doc/man/man3/BIO_f_null.3", ++ "doc/man/man3/BIO_f_prefix.3", ++ "doc/man/man3/BIO_f_readbuffer.3", ++ "doc/man/man3/BIO_f_ssl.3", ++ "doc/man/man3/BIO_find_type.3", ++ "doc/man/man3/BIO_get_data.3", ++ "doc/man/man3/BIO_get_ex_new_index.3", ++ "doc/man/man3/BIO_meth_new.3", ++ "doc/man/man3/BIO_new.3", ++ "doc/man/man3/BIO_new_CMS.3", ++ "doc/man/man3/BIO_parse_hostserv.3", ++ "doc/man/man3/BIO_printf.3", ++ "doc/man/man3/BIO_push.3", ++ "doc/man/man3/BIO_read.3", ++ "doc/man/man3/BIO_s_accept.3", ++ "doc/man/man3/BIO_s_bio.3", ++ "doc/man/man3/BIO_s_connect.3", ++ "doc/man/man3/BIO_s_core.3", ++ "doc/man/man3/BIO_s_fd.3", ++ "doc/man/man3/BIO_s_file.3", ++ "doc/man/man3/BIO_s_mem.3", ++ "doc/man/man3/BIO_s_null.3", ++ "doc/man/man3/BIO_s_socket.3", ++ "doc/man/man3/BIO_set_callback.3", ++ "doc/man/man3/BIO_should_retry.3", ++ "doc/man/man3/BIO_socket_wait.3", ++ "doc/man/man3/BN_BLINDING_new.3", ++ "doc/man/man3/BN_CTX_new.3", ++ "doc/man/man3/BN_CTX_start.3", ++ "doc/man/man3/BN_add.3", ++ "doc/man/man3/BN_add_word.3", ++ "doc/man/man3/BN_bn2bin.3", ++ "doc/man/man3/BN_cmp.3", ++ "doc/man/man3/BN_copy.3", ++ "doc/man/man3/BN_generate_prime.3", ++ "doc/man/man3/BN_mod_exp_mont.3", ++ "doc/man/man3/BN_mod_inverse.3", ++ "doc/man/man3/BN_mod_mul_montgomery.3", ++ "doc/man/man3/BN_mod_mul_reciprocal.3", ++ "doc/man/man3/BN_new.3", ++ "doc/man/man3/BN_num_bytes.3", ++ "doc/man/man3/BN_rand.3", ++ "doc/man/man3/BN_security_bits.3", ++ "doc/man/man3/BN_set_bit.3", ++ "doc/man/man3/BN_swap.3", ++ "doc/man/man3/BN_zero.3", ++ "doc/man/man3/BUF_MEM_new.3", ++ "doc/man/man3/CMS_EncryptedData_decrypt.3", ++ "doc/man/man3/CMS_EncryptedData_encrypt.3", ++ "doc/man/man3/CMS_EnvelopedData_create.3", ++ "doc/man/man3/CMS_add0_cert.3", ++ "doc/man/man3/CMS_add1_recipient_cert.3", ++ "doc/man/man3/CMS_add1_signer.3", ++ "doc/man/man3/CMS_compress.3", ++ "doc/man/man3/CMS_data_create.3", ++ "doc/man/man3/CMS_decrypt.3", ++ "doc/man/man3/CMS_digest_create.3", ++ "doc/man/man3/CMS_encrypt.3", ++ "doc/man/man3/CMS_final.3", ++ "doc/man/man3/CMS_get0_RecipientInfos.3", ++ "doc/man/man3/CMS_get0_SignerInfos.3", ++ "doc/man/man3/CMS_get0_type.3", ++ "doc/man/man3/CMS_get1_ReceiptRequest.3", ++ "doc/man/man3/CMS_sign.3", ++ "doc/man/man3/CMS_sign_receipt.3", ++ "doc/man/man3/CMS_uncompress.3", ++ "doc/man/man3/CMS_verify.3", ++ "doc/man/man3/CMS_verify_receipt.3", ++ "doc/man/man3/CONF_modules_free.3", ++ "doc/man/man3/CONF_modules_load_file.3", ++ "doc/man/man3/CRYPTO_THREAD_run_once.3", ++ "doc/man/man3/CRYPTO_get_ex_new_index.3", ++ "doc/man/man3/CRYPTO_memcmp.3", ++ "doc/man/man3/CTLOG_STORE_get0_log_by_id.3", ++ "doc/man/man3/CTLOG_STORE_new.3", ++ "doc/man/man3/CTLOG_new.3", ++ "doc/man/man3/CT_POLICY_EVAL_CTX_new.3", ++ "doc/man/man3/DEFINE_STACK_OF.3", ++ "doc/man/man3/DES_random_key.3", ++ "doc/man/man3/DH_generate_key.3", ++ "doc/man/man3/DH_generate_parameters.3", ++ "doc/man/man3/DH_get0_pqg.3", ++ "doc/man/man3/DH_get_1024_160.3", ++ "doc/man/man3/DH_meth_new.3", ++ "doc/man/man3/DH_new.3", ++ "doc/man/man3/DH_new_by_nid.3", ++ "doc/man/man3/DH_set_method.3", ++ "doc/man/man3/DH_size.3", ++ "doc/man/man3/DSA_SIG_new.3", ++ "doc/man/man3/DSA_do_sign.3", ++ "doc/man/man3/DSA_dup_DH.3", ++ "doc/man/man3/DSA_generate_key.3", ++ "doc/man/man3/DSA_generate_parameters.3", ++ "doc/man/man3/DSA_get0_pqg.3", ++ "doc/man/man3/DSA_meth_new.3", ++ "doc/man/man3/DSA_new.3", ++ "doc/man/man3/DSA_set_method.3", ++ "doc/man/man3/DSA_sign.3", ++ "doc/man/man3/DSA_size.3", ++ "doc/man/man3/DTLS_get_data_mtu.3", ++ "doc/man/man3/DTLS_set_timer_cb.3", ++ "doc/man/man3/DTLSv1_listen.3", ++ "doc/man/man3/ECDSA_SIG_new.3", ++ "doc/man/man3/ECPKParameters_print.3", ++ "doc/man/man3/EC_GFp_simple_method.3", ++ "doc/man/man3/EC_GROUP_copy.3", ++ "doc/man/man3/EC_GROUP_new.3", ++ "doc/man/man3/EC_KEY_get_enc_flags.3", ++ "doc/man/man3/EC_KEY_new.3", ++ "doc/man/man3/EC_POINT_add.3", ++ "doc/man/man3/EC_POINT_new.3", ++ "doc/man/man3/ENGINE_add.3", ++ "doc/man/man3/ERR_GET_LIB.3", ++ "doc/man/man3/ERR_clear_error.3", ++ "doc/man/man3/ERR_error_string.3", ++ "doc/man/man3/ERR_get_error.3", ++ "doc/man/man3/ERR_load_crypto_strings.3", ++ "doc/man/man3/ERR_load_strings.3", ++ "doc/man/man3/ERR_new.3", ++ "doc/man/man3/ERR_print_errors.3", ++ "doc/man/man3/ERR_put_error.3", ++ "doc/man/man3/ERR_remove_state.3", ++ "doc/man/man3/ERR_set_mark.3", ++ "doc/man/man3/EVP_ASYM_CIPHER_free.3", ++ "doc/man/man3/EVP_BytesToKey.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_cipher_data.3", ++ "doc/man/man3/EVP_CIPHER_CTX_get_original_iv.3", ++ "doc/man/man3/EVP_CIPHER_meth_new.3", ++ "doc/man/man3/EVP_DigestInit.3", ++ "doc/man/man3/EVP_DigestSignInit.3", ++ "doc/man/man3/EVP_DigestVerifyInit.3", ++ "doc/man/man3/EVP_EncodeInit.3", ++ "doc/man/man3/EVP_EncryptInit.3", ++ "doc/man/man3/EVP_KDF.3", ++ "doc/man/man3/EVP_KEM_free.3", ++ "doc/man/man3/EVP_KEYEXCH_free.3", ++ "doc/man/man3/EVP_KEYMGMT.3", ++ "doc/man/man3/EVP_MAC.3", ++ "doc/man/man3/EVP_MD_meth_new.3", ++ "doc/man/man3/EVP_OpenInit.3", ++ "doc/man/man3/EVP_PBE_CipherInit.3", ++ "doc/man/man3/EVP_PKEY2PKCS8.3", ++ "doc/man/man3/EVP_PKEY_ASN1_METHOD.3", ++ "doc/man/man3/EVP_PKEY_CTX_ctrl.3", ++ "doc/man/man3/EVP_PKEY_CTX_get0_libctx.3", ++ "doc/man/man3/EVP_PKEY_CTX_new.3", ++ "doc/man/man3/EVP_PKEY_CTX_set1_pbe_pass.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_hkdf_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_params.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_rsa_pss_keygen_md.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_scrypt_N.3", ++ "doc/man/man3/EVP_PKEY_CTX_set_tls1_prf_md.3", ++ "doc/man/man3/EVP_PKEY_asn1_get_count.3", ++ "doc/man/man3/EVP_PKEY_check.3", ++ "doc/man/man3/EVP_PKEY_copy_parameters.3", ++ "doc/man/man3/EVP_PKEY_decapsulate.3", ++ "doc/man/man3/EVP_PKEY_decrypt.3", ++ "doc/man/man3/EVP_PKEY_derive.3", ++ "doc/man/man3/EVP_PKEY_digestsign_supports_digest.3", ++ "doc/man/man3/EVP_PKEY_encapsulate.3", ++ "doc/man/man3/EVP_PKEY_encrypt.3", ++ "doc/man/man3/EVP_PKEY_fromdata.3", ++ "doc/man/man3/EVP_PKEY_get_default_digest_nid.3", ++ "doc/man/man3/EVP_PKEY_get_field_type.3", ++ "doc/man/man3/EVP_PKEY_get_group_name.3", ++ "doc/man/man3/EVP_PKEY_get_size.3", ++ "doc/man/man3/EVP_PKEY_gettable_params.3", ++ "doc/man/man3/EVP_PKEY_is_a.3", ++ "doc/man/man3/EVP_PKEY_keygen.3", ++ "doc/man/man3/EVP_PKEY_meth_get_count.3", ++ "doc/man/man3/EVP_PKEY_meth_new.3", ++ "doc/man/man3/EVP_PKEY_new.3", ++ "doc/man/man3/EVP_PKEY_print_private.3", ++ "doc/man/man3/EVP_PKEY_set1_RSA.3", ++ "doc/man/man3/EVP_PKEY_set1_encoded_public_key.3", ++ "doc/man/man3/EVP_PKEY_set_type.3", ++ "doc/man/man3/EVP_PKEY_settable_params.3", ++ "doc/man/man3/EVP_PKEY_sign.3", ++ "doc/man/man3/EVP_PKEY_todata.3", ++ "doc/man/man3/EVP_PKEY_verify.3", ++ "doc/man/man3/EVP_PKEY_verify_recover.3", ++ "doc/man/man3/EVP_RAND.3", ++ "doc/man/man3/EVP_SIGNATURE.3", ++ "doc/man/man3/EVP_SealInit.3", ++ "doc/man/man3/EVP_SignInit.3", ++ "doc/man/man3/EVP_VerifyInit.3", ++ "doc/man/man3/EVP_aes_128_gcm.3", ++ "doc/man/man3/EVP_aria_128_gcm.3", ++ "doc/man/man3/EVP_bf_cbc.3", ++ "doc/man/man3/EVP_blake2b512.3", ++ "doc/man/man3/EVP_camellia_128_ecb.3", ++ "doc/man/man3/EVP_cast5_cbc.3", ++ "doc/man/man3/EVP_chacha20.3", ++ "doc/man/man3/EVP_des_cbc.3", ++ "doc/man/man3/EVP_desx_cbc.3", ++ "doc/man/man3/EVP_idea_cbc.3", ++ "doc/man/man3/EVP_md2.3", ++ "doc/man/man3/EVP_md4.3", ++ "doc/man/man3/EVP_md5.3", ++ "doc/man/man3/EVP_mdc2.3", ++ "doc/man/man3/EVP_rc2_cbc.3", ++ "doc/man/man3/EVP_rc4.3", ++ "doc/man/man3/EVP_rc5_32_12_16_cbc.3", ++ "doc/man/man3/EVP_ripemd160.3", ++ "doc/man/man3/EVP_seed_cbc.3", ++ "doc/man/man3/EVP_set_default_properties.3", ++ "doc/man/man3/EVP_sha1.3", ++ "doc/man/man3/EVP_sha224.3", ++ "doc/man/man3/EVP_sha3_224.3", ++ "doc/man/man3/EVP_sm3.3", ++ "doc/man/man3/EVP_sm4_cbc.3", ++ "doc/man/man3/EVP_whirlpool.3", ++ "doc/man/man3/HMAC.3", ++ "doc/man/man3/MD5.3", ++ "doc/man/man3/MDC2_Init.3", ++ "doc/man/man3/NCONF_new_ex.3", ++ "doc/man/man3/OBJ_nid2obj.3", ++ "doc/man/man3/OCSP_REQUEST_new.3", ++ "doc/man/man3/OCSP_cert_to_id.3", ++ "doc/man/man3/OCSP_request_add1_nonce.3", ++ "doc/man/man3/OCSP_resp_find_status.3", ++ "doc/man/man3/OCSP_response_status.3", ++ "doc/man/man3/OCSP_sendreq_new.3", ++ "doc/man/man3/OPENSSL_Applink.3", ++ "doc/man/man3/OPENSSL_FILE.3", ++ "doc/man/man3/OPENSSL_LH_COMPFUNC.3", ++ "doc/man/man3/OPENSSL_LH_stats.3", ++ "doc/man/man3/OPENSSL_config.3", ++ "doc/man/man3/OPENSSL_fork_prepare.3", ++ "doc/man/man3/OPENSSL_hexchar2int.3", ++ "doc/man/man3/OPENSSL_ia32cap.3", ++ "doc/man/man3/OPENSSL_init_crypto.3", ++ "doc/man/man3/OPENSSL_init_ssl.3", ++ "doc/man/man3/OPENSSL_instrument_bus.3", ++ "doc/man/man3/OPENSSL_load_builtin_modules.3", ++ "doc/man/man3/OPENSSL_malloc.3", ++ "doc/man/man3/OPENSSL_s390xcap.3", ++ "doc/man/man3/OPENSSL_secure_malloc.3", ++ "doc/man/man3/OPENSSL_strcasecmp.3", ++ "doc/man/man3/OSSL_CMP_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_HDR_get0_transactionID.3", ++ "doc/man/man3/OSSL_CMP_ITAV_set0.3", ++ "doc/man/man3/OSSL_CMP_MSG_get0_header.3", ++ "doc/man/man3/OSSL_CMP_MSG_http_perform.3", ++ "doc/man/man3/OSSL_CMP_SRV_CTX_new.3", ++ "doc/man/man3/OSSL_CMP_STATUSINFO_new.3", ++ "doc/man/man3/OSSL_CMP_exec_certreq.3", ++ "doc/man/man3/OSSL_CMP_log_open.3", ++ "doc/man/man3/OSSL_CMP_validate_msg.3", ++ "doc/man/man3/OSSL_CORE_MAKE_FUNC.3", ++ "doc/man/man3/OSSL_CRMF_MSG_get0_tmpl.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set0_validity.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regCtrl_regToken.3", ++ "doc/man/man3/OSSL_CRMF_MSG_set1_regInfo_certReq.3", ++ "doc/man/man3/OSSL_CRMF_pbmp_new.3", ++ "doc/man/man3/OSSL_DECODER.3", ++ "doc/man/man3/OSSL_DECODER_CTX.3", ++ "doc/man/man3/OSSL_DECODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_DECODER_from_bio.3", ++ "doc/man/man3/OSSL_ENCODER.3", ++ "doc/man/man3/OSSL_ENCODER_CTX.3", ++ "doc/man/man3/OSSL_ENCODER_CTX_new_for_pkey.3", ++ "doc/man/man3/OSSL_ENCODER_to_bio.3", ++ "doc/man/man3/OSSL_ESS_check_signing_certs.3", ++ "doc/man/man3/OSSL_HTTP_REQ_CTX.3", ++ "doc/man/man3/OSSL_HTTP_parse_url.3", ++ "doc/man/man3/OSSL_HTTP_transfer.3", ++ "doc/man/man3/OSSL_LIB_CTX.3", ++ "doc/man/man3/OSSL_PARAM.3", ++ "doc/man/man3/OSSL_PARAM_BLD.3", ++ "doc/man/man3/OSSL_PARAM_allocate_from_text.3", ++ "doc/man/man3/OSSL_PARAM_dup.3", ++ "doc/man/man3/OSSL_PARAM_int.3", ++ "doc/man/man3/OSSL_PROVIDER.3", ++ "doc/man/man3/OSSL_SELF_TEST_new.3", ++ "doc/man/man3/OSSL_SELF_TEST_set_callback.3", ++ "doc/man/man3/OSSL_STORE_INFO.3", ++ "doc/man/man3/OSSL_STORE_LOADER.3", ++ "doc/man/man3/OSSL_STORE_SEARCH.3", ++ "doc/man/man3/OSSL_STORE_attach.3", ++ "doc/man/man3/OSSL_STORE_expect.3", ++ "doc/man/man3/OSSL_STORE_open.3", ++ "doc/man/man3/OSSL_trace_enabled.3", ++ "doc/man/man3/OSSL_trace_get_category_num.3", ++ "doc/man/man3/OSSL_trace_set_channel.3", ++ "doc/man/man3/OpenSSL_add_all_algorithms.3", ++ "doc/man/man3/OpenSSL_version.3", ++ "doc/man/man3/PEM_X509_INFO_read_bio_ex.3", ++ "doc/man/man3/PEM_bytes_read_bio.3", ++ "doc/man/man3/PEM_read.3", ++ "doc/man/man3/PEM_read_CMS.3", ++ "doc/man/man3/PEM_read_bio_PrivateKey.3", ++ "doc/man/man3/PEM_read_bio_ex.3", ++ "doc/man/man3/PEM_write_bio_CMS_stream.3", ++ "doc/man/man3/PEM_write_bio_PKCS7_stream.3", ++ "doc/man/man3/PKCS12_PBE_keyivgen.3", ++ "doc/man/man3/PKCS12_SAFEBAG_create_cert.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get0_attrs.3", ++ "doc/man/man3/PKCS12_SAFEBAG_get1_cert.3", ++ "doc/man/man3/PKCS12_add1_attr_by_NID.3", ++ "doc/man/man3/PKCS12_add_CSPName_asc.3", ++ "doc/man/man3/PKCS12_add_cert.3", ++ "doc/man/man3/PKCS12_add_friendlyname_asc.3", ++ "doc/man/man3/PKCS12_add_localkeyid.3", ++ "doc/man/man3/PKCS12_add_safe.3", ++ "doc/man/man3/PKCS12_create.3", ++ "doc/man/man3/PKCS12_decrypt_skey.3", ++ "doc/man/man3/PKCS12_gen_mac.3", ++ "doc/man/man3/PKCS12_get_friendlyname.3", ++ "doc/man/man3/PKCS12_init.3", ++ "doc/man/man3/PKCS12_item_decrypt_d2i.3", ++ "doc/man/man3/PKCS12_key_gen_utf8_ex.3", ++ "doc/man/man3/PKCS12_newpass.3", ++ "doc/man/man3/PKCS12_pack_p7encdata.3", ++ "doc/man/man3/PKCS12_parse.3", ++ "doc/man/man3/PKCS5_PBE_keyivgen.3", ++ "doc/man/man3/PKCS5_PBKDF2_HMAC.3", ++ "doc/man/man3/PKCS7_decrypt.3", ++ "doc/man/man3/PKCS7_encrypt.3", ++ "doc/man/man3/PKCS7_get_octet_string.3", ++ "doc/man/man3/PKCS7_sign.3", ++ "doc/man/man3/PKCS7_sign_add_signer.3", ++ "doc/man/man3/PKCS7_type_is_other.3", ++ "doc/man/man3/PKCS7_verify.3", ++ "doc/man/man3/PKCS8_encrypt.3", ++ "doc/man/man3/PKCS8_pkey_add1_attr.3", ++ "doc/man/man3/RAND_add.3", ++ "doc/man/man3/RAND_bytes.3", ++ "doc/man/man3/RAND_cleanup.3", ++ "doc/man/man3/RAND_egd.3", ++ "doc/man/man3/RAND_get0_primary.3", ++ "doc/man/man3/RAND_load_file.3", ++ "doc/man/man3/RAND_set_DRBG_type.3", ++ "doc/man/man3/RAND_set_rand_method.3", ++ "doc/man/man3/RC4_set_key.3", ++ "doc/man/man3/RIPEMD160_Init.3", ++ "doc/man/man3/RSA_blinding_on.3", ++ "doc/man/man3/RSA_check_key.3", ++ "doc/man/man3/RSA_generate_key.3", ++ "doc/man/man3/RSA_get0_key.3", ++ "doc/man/man3/RSA_meth_new.3", ++ "doc/man/man3/RSA_new.3", ++ "doc/man/man3/RSA_padding_add_PKCS1_type_1.3", ++ "doc/man/man3/RSA_print.3", ++ "doc/man/man3/RSA_private_encrypt.3", ++ "doc/man/man3/RSA_public_encrypt.3", ++ "doc/man/man3/RSA_set_method.3", ++ "doc/man/man3/RSA_sign.3", ++ "doc/man/man3/RSA_sign_ASN1_OCTET_STRING.3", ++ "doc/man/man3/RSA_size.3", ++ "doc/man/man3/SCT_new.3", ++ "doc/man/man3/SCT_print.3", ++ "doc/man/man3/SCT_validate.3", ++ "doc/man/man3/SHA256_Init.3", ++ "doc/man/man3/SMIME_read_ASN1.3", ++ "doc/man/man3/SMIME_read_CMS.3", ++ "doc/man/man3/SMIME_read_PKCS7.3", ++ "doc/man/man3/SMIME_write_ASN1.3", ++ "doc/man/man3/SMIME_write_CMS.3", ++ "doc/man/man3/SMIME_write_PKCS7.3", ++ "doc/man/man3/SRP_Calc_B.3", ++ "doc/man/man3/SRP_VBASE_new.3", ++ "doc/man/man3/SRP_create_verifier.3", ++ "doc/man/man3/SRP_user_pwd_new.3", ++ "doc/man/man3/SSL_CIPHER_get_name.3", ++ "doc/man/man3/SSL_COMP_add_compression_method.3", ++ "doc/man/man3/SSL_CONF_CTX_new.3", ++ "doc/man/man3/SSL_CONF_CTX_set1_prefix.3", ++ "doc/man/man3/SSL_CONF_CTX_set_flags.3", ++ "doc/man/man3/SSL_CONF_CTX_set_ssl_ctx.3", ++ "doc/man/man3/SSL_CONF_cmd.3", ++ "doc/man/man3/SSL_CONF_cmd_argv.3", ++ "doc/man/man3/SSL_CTX_add1_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_extra_chain_cert.3", ++ "doc/man/man3/SSL_CTX_add_session.3", ++ "doc/man/man3/SSL_CTX_config.3", ++ "doc/man/man3/SSL_CTX_ctrl.3", ++ "doc/man/man3/SSL_CTX_dane_enable.3", ++ "doc/man/man3/SSL_CTX_flush_sessions.3", ++ "doc/man/man3/SSL_CTX_free.3", ++ "doc/man/man3/SSL_CTX_get0_param.3", ++ "doc/man/man3/SSL_CTX_get_verify_mode.3", ++ "doc/man/man3/SSL_CTX_has_client_custom_ext.3", ++ "doc/man/man3/SSL_CTX_load_verify_locations.3", ++ "doc/man/man3/SSL_CTX_new.3", ++ "doc/man/man3/SSL_CTX_sess_number.3", ++ "doc/man/man3/SSL_CTX_sess_set_cache_size.3", ++ "doc/man/man3/SSL_CTX_sess_set_get_cb.3", ++ "doc/man/man3/SSL_CTX_sessions.3", ++ "doc/man/man3/SSL_CTX_set0_CA_list.3", ++ "doc/man/man3/SSL_CTX_set1_curves.3", ++ "doc/man/man3/SSL_CTX_set1_sigalgs.3", ++ "doc/man/man3/SSL_CTX_set1_verify_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_alpn_select_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_cert_store.3", ++ "doc/man/man3/SSL_CTX_set_cert_verify_callback.3", ++ "doc/man/man3/SSL_CTX_set_cipher_list.3", ++ "doc/man/man3/SSL_CTX_set_client_cert_cb.3", ++ "doc/man/man3/SSL_CTX_set_client_hello_cb.3", ++ "doc/man/man3/SSL_CTX_set_ct_validation_callback.3", ++ "doc/man/man3/SSL_CTX_set_ctlog_list_file.3", ++ "doc/man/man3/SSL_CTX_set_default_passwd_cb.3", ++ "doc/man/man3/SSL_CTX_set_generate_session_id.3", ++ "doc/man/man3/SSL_CTX_set_info_callback.3", ++ "doc/man/man3/SSL_CTX_set_keylog_callback.3", ++ "doc/man/man3/SSL_CTX_set_max_cert_list.3", ++ "doc/man/man3/SSL_CTX_set_min_proto_version.3", ++ "doc/man/man3/SSL_CTX_set_mode.3", ++ "doc/man/man3/SSL_CTX_set_msg_callback.3", ++ "doc/man/man3/SSL_CTX_set_num_tickets.3", ++ "doc/man/man3/SSL_CTX_set_options.3", ++ "doc/man/man3/SSL_CTX_set_psk_client_callback.3", ++ "doc/man/man3/SSL_CTX_set_quic_method.3", ++ "doc/man/man3/SSL_CTX_set_quiet_shutdown.3", ++ "doc/man/man3/SSL_CTX_set_read_ahead.3", ++ "doc/man/man3/SSL_CTX_set_record_padding_callback.3", ++ "doc/man/man3/SSL_CTX_set_security_level.3", ++ "doc/man/man3/SSL_CTX_set_session_cache_mode.3", ++ "doc/man/man3/SSL_CTX_set_session_id_context.3", ++ "doc/man/man3/SSL_CTX_set_session_ticket_cb.3", ++ "doc/man/man3/SSL_CTX_set_split_send_fragment.3", ++ "doc/man/man3/SSL_CTX_set_srp_password.3", ++ "doc/man/man3/SSL_CTX_set_ssl_version.3", ++ "doc/man/man3/SSL_CTX_set_stateless_cookie_generate_cb.3", ++ "doc/man/man3/SSL_CTX_set_timeout.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_servername_callback.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_status_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_ticket_key_cb.3", ++ "doc/man/man3/SSL_CTX_set_tlsext_use_srtp.3", ++ "doc/man/man3/SSL_CTX_set_tmp_dh_callback.3", ++ "doc/man/man3/SSL_CTX_set_tmp_ecdh.3", ++ "doc/man/man3/SSL_CTX_set_verify.3", ++ "doc/man/man3/SSL_CTX_use_certificate.3", ++ "doc/man/man3/SSL_CTX_use_psk_identity_hint.3", ++ "doc/man/man3/SSL_CTX_use_serverinfo.3", ++ "doc/man/man3/SSL_SESSION_free.3", ++ "doc/man/man3/SSL_SESSION_get0_cipher.3", ++ "doc/man/man3/SSL_SESSION_get0_hostname.3", ++ "doc/man/man3/SSL_SESSION_get0_id_context.3", ++ "doc/man/man3/SSL_SESSION_get0_peer.3", ++ "doc/man/man3/SSL_SESSION_get_compress_id.3", ++ "doc/man/man3/SSL_SESSION_get_protocol_version.3", ++ "doc/man/man3/SSL_SESSION_get_time.3", ++ "doc/man/man3/SSL_SESSION_has_ticket.3", ++ "doc/man/man3/SSL_SESSION_is_resumable.3", ++ "doc/man/man3/SSL_SESSION_print.3", ++ "doc/man/man3/SSL_SESSION_set1_id.3", ++ "doc/man/man3/SSL_accept.3", ++ "doc/man/man3/SSL_alert_type_string.3", ++ "doc/man/man3/SSL_alloc_buffers.3", ++ "doc/man/man3/SSL_check_chain.3", ++ "doc/man/man3/SSL_clear.3", ++ "doc/man/man3/SSL_connect.3", ++ "doc/man/man3/SSL_do_handshake.3", ++ "doc/man/man3/SSL_export_keying_material.3", ++ "doc/man/man3/SSL_extension_supported.3", ++ "doc/man/man3/SSL_free.3", ++ "doc/man/man3/SSL_get0_peer_scts.3", ++ "doc/man/man3/SSL_get_SSL_CTX.3", ++ "doc/man/man3/SSL_get_all_async_fds.3", ++ "doc/man/man3/SSL_get_certificate.3", ++ "doc/man/man3/SSL_get_ciphers.3", ++ "doc/man/man3/SSL_get_client_random.3", ++ "doc/man/man3/SSL_get_current_cipher.3", ++ "doc/man/man3/SSL_get_default_timeout.3", ++ "doc/man/man3/SSL_get_error.3", ++ "doc/man/man3/SSL_get_extms_support.3", ++ "doc/man/man3/SSL_get_fd.3", ++ "doc/man/man3/SSL_get_peer_cert_chain.3", ++ "doc/man/man3/SSL_get_peer_certificate.3", ++ "doc/man/man3/SSL_get_peer_signature_nid.3", ++ "doc/man/man3/SSL_get_peer_tmp_key.3", ++ "doc/man/man3/SSL_get_psk_identity.3", ++ "doc/man/man3/SSL_get_rbio.3", ++ "doc/man/man3/SSL_get_session.3", ++ "doc/man/man3/SSL_get_shared_sigalgs.3", ++ "doc/man/man3/SSL_get_verify_result.3", ++ "doc/man/man3/SSL_get_version.3", ++ "doc/man/man3/SSL_group_to_name.3", ++ "doc/man/man3/SSL_in_init.3", ++ "doc/man/man3/SSL_key_update.3", ++ "doc/man/man3/SSL_library_init.3", ++ "doc/man/man3/SSL_load_client_CA_file.3", ++ "doc/man/man3/SSL_new.3", ++ "doc/man/man3/SSL_pending.3", ++ "doc/man/man3/SSL_read.3", ++ "doc/man/man3/SSL_read_early_data.3", ++ "doc/man/man3/SSL_rstate_string.3", ++ "doc/man/man3/SSL_session_reused.3", ++ "doc/man/man3/SSL_set1_host.3", ++ "doc/man/man3/SSL_set_async_callback.3", ++ "doc/man/man3/SSL_set_bio.3", ++ "doc/man/man3/SSL_set_connect_state.3", ++ "doc/man/man3/SSL_set_fd.3", ++ "doc/man/man3/SSL_set_retry_verify.3", ++ "doc/man/man3/SSL_set_session.3", ++ "doc/man/man3/SSL_set_shutdown.3", ++ "doc/man/man3/SSL_set_verify_result.3", ++ "doc/man/man3/SSL_shutdown.3", ++ "doc/man/man3/SSL_state_string.3", ++ "doc/man/man3/SSL_want.3", ++ "doc/man/man3/SSL_write.3", ++ "doc/man/man3/TS_RESP_CTX_new.3", ++ "doc/man/man3/TS_VERIFY_CTX_set_certs.3", ++ "doc/man/man3/UI_STRING.3", ++ "doc/man/man3/UI_UTIL_read_pw.3", ++ "doc/man/man3/UI_create_method.3", ++ "doc/man/man3/UI_new.3", ++ "doc/man/man3/X509V3_get_d2i.3", ++ "doc/man/man3/X509V3_set_ctx.3", ++ "doc/man/man3/X509_ALGOR_dup.3", ++ "doc/man/man3/X509_CRL_get0_by_serial.3", ++ "doc/man/man3/X509_EXTENSION_set_object.3", ++ "doc/man/man3/X509_LOOKUP.3", ++ "doc/man/man3/X509_LOOKUP_hash_dir.3", ++ "doc/man/man3/X509_LOOKUP_meth_new.3", ++ "doc/man/man3/X509_NAME_ENTRY_get_object.3", ++ "doc/man/man3/X509_NAME_add_entry_by_txt.3", ++ "doc/man/man3/X509_NAME_get0_der.3", ++ "doc/man/man3/X509_NAME_get_index_by_NID.3", ++ "doc/man/man3/X509_NAME_print_ex.3", ++ "doc/man/man3/X509_PUBKEY_new.3", ++ "doc/man/man3/X509_SIG_get0.3", ++ "doc/man/man3/X509_STORE_CTX_get_error.3", ++ "doc/man/man3/X509_STORE_CTX_new.3", ++ "doc/man/man3/X509_STORE_CTX_set_verify_cb.3", ++ "doc/man/man3/X509_STORE_add_cert.3", ++ "doc/man/man3/X509_STORE_get0_param.3", ++ "doc/man/man3/X509_STORE_new.3", ++ "doc/man/man3/X509_STORE_set_verify_cb_func.3", ++ "doc/man/man3/X509_VERIFY_PARAM_set_flags.3", ++ "doc/man/man3/X509_add_cert.3", ++ "doc/man/man3/X509_check_ca.3", ++ "doc/man/man3/X509_check_host.3", ++ "doc/man/man3/X509_check_issued.3", ++ "doc/man/man3/X509_check_private_key.3", ++ "doc/man/man3/X509_check_purpose.3", ++ "doc/man/man3/X509_cmp.3", ++ "doc/man/man3/X509_cmp_time.3", ++ "doc/man/man3/X509_digest.3", ++ "doc/man/man3/X509_dup.3", ++ "doc/man/man3/X509_get0_distinguishing_id.3", ++ "doc/man/man3/X509_get0_notBefore.3", ++ "doc/man/man3/X509_get0_signature.3", ++ "doc/man/man3/X509_get0_uids.3", ++ "doc/man/man3/X509_get_extension_flags.3", ++ "doc/man/man3/X509_get_pubkey.3", ++ "doc/man/man3/X509_get_serialNumber.3", ++ "doc/man/man3/X509_get_subject_name.3", ++ "doc/man/man3/X509_get_version.3", ++ "doc/man/man3/X509_load_http.3", ++ "doc/man/man3/X509_new.3", ++ "doc/man/man3/X509_sign.3", ++ "doc/man/man3/X509_verify.3", ++ "doc/man/man3/X509_verify_cert.3", ++ "doc/man/man3/X509v3_get_ext_by_NID.3", ++ "doc/man/man3/b2i_PVK_bio_ex.3", ++ "doc/man/man3/d2i_PKCS8PrivateKey_bio.3", ++ "doc/man/man3/d2i_PrivateKey.3", ++ "doc/man/man3/d2i_RSAPrivateKey.3", ++ "doc/man/man3/d2i_SSL_SESSION.3", ++ "doc/man/man3/d2i_X509.3", ++ "doc/man/man3/i2d_CMS_bio_stream.3", ++ "doc/man/man3/i2d_PKCS7_bio_stream.3", ++ "doc/man/man3/i2d_re_X509_tbs.3", ++ "doc/man/man3/o2i_SCT_LIST.3", ++ "doc/man/man3/s2i_ASN1_IA5STRING.3" ++ ], ++ "man5" => [ ++ "doc/man/man5/config.5", ++ "doc/man/man5/fips_config.5", ++ "doc/man/man5/x509v3_config.5" ++ ], ++ "man7" => [ ++ "doc/man/man7/EVP_ASYM_CIPHER-SM2.7", ++ "doc/man/man7/EVP_CIPHER-AES.7", ++ "doc/man/man7/EVP_CIPHER-ARIA.7", ++ "doc/man/man7/EVP_CIPHER-BLOWFISH.7", ++ "doc/man/man7/EVP_CIPHER-CAMELLIA.7", ++ "doc/man/man7/EVP_CIPHER-CAST.7", ++ "doc/man/man7/EVP_CIPHER-CHACHA.7", ++ "doc/man/man7/EVP_CIPHER-DES.7", ++ "doc/man/man7/EVP_CIPHER-IDEA.7", ++ "doc/man/man7/EVP_CIPHER-RC2.7", ++ "doc/man/man7/EVP_CIPHER-RC4.7", ++ "doc/man/man7/EVP_CIPHER-RC5.7", ++ "doc/man/man7/EVP_CIPHER-SEED.7", ++ "doc/man/man7/EVP_CIPHER-SM4.7", ++ "doc/man/man7/EVP_KDF-HKDF.7", ++ "doc/man/man7/EVP_KDF-KB.7", ++ "doc/man/man7/EVP_KDF-KRB5KDF.7", ++ "doc/man/man7/EVP_KDF-PBKDF1.7", ++ "doc/man/man7/EVP_KDF-PBKDF2.7", ++ "doc/man/man7/EVP_KDF-PKCS12KDF.7", ++ "doc/man/man7/EVP_KDF-SCRYPT.7", ++ "doc/man/man7/EVP_KDF-SS.7", ++ "doc/man/man7/EVP_KDF-SSHKDF.7", ++ "doc/man/man7/EVP_KDF-TLS13_KDF.7", ++ "doc/man/man7/EVP_KDF-TLS1_PRF.7", ++ "doc/man/man7/EVP_KDF-X942-ASN1.7", ++ "doc/man/man7/EVP_KDF-X942-CONCAT.7", ++ "doc/man/man7/EVP_KDF-X963.7", ++ "doc/man/man7/EVP_KEM-RSA.7", ++ "doc/man/man7/EVP_KEYEXCH-DH.7", ++ "doc/man/man7/EVP_KEYEXCH-ECDH.7", ++ "doc/man/man7/EVP_KEYEXCH-X25519.7", ++ "doc/man/man7/EVP_MAC-BLAKE2.7", ++ "doc/man/man7/EVP_MAC-CMAC.7", ++ "doc/man/man7/EVP_MAC-GMAC.7", ++ "doc/man/man7/EVP_MAC-HMAC.7", ++ "doc/man/man7/EVP_MAC-KMAC.7", ++ "doc/man/man7/EVP_MAC-Poly1305.7", ++ "doc/man/man7/EVP_MAC-Siphash.7", ++ "doc/man/man7/EVP_MD-BLAKE2.7", ++ "doc/man/man7/EVP_MD-MD2.7", ++ "doc/man/man7/EVP_MD-MD4.7", ++ "doc/man/man7/EVP_MD-MD5-SHA1.7", ++ "doc/man/man7/EVP_MD-MD5.7", ++ "doc/man/man7/EVP_MD-MDC2.7", ++ "doc/man/man7/EVP_MD-RIPEMD160.7", ++ "doc/man/man7/EVP_MD-SHA1.7", ++ "doc/man/man7/EVP_MD-SHA2.7", ++ "doc/man/man7/EVP_MD-SHA3.7", ++ "doc/man/man7/EVP_MD-SHAKE.7", ++ "doc/man/man7/EVP_MD-SM3.7", ++ "doc/man/man7/EVP_MD-WHIRLPOOL.7", ++ "doc/man/man7/EVP_MD-common.7", ++ "doc/man/man7/EVP_PKEY-DH.7", ++ "doc/man/man7/EVP_PKEY-DSA.7", ++ "doc/man/man7/EVP_PKEY-EC.7", ++ "doc/man/man7/EVP_PKEY-FFC.7", ++ "doc/man/man7/EVP_PKEY-HMAC.7", ++ "doc/man/man7/EVP_PKEY-RSA.7", ++ "doc/man/man7/EVP_PKEY-SM2.7", ++ "doc/man/man7/EVP_PKEY-X25519.7", ++ "doc/man/man7/EVP_RAND-CTR-DRBG.7", ++ "doc/man/man7/EVP_RAND-HASH-DRBG.7", ++ "doc/man/man7/EVP_RAND-HMAC-DRBG.7", ++ "doc/man/man7/EVP_RAND-SEED-SRC.7", ++ "doc/man/man7/EVP_RAND-TEST-RAND.7", ++ "doc/man/man7/EVP_RAND.7", ++ "doc/man/man7/EVP_SIGNATURE-DSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ECDSA.7", ++ "doc/man/man7/EVP_SIGNATURE-ED25519.7", ++ "doc/man/man7/EVP_SIGNATURE-HMAC.7", ++ "doc/man/man7/EVP_SIGNATURE-RSA.7", ++ "doc/man/man7/OSSL_PROVIDER-FIPS.7", ++ "doc/man/man7/OSSL_PROVIDER-base.7", ++ "doc/man/man7/OSSL_PROVIDER-default.7", ++ "doc/man/man7/OSSL_PROVIDER-legacy.7", ++ "doc/man/man7/OSSL_PROVIDER-null.7", ++ "doc/man/man7/RAND.7", ++ "doc/man/man7/RSA-PSS.7", ++ "doc/man/man7/X25519.7", ++ "doc/man/man7/bio.7", ++ "doc/man/man7/crypto.7", ++ "doc/man/man7/ct.7", ++ "doc/man/man7/des_modes.7", ++ "doc/man/man7/evp.7", ++ "doc/man/man7/fips_module.7", ++ "doc/man/man7/life_cycle-cipher.7", ++ "doc/man/man7/life_cycle-digest.7", ++ "doc/man/man7/life_cycle-kdf.7", ++ "doc/man/man7/life_cycle-mac.7", ++ "doc/man/man7/life_cycle-pkey.7", ++ "doc/man/man7/life_cycle-rand.7", ++ "doc/man/man7/migration_guide.7", ++ "doc/man/man7/openssl-core.h.7", ++ "doc/man/man7/openssl-core_dispatch.h.7", ++ "doc/man/man7/openssl-core_names.h.7", ++ "doc/man/man7/openssl-env.7", ++ "doc/man/man7/openssl-glossary.7", ++ "doc/man/man7/openssl-threads.7", ++ "doc/man/man7/openssl_user_macros.7", ++ "doc/man/man7/ossl_store-file.7", ++ "doc/man/man7/ossl_store.7", ++ "doc/man/man7/passphrase-encoding.7", ++ "doc/man/man7/property.7", ++ "doc/man/man7/provider-asym_cipher.7", ++ "doc/man/man7/provider-base.7", ++ "doc/man/man7/provider-cipher.7", ++ "doc/man/man7/provider-decoder.7", ++ "doc/man/man7/provider-digest.7", ++ "doc/man/man7/provider-encoder.7", ++ "doc/man/man7/provider-kdf.7", ++ "doc/man/man7/provider-kem.7", ++ "doc/man/man7/provider-keyexch.7", ++ "doc/man/man7/provider-keymgmt.7", ++ "doc/man/man7/provider-mac.7", ++ "doc/man/man7/provider-object.7", ++ "doc/man/man7/provider-rand.7", ++ "doc/man/man7/provider-signature.7", ++ "doc/man/man7/provider-storemgmt.7", ++ "doc/man/man7/provider.7", ++ "doc/man/man7/proxy-certificates.7", ++ "doc/man/man7/ssl.7", ++ "doc/man/man7/x509.7" ++ ] ++ }, ++ "modules" => [ ++ "providers/fips", ++ "providers/legacy", ++ "test/p_test" ++ ], ++ "programs" => [ ++ "apps/openssl", ++ "fuzz/asn1-test", ++ "fuzz/asn1parse-test", ++ "fuzz/bignum-test", ++ "fuzz/bndiv-test", ++ "fuzz/client-test", ++ "fuzz/cmp-test", ++ "fuzz/cms-test", ++ "fuzz/conf-test", ++ "fuzz/crl-test", ++ "fuzz/ct-test", ++ "fuzz/server-test", ++ "fuzz/x509-test", ++ "test/aborttest", ++ "test/acvp_test", ++ "test/aesgcmtest", ++ "test/afalgtest", ++ "test/algorithmid_test", ++ "test/asn1_decode_test", ++ "test/asn1_dsa_internal_test", ++ "test/asn1_encode_test", ++ "test/asn1_internal_test", ++ "test/asn1_string_table_test", ++ "test/asn1_time_test", ++ "test/asynciotest", ++ "test/asynctest", ++ "test/bad_dtls_test", ++ "test/bftest", ++ "test/bio_callback_test", ++ "test/bio_core_test", ++ "test/bio_enc_test", ++ "test/bio_memleak_test", ++ "test/bio_prefix_text", ++ "test/bio_readbuffer_test", ++ "test/bioprinttest", ++ "test/bn_internal_test", ++ "test/bntest", ++ "test/buildtest_c_aes", ++ "test/buildtest_c_async", ++ "test/buildtest_c_blowfish", ++ "test/buildtest_c_bn", ++ "test/buildtest_c_buffer", ++ "test/buildtest_c_camellia", ++ "test/buildtest_c_cast", ++ "test/buildtest_c_cmac", ++ "test/buildtest_c_cmp_util", ++ "test/buildtest_c_conf_api", ++ "test/buildtest_c_conftypes", ++ "test/buildtest_c_core", ++ "test/buildtest_c_core_dispatch", ++ "test/buildtest_c_core_names", ++ "test/buildtest_c_core_object", ++ "test/buildtest_c_cryptoerr_legacy", ++ "test/buildtest_c_decoder", ++ "test/buildtest_c_des", ++ "test/buildtest_c_dh", ++ "test/buildtest_c_dsa", ++ "test/buildtest_c_dtls1", ++ "test/buildtest_c_e_os2", ++ "test/buildtest_c_ebcdic", ++ "test/buildtest_c_ec", ++ "test/buildtest_c_ecdh", ++ "test/buildtest_c_ecdsa", ++ "test/buildtest_c_encoder", ++ "test/buildtest_c_engine", ++ "test/buildtest_c_evp", ++ "test/buildtest_c_fips_names", ++ "test/buildtest_c_hmac", ++ "test/buildtest_c_http", ++ "test/buildtest_c_idea", ++ "test/buildtest_c_kdf", ++ "test/buildtest_c_macros", ++ "test/buildtest_c_md4", ++ "test/buildtest_c_md5", ++ "test/buildtest_c_mdc2", ++ "test/buildtest_c_modes", ++ "test/buildtest_c_obj_mac", ++ "test/buildtest_c_objects", ++ "test/buildtest_c_ossl_typ", ++ "test/buildtest_c_param_build", ++ "test/buildtest_c_params", ++ "test/buildtest_c_pem", ++ "test/buildtest_c_pem2", ++ "test/buildtest_c_prov_ssl", ++ "test/buildtest_c_provider", ++ "test/buildtest_c_quic", ++ "test/buildtest_c_rand", ++ "test/buildtest_c_rc2", ++ "test/buildtest_c_rc4", ++ "test/buildtest_c_ripemd", ++ "test/buildtest_c_rsa", ++ "test/buildtest_c_seed", ++ "test/buildtest_c_self_test", ++ "test/buildtest_c_sha", ++ "test/buildtest_c_srtp", ++ "test/buildtest_c_ssl2", ++ "test/buildtest_c_sslerr_legacy", ++ "test/buildtest_c_stack", ++ "test/buildtest_c_store", ++ "test/buildtest_c_symhacks", ++ "test/buildtest_c_tls1", ++ "test/buildtest_c_ts", ++ "test/buildtest_c_txt_db", ++ "test/buildtest_c_types", ++ "test/buildtest_c_whrlpool", ++ "test/casttest", ++ "test/chacha_internal_test", ++ "test/cipher_overhead_test", ++ "test/cipherbytes_test", ++ "test/cipherlist_test", ++ "test/ciphername_test", ++ "test/clienthellotest", ++ "test/cmactest", ++ "test/cmp_asn_test", ++ "test/cmp_client_test", ++ "test/cmp_ctx_test", ++ "test/cmp_hdr_test", ++ "test/cmp_msg_test", ++ "test/cmp_protect_test", ++ "test/cmp_server_test", ++ "test/cmp_status_test", ++ "test/cmp_vfy_test", ++ "test/cmsapitest", ++ "test/conf_include_test", ++ "test/confdump", ++ "test/constant_time_test", ++ "test/context_internal_test", ++ "test/crltest", ++ "test/ct_test", ++ "test/ctype_internal_test", ++ "test/curve448_internal_test", ++ "test/d2i_test", ++ "test/danetest", ++ "test/defltfips_test", ++ "test/destest", ++ "test/dhtest", ++ "test/drbgtest", ++ "test/dsa_no_digest_size_test", ++ "test/dsatest", ++ "test/dtls_mtu_test", ++ "test/dtlstest", ++ "test/dtlsv1listentest", ++ "test/ec_internal_test", ++ "test/ecdsatest", ++ "test/ecstresstest", ++ "test/ectest", ++ "test/endecode_test", ++ "test/endecoder_legacy_test", ++ "test/enginetest", ++ "test/errtest", ++ "test/evp_extra_test", ++ "test/evp_extra_test2", ++ "test/evp_fetch_prov_test", ++ "test/evp_kdf_test", ++ "test/evp_libctx_test", ++ "test/evp_pkey_ctx_new_from_name", ++ "test/evp_pkey_dparams_test", ++ "test/evp_pkey_provided_test", ++ "test/evp_test", ++ "test/exdatatest", ++ "test/exptest", ++ "test/fatalerrtest", ++ "test/ffc_internal_test", ++ "test/gmdifftest", ++ "test/hexstr_test", ++ "test/hmactest", ++ "test/http_test", ++ "test/ideatest", ++ "test/igetest", ++ "test/keymgmt_internal_test", ++ "test/lhash_test", ++ "test/localetest", ++ "test/mdc2_internal_test", ++ "test/mdc2test", ++ "test/memleaktest", ++ "test/modes_internal_test", ++ "test/namemap_internal_test", ++ "test/ocspapitest", ++ "test/ossl_store_test", ++ "test/packettest", ++ "test/param_build_test", ++ "test/params_api_test", ++ "test/params_conversion_test", ++ "test/params_test", ++ "test/pbelutest", ++ "test/pbetest", ++ "test/pem_read_depr_test", ++ "test/pemtest", ++ "test/pkcs12_format_test", ++ "test/pkcs7_test", ++ "test/pkey_meth_kdf_test", ++ "test/pkey_meth_test", ++ "test/poly1305_internal_test", ++ "test/property_test", ++ "test/prov_config_test", ++ "test/provfetchtest", ++ "test/provider_fallback_test", ++ "test/provider_internal_test", ++ "test/provider_pkey_test", ++ "test/provider_status_test", ++ "test/provider_test", ++ "test/rand_status_test", ++ "test/rand_test", ++ "test/rc2test", ++ "test/rc4test", ++ "test/rc5test", ++ "test/rdrand_sanitytest", ++ "test/recordlentest", ++ "test/rsa_complex", ++ "test/rsa_mp_test", ++ "test/rsa_sp800_56b_test", ++ "test/rsa_test", ++ "test/sanitytest", ++ "test/secmemtest", ++ "test/servername_test", ++ "test/sha_test", ++ "test/siphash_internal_test", ++ "test/sm2_internal_test", ++ "test/sm3_internal_test", ++ "test/sm4_internal_test", ++ "test/sparse_array_test", ++ "test/srptest", ++ "test/ssl_cert_table_internal_test", ++ "test/ssl_ctx_test", ++ "test/ssl_old_test", ++ "test/ssl_test", ++ "test/ssl_test_ctx_test", ++ "test/sslapitest", ++ "test/sslbuffertest", ++ "test/sslcorrupttest", ++ "test/stack_test", ++ "test/sysdefaulttest", ++ "test/test_test", ++ "test/threadstest", ++ "test/threadstest_fips", ++ "test/time_offset_test", ++ "test/tls13ccstest", ++ "test/tls13encryptiontest", ++ "test/uitest", ++ "test/upcallstest", ++ "test/user_property_test", ++ "test/v3ext", ++ "test/v3nametest", ++ "test/verify_extra_test", ++ "test/versions", ++ "test/wpackettest", ++ "test/x509_check_cert_pkey_test", ++ "test/x509_dup_cert_test", ++ "test/x509_internal_test", ++ "test/x509_time_test", ++ "test/x509aux" ++ ], ++ "scripts" => [ ++ "apps/CA.pl", ++ "apps/tsget.pl", ++ "tools/c_rehash", ++ "util/shlib_wrap.sh", ++ "util/wrap.pl" ++ ], ++ "shared_sources" => {}, ++ "sources" => { ++ "apps/CA.pl" => [ ++ "apps/CA.pl.in" ++ ], ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/libapps-lib-app_libctx.o" => [ ++ "apps/lib/app_libctx.c" ++ ], ++ "apps/lib/libapps-lib-app_params.o" => [ ++ "apps/lib/app_params.c" ++ ], ++ "apps/lib/libapps-lib-app_provider.o" => [ ++ "apps/lib/app_provider.c" ++ ], ++ "apps/lib/libapps-lib-app_rand.o" => [ ++ "apps/lib/app_rand.c" ++ ], ++ "apps/lib/libapps-lib-app_x509.o" => [ ++ "apps/lib/app_x509.c" ++ ], ++ "apps/lib/libapps-lib-apps.o" => [ ++ "apps/lib/apps.c" ++ ], ++ "apps/lib/libapps-lib-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/lib/libapps-lib-columns.o" => [ ++ "apps/lib/columns.c" ++ ], ++ "apps/lib/libapps-lib-engine.o" => [ ++ "apps/lib/engine.c" ++ ], ++ "apps/lib/libapps-lib-engine_loader.o" => [ ++ "apps/lib/engine_loader.c" ++ ], ++ "apps/lib/libapps-lib-fmt.o" => [ ++ "apps/lib/fmt.c" ++ ], ++ "apps/lib/libapps-lib-http_server.o" => [ ++ "apps/lib/http_server.c" ++ ], ++ "apps/lib/libapps-lib-names.o" => [ ++ "apps/lib/names.c" ++ ], ++ "apps/lib/libapps-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/libapps-lib-s_cb.o" => [ ++ "apps/lib/s_cb.c" ++ ], ++ "apps/lib/libapps-lib-s_socket.o" => [ ++ "apps/lib/s_socket.c" ++ ], ++ "apps/lib/libapps-lib-tlssrp_depr.o" => [ ++ "apps/lib/tlssrp_depr.c" ++ ], ++ "apps/lib/libtestutil-lib-opt.o" => [ ++ "apps/lib/opt.c" ++ ], ++ "apps/lib/openssl-bin-cmp_mock_srv.o" => [ ++ "apps/lib/cmp_mock_srv.c" ++ ], ++ "apps/lib/uitest-bin-apps_ui.o" => [ ++ "apps/lib/apps_ui.c" ++ ], ++ "apps/libapps.a" => [ ++ "apps/lib/libapps-lib-app_libctx.o", ++ "apps/lib/libapps-lib-app_params.o", ++ "apps/lib/libapps-lib-app_provider.o", ++ "apps/lib/libapps-lib-app_rand.o", ++ "apps/lib/libapps-lib-app_x509.o", ++ "apps/lib/libapps-lib-apps.o", ++ "apps/lib/libapps-lib-apps_ui.o", ++ "apps/lib/libapps-lib-columns.o", ++ "apps/lib/libapps-lib-engine.o", ++ "apps/lib/libapps-lib-engine_loader.o", ++ "apps/lib/libapps-lib-fmt.o", ++ "apps/lib/libapps-lib-http_server.o", ++ "apps/lib/libapps-lib-names.o", ++ "apps/lib/libapps-lib-opt.o", ++ "apps/lib/libapps-lib-s_cb.o", ++ "apps/lib/libapps-lib-s_socket.o", ++ "apps/lib/libapps-lib-tlssrp_depr.o" ++ ], ++ "apps/openssl" => [ ++ "apps/lib/openssl-bin-cmp_mock_srv.o", ++ "apps/openssl-bin-asn1parse.o", ++ "apps/openssl-bin-ca.o", ++ "apps/openssl-bin-ciphers.o", ++ "apps/openssl-bin-cmp.o", ++ "apps/openssl-bin-cms.o", ++ "apps/openssl-bin-crl.o", ++ "apps/openssl-bin-crl2pkcs7.o", ++ "apps/openssl-bin-dgst.o", ++ "apps/openssl-bin-dhparam.o", ++ "apps/openssl-bin-dsa.o", ++ "apps/openssl-bin-dsaparam.o", ++ "apps/openssl-bin-ec.o", ++ "apps/openssl-bin-ecparam.o", ++ "apps/openssl-bin-enc.o", ++ "apps/openssl-bin-engine.o", ++ "apps/openssl-bin-errstr.o", ++ "apps/openssl-bin-fipsinstall.o", ++ "apps/openssl-bin-gendsa.o", ++ "apps/openssl-bin-genpkey.o", ++ "apps/openssl-bin-genrsa.o", ++ "apps/openssl-bin-info.o", ++ "apps/openssl-bin-kdf.o", ++ "apps/openssl-bin-list.o", ++ "apps/openssl-bin-mac.o", ++ "apps/openssl-bin-nseq.o", ++ "apps/openssl-bin-ocsp.o", ++ "apps/openssl-bin-openssl.o", ++ "apps/openssl-bin-passwd.o", ++ "apps/openssl-bin-pkcs12.o", ++ "apps/openssl-bin-pkcs7.o", ++ "apps/openssl-bin-pkcs8.o", ++ "apps/openssl-bin-pkey.o", ++ "apps/openssl-bin-pkeyparam.o", ++ "apps/openssl-bin-pkeyutl.o", ++ "apps/openssl-bin-prime.o", ++ "apps/openssl-bin-progs.o", ++ "apps/openssl-bin-rand.o", ++ "apps/openssl-bin-rehash.o", ++ "apps/openssl-bin-req.o", ++ "apps/openssl-bin-rsa.o", ++ "apps/openssl-bin-rsautl.o", ++ "apps/openssl-bin-s_client.o", ++ "apps/openssl-bin-s_server.o", ++ "apps/openssl-bin-s_time.o", ++ "apps/openssl-bin-sess_id.o", ++ "apps/openssl-bin-smime.o", ++ "apps/openssl-bin-speed.o", ++ "apps/openssl-bin-spkac.o", ++ "apps/openssl-bin-srp.o", ++ "apps/openssl-bin-storeutl.o", ++ "apps/openssl-bin-ts.o", ++ "apps/openssl-bin-verify.o", ++ "apps/openssl-bin-version.o", ++ "apps/openssl-bin-x509.o" ++ ], ++ "apps/openssl-bin-asn1parse.o" => [ ++ "apps/asn1parse.c" ++ ], ++ "apps/openssl-bin-ca.o" => [ ++ "apps/ca.c" ++ ], ++ "apps/openssl-bin-ciphers.o" => [ ++ "apps/ciphers.c" ++ ], ++ "apps/openssl-bin-cmp.o" => [ ++ "apps/cmp.c" ++ ], ++ "apps/openssl-bin-cms.o" => [ ++ "apps/cms.c" ++ ], ++ "apps/openssl-bin-crl.o" => [ ++ "apps/crl.c" ++ ], ++ "apps/openssl-bin-crl2pkcs7.o" => [ ++ "apps/crl2pkcs7.c" ++ ], ++ "apps/openssl-bin-dgst.o" => [ ++ "apps/dgst.c" ++ ], ++ "apps/openssl-bin-dhparam.o" => [ ++ "apps/dhparam.c" ++ ], ++ "apps/openssl-bin-dsa.o" => [ ++ "apps/dsa.c" ++ ], ++ "apps/openssl-bin-dsaparam.o" => [ ++ "apps/dsaparam.c" ++ ], ++ "apps/openssl-bin-ec.o" => [ ++ "apps/ec.c" ++ ], ++ "apps/openssl-bin-ecparam.o" => [ ++ "apps/ecparam.c" ++ ], ++ "apps/openssl-bin-enc.o" => [ ++ "apps/enc.c" ++ ], ++ "apps/openssl-bin-engine.o" => [ ++ "apps/engine.c" ++ ], ++ "apps/openssl-bin-errstr.o" => [ ++ "apps/errstr.c" ++ ], ++ "apps/openssl-bin-fipsinstall.o" => [ ++ "apps/fipsinstall.c" ++ ], ++ "apps/openssl-bin-gendsa.o" => [ ++ "apps/gendsa.c" ++ ], ++ "apps/openssl-bin-genpkey.o" => [ ++ "apps/genpkey.c" ++ ], ++ "apps/openssl-bin-genrsa.o" => [ ++ "apps/genrsa.c" ++ ], ++ "apps/openssl-bin-info.o" => [ ++ "apps/info.c" ++ ], ++ "apps/openssl-bin-kdf.o" => [ ++ "apps/kdf.c" ++ ], ++ "apps/openssl-bin-list.o" => [ ++ "apps/list.c" ++ ], ++ "apps/openssl-bin-mac.o" => [ ++ "apps/mac.c" ++ ], ++ "apps/openssl-bin-nseq.o" => [ ++ "apps/nseq.c" ++ ], ++ "apps/openssl-bin-ocsp.o" => [ ++ "apps/ocsp.c" ++ ], ++ "apps/openssl-bin-openssl.o" => [ ++ "apps/openssl.c" ++ ], ++ "apps/openssl-bin-passwd.o" => [ ++ "apps/passwd.c" ++ ], ++ "apps/openssl-bin-pkcs12.o" => [ ++ "apps/pkcs12.c" ++ ], ++ "apps/openssl-bin-pkcs7.o" => [ ++ "apps/pkcs7.c" ++ ], ++ "apps/openssl-bin-pkcs8.o" => [ ++ "apps/pkcs8.c" ++ ], ++ "apps/openssl-bin-pkey.o" => [ ++ "apps/pkey.c" ++ ], ++ "apps/openssl-bin-pkeyparam.o" => [ ++ "apps/pkeyparam.c" ++ ], ++ "apps/openssl-bin-pkeyutl.o" => [ ++ "apps/pkeyutl.c" ++ ], ++ "apps/openssl-bin-prime.o" => [ ++ "apps/prime.c" ++ ], ++ "apps/openssl-bin-progs.o" => [ ++ "apps/progs.c" ++ ], ++ "apps/openssl-bin-rand.o" => [ ++ "apps/rand.c" ++ ], ++ "apps/openssl-bin-rehash.o" => [ ++ "apps/rehash.c" ++ ], ++ "apps/openssl-bin-req.o" => [ ++ "apps/req.c" ++ ], ++ "apps/openssl-bin-rsa.o" => [ ++ "apps/rsa.c" ++ ], ++ "apps/openssl-bin-rsautl.o" => [ ++ "apps/rsautl.c" ++ ], ++ "apps/openssl-bin-s_client.o" => [ ++ "apps/s_client.c" ++ ], ++ "apps/openssl-bin-s_server.o" => [ ++ "apps/s_server.c" ++ ], ++ "apps/openssl-bin-s_time.o" => [ ++ "apps/s_time.c" ++ ], ++ "apps/openssl-bin-sess_id.o" => [ ++ "apps/sess_id.c" ++ ], ++ "apps/openssl-bin-smime.o" => [ ++ "apps/smime.c" ++ ], ++ "apps/openssl-bin-speed.o" => [ ++ "apps/speed.c" ++ ], ++ "apps/openssl-bin-spkac.o" => [ ++ "apps/spkac.c" ++ ], ++ "apps/openssl-bin-srp.o" => [ ++ "apps/srp.c" ++ ], ++ "apps/openssl-bin-storeutl.o" => [ ++ "apps/storeutl.c" ++ ], ++ "apps/openssl-bin-ts.o" => [ ++ "apps/ts.c" ++ ], ++ "apps/openssl-bin-verify.o" => [ ++ "apps/verify.c" ++ ], ++ "apps/openssl-bin-version.o" => [ ++ "apps/version.c" ++ ], ++ "apps/openssl-bin-x509.o" => [ ++ "apps/x509.c" ++ ], ++ "apps/tsget.pl" => [ ++ "apps/tsget.in" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_cfb.o" => [ ++ "crypto/aes/aes_cfb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_core.o" => [ ++ "crypto/aes/aes_core.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ige.o" => [ ++ "crypto/aes/aes_ige.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_ofb.o" => [ ++ "crypto/aes/aes_ofb.c" ++ ], ++ "crypto/aes/libcrypto-lib-aes_wrap.o" => [ ++ "crypto/aes/aes_wrap.c" ++ ], ++ "crypto/aes/libfips-lib-aes_cbc.o" => [ ++ "crypto/aes/aes_cbc.c" ++ ], ++ "crypto/aes/libfips-lib-aes_core.o" => [ ++ "crypto/aes/aes_core.c" ++ ], ++ "crypto/aes/libfips-lib-aes_ecb.o" => [ ++ "crypto/aes/aes_ecb.c" ++ ], ++ "crypto/aes/libfips-lib-aes_misc.o" => [ ++ "crypto/aes/aes_misc.c" ++ ], ++ "crypto/aria/libcrypto-lib-aria.o" => [ ++ "crypto/aria/aria.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_bitstr.o" => [ ++ "crypto/asn1/a_bitstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o" => [ ++ "crypto/asn1/a_d2i_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_digest.o" => [ ++ "crypto/asn1/a_digest.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_dup.o" => [ ++ "crypto/asn1/a_dup.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_gentm.o" => [ ++ "crypto/asn1/a_gentm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o" => [ ++ "crypto/asn1/a_i2d_fp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_int.o" => [ ++ "crypto/asn1/a_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_mbstr.o" => [ ++ "crypto/asn1/a_mbstr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_object.o" => [ ++ "crypto/asn1/a_object.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_octet.o" => [ ++ "crypto/asn1/a_octet.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_print.o" => [ ++ "crypto/asn1/a_print.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_sign.o" => [ ++ "crypto/asn1/a_sign.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strex.o" => [ ++ "crypto/asn1/a_strex.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_strnid.o" => [ ++ "crypto/asn1/a_strnid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_time.o" => [ ++ "crypto/asn1/a_time.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_type.o" => [ ++ "crypto/asn1/a_type.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utctm.o" => [ ++ "crypto/asn1/a_utctm.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_utf8.o" => [ ++ "crypto/asn1/a_utf8.c" ++ ], ++ "crypto/asn1/libcrypto-lib-a_verify.o" => [ ++ "crypto/asn1/a_verify.c" ++ ], ++ "crypto/asn1/libcrypto-lib-ameth_lib.o" => [ ++ "crypto/asn1/ameth_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_err.o" => [ ++ "crypto/asn1/asn1_err.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_gen.o" => [ ++ "crypto/asn1/asn1_gen.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o" => [ ++ "crypto/asn1/asn1_item_list.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_lib.o" => [ ++ "crypto/asn1/asn1_lib.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn1_parse.o" => [ ++ "crypto/asn1/asn1_parse.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mime.o" => [ ++ "crypto/asn1/asn_mime.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_moid.o" => [ ++ "crypto/asn1/asn_moid.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o" => [ ++ "crypto/asn1/asn_mstbl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-asn_pack.o" => [ ++ "crypto/asn1/asn_pack.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_asn1.o" => [ ++ "crypto/asn1/bio_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-bio_ndef.o" => [ ++ "crypto/asn1/bio_ndef.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_param.o" => [ ++ "crypto/asn1/d2i_param.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pr.o" => [ ++ "crypto/asn1/d2i_pr.c" ++ ], ++ "crypto/asn1/libcrypto-lib-d2i_pu.o" => [ ++ "crypto/asn1/d2i_pu.c" ++ ], ++ "crypto/asn1/libcrypto-lib-evp_asn1.o" => [ ++ "crypto/asn1/evp_asn1.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_int.o" => [ ++ "crypto/asn1/f_int.c" ++ ], ++ "crypto/asn1/libcrypto-lib-f_string.o" => [ ++ "crypto/asn1/f_string.c" ++ ], ++ "crypto/asn1/libcrypto-lib-i2d_evp.o" => [ ++ "crypto/asn1/i2d_evp.c" ++ ], ++ "crypto/asn1/libcrypto-lib-n_pkey.o" => [ ++ "crypto/asn1/n_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-nsseq.o" => [ ++ "crypto/asn1/nsseq.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbe.o" => [ ++ "crypto/asn1/p5_pbe.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o" => [ ++ "crypto/asn1/p5_pbev2.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o" => [ ++ "crypto/asn1/p5_scrypt.c" ++ ], ++ "crypto/asn1/libcrypto-lib-p8_pkey.o" => [ ++ "crypto/asn1/p8_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_bitst.o" => [ ++ "crypto/asn1/t_bitst.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_pkey.o" => [ ++ "crypto/asn1/t_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-t_spki.o" => [ ++ "crypto/asn1/t_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_dec.o" => [ ++ "crypto/asn1/tasn_dec.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_enc.o" => [ ++ "crypto/asn1/tasn_enc.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_fre.o" => [ ++ "crypto/asn1/tasn_fre.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_new.o" => [ ++ "crypto/asn1/tasn_new.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_prn.o" => [ ++ "crypto/asn1/tasn_prn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_scn.o" => [ ++ "crypto/asn1/tasn_scn.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_typ.o" => [ ++ "crypto/asn1/tasn_typ.c" ++ ], ++ "crypto/asn1/libcrypto-lib-tasn_utl.o" => [ ++ "crypto/asn1/tasn_utl.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_algor.o" => [ ++ "crypto/asn1/x_algor.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_bignum.o" => [ ++ "crypto/asn1/x_bignum.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_info.o" => [ ++ "crypto/asn1/x_info.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_int64.o" => [ ++ "crypto/asn1/x_int64.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_long.o" => [ ++ "crypto/asn1/x_long.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_pkey.o" => [ ++ "crypto/asn1/x_pkey.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_sig.o" => [ ++ "crypto/asn1/x_sig.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_spki.o" => [ ++ "crypto/asn1/x_spki.c" ++ ], ++ "crypto/asn1/libcrypto-lib-x_val.o" => [ ++ "crypto/asn1/x_val.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_null.o" => [ ++ "crypto/async/arch/async_null.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_posix.o" => [ ++ "crypto/async/arch/async_posix.c" ++ ], ++ "crypto/async/arch/libcrypto-lib-async_win.o" => [ ++ "crypto/async/arch/async_win.c" ++ ], ++ "crypto/async/libcrypto-lib-async.o" => [ ++ "crypto/async/async.c" ++ ], ++ "crypto/async/libcrypto-lib-async_err.o" => [ ++ "crypto/async/async_err.c" ++ ], ++ "crypto/async/libcrypto-lib-async_wait.o" => [ ++ "crypto/async/async_wait.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_cfb64.o" => [ ++ "crypto/bf/bf_cfb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ecb.o" => [ ++ "crypto/bf/bf_ecb.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_enc.o" => [ ++ "crypto/bf/bf_enc.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_ofb64.o" => [ ++ "crypto/bf/bf_ofb64.c" ++ ], ++ "crypto/bf/libcrypto-lib-bf_skey.o" => [ ++ "crypto/bf/bf_skey.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_buff.o" => [ ++ "crypto/bio/bf_buff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_lbuf.o" => [ ++ "crypto/bio/bf_lbuf.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_nbio.o" => [ ++ "crypto/bio/bf_nbio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_null.o" => [ ++ "crypto/bio/bf_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_prefix.o" => [ ++ "crypto/bio/bf_prefix.c" ++ ], ++ "crypto/bio/libcrypto-lib-bf_readbuff.o" => [ ++ "crypto/bio/bf_readbuff.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_addr.o" => [ ++ "crypto/bio/bio_addr.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_cb.o" => [ ++ "crypto/bio/bio_cb.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_dump.o" => [ ++ "crypto/bio/bio_dump.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_err.o" => [ ++ "crypto/bio/bio_err.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_lib.o" => [ ++ "crypto/bio/bio_lib.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_meth.o" => [ ++ "crypto/bio/bio_meth.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_print.o" => [ ++ "crypto/bio/bio_print.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock.o" => [ ++ "crypto/bio/bio_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-bio_sock2.o" => [ ++ "crypto/bio/bio_sock2.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_acpt.o" => [ ++ "crypto/bio/bss_acpt.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_bio.o" => [ ++ "crypto/bio/bss_bio.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_conn.o" => [ ++ "crypto/bio/bss_conn.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_core.o" => [ ++ "crypto/bio/bss_core.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_dgram.o" => [ ++ "crypto/bio/bss_dgram.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_fd.o" => [ ++ "crypto/bio/bss_fd.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_file.o" => [ ++ "crypto/bio/bss_file.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_log.o" => [ ++ "crypto/bio/bss_log.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_mem.o" => [ ++ "crypto/bio/bss_mem.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_null.o" => [ ++ "crypto/bio/bss_null.c" ++ ], ++ "crypto/bio/libcrypto-lib-bss_sock.o" => [ ++ "crypto/bio/bss_sock.c" ++ ], ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o" => [ ++ "crypto/bio/ossl_core_bio.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_asm.o" => [ ++ "crypto/bn/bn_asm.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_depr.o" => [ ++ "crypto/bn/bn_depr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_err.o" => [ ++ "crypto/bn/bn_err.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_print.o" => [ ++ "crypto/bn/bn_print.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_srp.o" => [ ++ "crypto/bn/bn_srp.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/libcrypto-lib-bn_x931p.o" => [ ++ "crypto/bn/bn_x931p.c" ++ ], ++ "crypto/bn/libfips-lib-bn_add.o" => [ ++ "crypto/bn/bn_add.c" ++ ], ++ "crypto/bn/libfips-lib-bn_asm.o" => [ ++ "crypto/bn/bn_asm.c" ++ ], ++ "crypto/bn/libfips-lib-bn_blind.o" => [ ++ "crypto/bn/bn_blind.c" ++ ], ++ "crypto/bn/libfips-lib-bn_const.o" => [ ++ "crypto/bn/bn_const.c" ++ ], ++ "crypto/bn/libfips-lib-bn_conv.o" => [ ++ "crypto/bn/bn_conv.c" ++ ], ++ "crypto/bn/libfips-lib-bn_ctx.o" => [ ++ "crypto/bn/bn_ctx.c" ++ ], ++ "crypto/bn/libfips-lib-bn_dh.o" => [ ++ "crypto/bn/bn_dh.c" ++ ], ++ "crypto/bn/libfips-lib-bn_div.o" => [ ++ "crypto/bn/bn_div.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp.o" => [ ++ "crypto/bn/bn_exp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_exp2.o" => [ ++ "crypto/bn/bn_exp2.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gcd.o" => [ ++ "crypto/bn/bn_gcd.c" ++ ], ++ "crypto/bn/libfips-lib-bn_gf2m.o" => [ ++ "crypto/bn/bn_gf2m.c" ++ ], ++ "crypto/bn/libfips-lib-bn_intern.o" => [ ++ "crypto/bn/bn_intern.c" ++ ], ++ "crypto/bn/libfips-lib-bn_kron.o" => [ ++ "crypto/bn/bn_kron.c" ++ ], ++ "crypto/bn/libfips-lib-bn_lib.o" => [ ++ "crypto/bn/bn_lib.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mod.o" => [ ++ "crypto/bn/bn_mod.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mont.o" => [ ++ "crypto/bn/bn_mont.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mpi.o" => [ ++ "crypto/bn/bn_mpi.c" ++ ], ++ "crypto/bn/libfips-lib-bn_mul.o" => [ ++ "crypto/bn/bn_mul.c" ++ ], ++ "crypto/bn/libfips-lib-bn_nist.o" => [ ++ "crypto/bn/bn_nist.c" ++ ], ++ "crypto/bn/libfips-lib-bn_prime.o" => [ ++ "crypto/bn/bn_prime.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rand.o" => [ ++ "crypto/bn/bn_rand.c" ++ ], ++ "crypto/bn/libfips-lib-bn_recp.o" => [ ++ "crypto/bn/bn_recp.c" ++ ], ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o" => [ ++ "crypto/bn/bn_rsa_fips186_4.c" ++ ], ++ "crypto/bn/libfips-lib-bn_shift.o" => [ ++ "crypto/bn/bn_shift.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqr.o" => [ ++ "crypto/bn/bn_sqr.c" ++ ], ++ "crypto/bn/libfips-lib-bn_sqrt.o" => [ ++ "crypto/bn/bn_sqrt.c" ++ ], ++ "crypto/bn/libfips-lib-bn_word.o" => [ ++ "crypto/bn/bn_word.c" ++ ], ++ "crypto/bn/liblegacy-lib-bn_asm.o" => [ ++ "crypto/bn/bn_asm.c" ++ ], ++ "crypto/buffer/libcrypto-lib-buf_err.o" => [ ++ "crypto/buffer/buf_err.c" ++ ], ++ "crypto/buffer/libcrypto-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/buffer/libfips-lib-buffer.o" => [ ++ "crypto/buffer/buffer.c" ++ ], ++ "crypto/camellia/libcrypto-lib-camellia.o" => [ ++ "crypto/camellia/camellia.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o" => [ ++ "crypto/camellia/cmll_cbc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o" => [ ++ "crypto/camellia/cmll_cfb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o" => [ ++ "crypto/camellia/cmll_ctr.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o" => [ ++ "crypto/camellia/cmll_ecb.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_misc.o" => [ ++ "crypto/camellia/cmll_misc.c" ++ ], ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o" => [ ++ "crypto/camellia/cmll_ofb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_cfb64.o" => [ ++ "crypto/cast/c_cfb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ecb.o" => [ ++ "crypto/cast/c_ecb.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_enc.o" => [ ++ "crypto/cast/c_enc.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_ofb64.o" => [ ++ "crypto/cast/c_ofb64.c" ++ ], ++ "crypto/cast/libcrypto-lib-c_skey.o" => [ ++ "crypto/cast/c_skey.c" ++ ], ++ "crypto/chacha/libcrypto-lib-chacha_enc.o" => [ ++ "crypto/chacha/chacha_enc.c" ++ ], ++ "crypto/cmac/libcrypto-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmac/libfips-lib-cmac.o" => [ ++ "crypto/cmac/cmac.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_asn.o" => [ ++ "crypto/cmp/cmp_asn.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_client.o" => [ ++ "crypto/cmp/cmp_client.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o" => [ ++ "crypto/cmp/cmp_ctx.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_err.o" => [ ++ "crypto/cmp/cmp_err.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o" => [ ++ "crypto/cmp/cmp_hdr.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_http.o" => [ ++ "crypto/cmp/cmp_http.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_msg.o" => [ ++ "crypto/cmp/cmp_msg.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_protect.o" => [ ++ "crypto/cmp/cmp_protect.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_server.o" => [ ++ "crypto/cmp/cmp_server.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_status.o" => [ ++ "crypto/cmp/cmp_status.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_util.o" => [ ++ "crypto/cmp/cmp_util.c" ++ ], ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o" => [ ++ "crypto/cmp/cmp_vfy.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_asn1.o" => [ ++ "crypto/cms/cms_asn1.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_att.o" => [ ++ "crypto/cms/cms_att.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_cd.o" => [ ++ "crypto/cms/cms_cd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dd.o" => [ ++ "crypto/cms/cms_dd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_dh.o" => [ ++ "crypto/cms/cms_dh.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ec.o" => [ ++ "crypto/cms/cms_ec.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_enc.o" => [ ++ "crypto/cms/cms_enc.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_env.o" => [ ++ "crypto/cms/cms_env.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_err.o" => [ ++ "crypto/cms/cms_err.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_ess.o" => [ ++ "crypto/cms/cms_ess.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_io.o" => [ ++ "crypto/cms/cms_io.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_kari.o" => [ ++ "crypto/cms/cms_kari.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_lib.o" => [ ++ "crypto/cms/cms_lib.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_pwri.o" => [ ++ "crypto/cms/cms_pwri.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_rsa.o" => [ ++ "crypto/cms/cms_rsa.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_sd.o" => [ ++ "crypto/cms/cms_sd.c" ++ ], ++ "crypto/cms/libcrypto-lib-cms_smime.o" => [ ++ "crypto/cms/cms_smime.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_api.o" => [ ++ "crypto/conf/conf_api.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_def.o" => [ ++ "crypto/conf/conf_def.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_err.o" => [ ++ "crypto/conf/conf_err.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_lib.o" => [ ++ "crypto/conf/conf_lib.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mall.o" => [ ++ "crypto/conf/conf_mall.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_mod.o" => [ ++ "crypto/conf/conf_mod.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_sap.o" => [ ++ "crypto/conf/conf_sap.c" ++ ], ++ "crypto/conf/libcrypto-lib-conf_ssl.o" => [ ++ "crypto/conf/conf_ssl.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_asn.o" => [ ++ "crypto/crmf/crmf_asn.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_err.o" => [ ++ "crypto/crmf/crmf_err.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_lib.o" => [ ++ "crypto/crmf/crmf_lib.c" ++ ], ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o" => [ ++ "crypto/crmf/crmf_pbm.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_b64.o" => [ ++ "crypto/ct/ct_b64.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_err.o" => [ ++ "crypto/ct/ct_err.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_log.o" => [ ++ "crypto/ct/ct_log.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_oct.o" => [ ++ "crypto/ct/ct_oct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_policy.o" => [ ++ "crypto/ct/ct_policy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_prn.o" => [ ++ "crypto/ct/ct_prn.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct.o" => [ ++ "crypto/ct/ct_sct.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o" => [ ++ "crypto/ct/ct_sct_ctx.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_vfy.o" => [ ++ "crypto/ct/ct_vfy.c" ++ ], ++ "crypto/ct/libcrypto-lib-ct_x509v3.o" => [ ++ "crypto/ct/ct_x509v3.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_cksm.o" => [ ++ "crypto/des/cbc_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-cbc_enc.o" => [ ++ "crypto/des/cbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64ede.o" => [ ++ "crypto/des/cfb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb64enc.o" => [ ++ "crypto/des/cfb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-cfb_enc.o" => [ ++ "crypto/des/cfb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ecb_enc.o" => [ ++ "crypto/des/ecb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt.o" => [ ++ "crypto/des/fcrypt.c" ++ ], ++ "crypto/des/libcrypto-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64ede.o" => [ ++ "crypto/des/ofb64ede.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb64enc.o" => [ ++ "crypto/des/ofb64enc.c" ++ ], ++ "crypto/des/libcrypto-lib-ofb_enc.o" => [ ++ "crypto/des/ofb_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-pcbc_enc.o" => [ ++ "crypto/des/pcbc_enc.c" ++ ], ++ "crypto/des/libcrypto-lib-qud_cksm.o" => [ ++ "crypto/des/qud_cksm.c" ++ ], ++ "crypto/des/libcrypto-lib-rand_key.o" => [ ++ "crypto/des/rand_key.c" ++ ], ++ "crypto/des/libcrypto-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/libcrypto-lib-str2key.o" => [ ++ "crypto/des/str2key.c" ++ ], ++ "crypto/des/libcrypto-lib-xcbc_enc.o" => [ ++ "crypto/des/xcbc_enc.c" ++ ], ++ "crypto/des/libfips-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/libfips-lib-ecb3_enc.o" => [ ++ "crypto/des/ecb3_enc.c" ++ ], ++ "crypto/des/libfips-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/des/libfips-lib-set_key.o" => [ ++ "crypto/des/set_key.c" ++ ], ++ "crypto/des/liblegacy-lib-des_enc.o" => [ ++ "crypto/des/des_enc.c" ++ ], ++ "crypto/des/liblegacy-lib-fcrypt_b.o" => [ ++ "crypto/des/fcrypt_b.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_ameth.o" => [ ++ "crypto/dh/dh_ameth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_asn1.o" => [ ++ "crypto/dh/dh_asn1.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_depr.o" => [ ++ "crypto/dh/dh_depr.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_err.o" => [ ++ "crypto/dh/dh_err.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_meth.o" => [ ++ "crypto/dh/dh_meth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_pmeth.o" => [ ++ "crypto/dh/dh_pmeth.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_prn.o" => [ ++ "crypto/dh/dh_prn.c" ++ ], ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o" => [ ++ "crypto/dh/dh_rfc5114.c" ++ ], ++ "crypto/dh/libfips-lib-dh_backend.o" => [ ++ "crypto/dh/dh_backend.c" ++ ], ++ "crypto/dh/libfips-lib-dh_check.o" => [ ++ "crypto/dh/dh_check.c" ++ ], ++ "crypto/dh/libfips-lib-dh_gen.o" => [ ++ "crypto/dh/dh_gen.c" ++ ], ++ "crypto/dh/libfips-lib-dh_group_params.o" => [ ++ "crypto/dh/dh_group_params.c" ++ ], ++ "crypto/dh/libfips-lib-dh_kdf.o" => [ ++ "crypto/dh/dh_kdf.c" ++ ], ++ "crypto/dh/libfips-lib-dh_key.o" => [ ++ "crypto/dh/dh_key.c" ++ ], ++ "crypto/dh/libfips-lib-dh_lib.o" => [ ++ "crypto/dh/dh_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o" => [ ++ "crypto/dsa/dsa_ameth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o" => [ ++ "crypto/dsa/dsa_asn1.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_depr.o" => [ ++ "crypto/dsa/dsa_depr.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_err.o" => [ ++ "crypto/dsa/dsa_err.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_meth.o" => [ ++ "crypto/dsa/dsa_meth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o" => [ ++ "crypto/dsa/dsa_pmeth.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_prn.o" => [ ++ "crypto/dsa/dsa_prn.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_backend.o" => [ ++ "crypto/dsa/dsa_backend.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_check.o" => [ ++ "crypto/dsa/dsa_check.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_gen.o" => [ ++ "crypto/dsa/dsa_gen.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_key.o" => [ ++ "crypto/dsa/dsa_key.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_lib.o" => [ ++ "crypto/dsa/dsa_lib.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_ossl.o" => [ ++ "crypto/dsa/dsa_ossl.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_sign.o" => [ ++ "crypto/dsa/dsa_sign.c" ++ ], ++ "crypto/dsa/libfips-lib-dsa_vrf.o" => [ ++ "crypto/dsa/dsa_vrf.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dl.o" => [ ++ "crypto/dso/dso_dl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o" => [ ++ "crypto/dso/dso_dlfcn.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_err.o" => [ ++ "crypto/dso/dso_err.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_lib.o" => [ ++ "crypto/dso/dso_lib.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_openssl.o" => [ ++ "crypto/dso/dso_openssl.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_vms.o" => [ ++ "crypto/dso/dso_vms.c" ++ ], ++ "crypto/dso/libcrypto-lib-dso_win32.o" => [ ++ "crypto/dso/dso_win32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o" => [ ++ "crypto/ec/curve448/arch_32/f_impl32.c" ++ ], ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o" => [ ++ "crypto/ec/curve448/arch_64/f_impl64.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libcrypto-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448.o" => [ ++ "crypto/ec/curve448/curve448.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o" => [ ++ "crypto/ec/curve448/curve448_tables.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-eddsa.o" => [ ++ "crypto/ec/curve448/eddsa.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-f_generic.o" => [ ++ "crypto/ec/curve448/f_generic.c" ++ ], ++ "crypto/ec/curve448/libfips-lib-scalar.o" => [ ++ "crypto/ec/curve448/scalar.c" ++ ], ++ "crypto/ec/libcrypto-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_ameth.o" => [ ++ "crypto/ec/ec_ameth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_deprecated.o" => [ ++ "crypto/ec/ec_deprecated.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_err.o" => [ ++ "crypto/ec/ec_err.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_pmeth.o" => [ ++ "crypto/ec/ec_pmeth.c" ++ ], ++ "crypto/ec/libcrypto-lib-ec_print.o" => [ ++ "crypto/ec/ec_print.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libcrypto-lib-eck_prn.o" => [ ++ "crypto/ec/eck_prn.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/ec/libcrypto-lib-ecx_meth.o" => [ ++ "crypto/ec/ecx_meth.c" ++ ], ++ "crypto/ec/libfips-lib-curve25519.o" => [ ++ "crypto/ec/curve25519.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_oct.o" => [ ++ "crypto/ec/ec2_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ec2_smpl.o" => [ ++ "crypto/ec/ec2_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ec_asn1.o" => [ ++ "crypto/ec/ec_asn1.c" ++ ], ++ "crypto/ec/libfips-lib-ec_backend.o" => [ ++ "crypto/ec/ec_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ec_check.o" => [ ++ "crypto/ec/ec_check.c" ++ ], ++ "crypto/ec/libfips-lib-ec_curve.o" => [ ++ "crypto/ec/ec_curve.c" ++ ], ++ "crypto/ec/libfips-lib-ec_cvt.o" => [ ++ "crypto/ec/ec_cvt.c" ++ ], ++ "crypto/ec/libfips-lib-ec_key.o" => [ ++ "crypto/ec/ec_key.c" ++ ], ++ "crypto/ec/libfips-lib-ec_kmeth.o" => [ ++ "crypto/ec/ec_kmeth.c" ++ ], ++ "crypto/ec/libfips-lib-ec_lib.o" => [ ++ "crypto/ec/ec_lib.c" ++ ], ++ "crypto/ec/libfips-lib-ec_mult.o" => [ ++ "crypto/ec/ec_mult.c" ++ ], ++ "crypto/ec/libfips-lib-ec_oct.o" => [ ++ "crypto/ec/ec_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_kdf.o" => [ ++ "crypto/ec/ecdh_kdf.c" ++ ], ++ "crypto/ec/libfips-lib-ecdh_ossl.o" => [ ++ "crypto/ec/ecdh_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_ossl.o" => [ ++ "crypto/ec/ecdsa_ossl.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_sign.o" => [ ++ "crypto/ec/ecdsa_sign.c" ++ ], ++ "crypto/ec/libfips-lib-ecdsa_vrf.o" => [ ++ "crypto/ec/ecdsa_vrf.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_mont.o" => [ ++ "crypto/ec/ecp_mont.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_nist.o" => [ ++ "crypto/ec/ecp_nist.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_oct.o" => [ ++ "crypto/ec/ecp_oct.c" ++ ], ++ "crypto/ec/libfips-lib-ecp_smpl.o" => [ ++ "crypto/ec/ecp_smpl.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_backend.o" => [ ++ "crypto/ec/ecx_backend.c" ++ ], ++ "crypto/ec/libfips-lib-ecx_key.o" => [ ++ "crypto/ec/ecx_key.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o" => [ ++ "crypto/encode_decode/decoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o" => [ ++ "crypto/encode_decode/decoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o" => [ ++ "crypto/encode_decode/decoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o" => [ ++ "crypto/encode_decode/decoder_pkey.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o" => [ ++ "crypto/encode_decode/encoder_err.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o" => [ ++ "crypto/encode_decode/encoder_lib.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o" => [ ++ "crypto/encode_decode/encoder_meth.c" ++ ], ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o" => [ ++ "crypto/encode_decode/encoder_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_all.o" => [ ++ "crypto/engine/eng_all.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_cnf.o" => [ ++ "crypto/engine/eng_cnf.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_ctrl.o" => [ ++ "crypto/engine/eng_ctrl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_dyn.o" => [ ++ "crypto/engine/eng_dyn.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_err.o" => [ ++ "crypto/engine/eng_err.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_fat.o" => [ ++ "crypto/engine/eng_fat.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_init.o" => [ ++ "crypto/engine/eng_init.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_lib.o" => [ ++ "crypto/engine/eng_lib.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_list.o" => [ ++ "crypto/engine/eng_list.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_openssl.o" => [ ++ "crypto/engine/eng_openssl.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_pkey.o" => [ ++ "crypto/engine/eng_pkey.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_rdrand.o" => [ ++ "crypto/engine/eng_rdrand.c" ++ ], ++ "crypto/engine/libcrypto-lib-eng_table.o" => [ ++ "crypto/engine/eng_table.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_asnmth.o" => [ ++ "crypto/engine/tb_asnmth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_cipher.o" => [ ++ "crypto/engine/tb_cipher.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dh.o" => [ ++ "crypto/engine/tb_dh.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_digest.o" => [ ++ "crypto/engine/tb_digest.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_dsa.o" => [ ++ "crypto/engine/tb_dsa.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_eckey.o" => [ ++ "crypto/engine/tb_eckey.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o" => [ ++ "crypto/engine/tb_pkmeth.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rand.o" => [ ++ "crypto/engine/tb_rand.c" ++ ], ++ "crypto/engine/libcrypto-lib-tb_rsa.o" => [ ++ "crypto/engine/tb_rsa.c" ++ ], ++ "crypto/err/libcrypto-lib-err.o" => [ ++ "crypto/err/err.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all.o" => [ ++ "crypto/err/err_all.c" ++ ], ++ "crypto/err/libcrypto-lib-err_all_legacy.o" => [ ++ "crypto/err/err_all_legacy.c" ++ ], ++ "crypto/err/libcrypto-lib-err_blocks.o" => [ ++ "crypto/err/err_blocks.c" ++ ], ++ "crypto/err/libcrypto-lib-err_prn.o" => [ ++ "crypto/err/err_prn.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_asn1.o" => [ ++ "crypto/ess/ess_asn1.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_err.o" => [ ++ "crypto/ess/ess_err.c" ++ ], ++ "crypto/ess/libcrypto-lib-ess_lib.o" => [ ++ "crypto/ess/ess_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_b64.o" => [ ++ "crypto/evp/bio_b64.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_enc.o" => [ ++ "crypto/evp/bio_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_md.o" => [ ++ "crypto/evp/bio_md.c" ++ ], ++ "crypto/evp/libcrypto-lib-bio_ok.o" => [ ++ "crypto/evp/bio_ok.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_allc.o" => [ ++ "crypto/evp/c_allc.c" ++ ], ++ "crypto/evp/libcrypto-lib-c_alld.o" => [ ++ "crypto/evp/c_alld.c" ++ ], ++ "crypto/evp/libcrypto-lib-cmeth_lib.o" => [ ++ "crypto/evp/cmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o" => [ ++ "crypto/evp/ctrl_params_translate.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_ctrl.o" => [ ++ "crypto/evp/dh_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o" => [ ++ "crypto/evp/dsa_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes.o" => [ ++ "crypto/evp/e_aes.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o" => [ ++ "crypto/evp/e_aes_cbc_hmac_sha256.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_aria.o" => [ ++ "crypto/evp/e_aria.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_bf.o" => [ ++ "crypto/evp/e_bf.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_camellia.o" => [ ++ "crypto/evp/e_camellia.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_cast.o" => [ ++ "crypto/evp/e_cast.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o" => [ ++ "crypto/evp/e_chacha20_poly1305.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des.o" => [ ++ "crypto/evp/e_des.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_des3.o" => [ ++ "crypto/evp/e_des3.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_idea.o" => [ ++ "crypto/evp/e_idea.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_null.o" => [ ++ "crypto/evp/e_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_old.o" => [ ++ "crypto/evp/e_old.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc2.o" => [ ++ "crypto/evp/e_rc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4.o" => [ ++ "crypto/evp/e_rc4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o" => [ ++ "crypto/evp/e_rc4_hmac_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_rc5.o" => [ ++ "crypto/evp/e_rc5.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_seed.o" => [ ++ "crypto/evp/e_seed.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_sm4.o" => [ ++ "crypto/evp/e_sm4.c" ++ ], ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o" => [ ++ "crypto/evp/e_xcbc_d.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_ctrl.o" => [ ++ "crypto/evp/ec_ctrl.c" ++ ], ++ "crypto/evp/libcrypto-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libcrypto-lib-encode.o" => [ ++ "crypto/evp/encode.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_cnf.o" => [ ++ "crypto/evp/evp_cnf.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_err.o" => [ ++ "crypto/evp/evp_err.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_key.o" => [ ++ "crypto/evp/evp_key.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pbe.o" => [ ++ "crypto/evp/evp_pbe.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_pkey.o" => [ ++ "crypto/evp/evp_pkey.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libcrypto-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libcrypto-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_blake2.o" => [ ++ "crypto/evp/legacy_blake2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md4.o" => [ ++ "crypto/evp/legacy_md4.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5.o" => [ ++ "crypto/evp/legacy_md5.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o" => [ ++ "crypto/evp/legacy_md5_sha1.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o" => [ ++ "crypto/evp/legacy_mdc2.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o" => [ ++ "crypto/evp/legacy_ripemd.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_sha.o" => [ ++ "crypto/evp/legacy_sha.c" ++ ], ++ "crypto/evp/libcrypto-lib-legacy_wp.o" => [ ++ "crypto/evp/legacy_wp.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_null.o" => [ ++ "crypto/evp/m_null.c" ++ ], ++ "crypto/evp/libcrypto-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libcrypto-lib-names.o" => [ ++ "crypto/evp/names.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt.o" => [ ++ "crypto/evp/p5_crpt.c" ++ ], ++ "crypto/evp/libcrypto-lib-p5_crpt2.o" => [ ++ "crypto/evp/p5_crpt2.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_dec.o" => [ ++ "crypto/evp/p_dec.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_enc.o" => [ ++ "crypto/evp/p_enc.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_legacy.o" => [ ++ "crypto/evp/p_legacy.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_open.o" => [ ++ "crypto/evp/p_open.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_seal.o" => [ ++ "crypto/evp/p_seal.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_sign.o" => [ ++ "crypto/evp/p_sign.c" ++ ], ++ "crypto/evp/libcrypto-lib-p_verify.o" => [ ++ "crypto/evp/p_verify.c" ++ ], ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o" => [ ++ "crypto/evp/pbe_scrypt.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libcrypto-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libcrypto-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/evp/libfips-lib-asymcipher.o" => [ ++ "crypto/evp/asymcipher.c" ++ ], ++ "crypto/evp/libfips-lib-dh_support.o" => [ ++ "crypto/evp/dh_support.c" ++ ], ++ "crypto/evp/libfips-lib-digest.o" => [ ++ "crypto/evp/digest.c" ++ ], ++ "crypto/evp/libfips-lib-ec_support.o" => [ ++ "crypto/evp/ec_support.c" ++ ], ++ "crypto/evp/libfips-lib-evp_enc.o" => [ ++ "crypto/evp/evp_enc.c" ++ ], ++ "crypto/evp/libfips-lib-evp_fetch.o" => [ ++ "crypto/evp/evp_fetch.c" ++ ], ++ "crypto/evp/libfips-lib-evp_lib.o" => [ ++ "crypto/evp/evp_lib.c" ++ ], ++ "crypto/evp/libfips-lib-evp_rand.o" => [ ++ "crypto/evp/evp_rand.c" ++ ], ++ "crypto/evp/libfips-lib-evp_utils.o" => [ ++ "crypto/evp/evp_utils.c" ++ ], ++ "crypto/evp/libfips-lib-exchange.o" => [ ++ "crypto/evp/exchange.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_lib.o" => [ ++ "crypto/evp/kdf_lib.c" ++ ], ++ "crypto/evp/libfips-lib-kdf_meth.o" => [ ++ "crypto/evp/kdf_meth.c" ++ ], ++ "crypto/evp/libfips-lib-kem.o" => [ ++ "crypto/evp/kem.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_lib.o" => [ ++ "crypto/evp/keymgmt_lib.c" ++ ], ++ "crypto/evp/libfips-lib-keymgmt_meth.o" => [ ++ "crypto/evp/keymgmt_meth.c" ++ ], ++ "crypto/evp/libfips-lib-m_sigver.o" => [ ++ "crypto/evp/m_sigver.c" ++ ], ++ "crypto/evp/libfips-lib-mac_lib.o" => [ ++ "crypto/evp/mac_lib.c" ++ ], ++ "crypto/evp/libfips-lib-mac_meth.o" => [ ++ "crypto/evp/mac_meth.c" ++ ], ++ "crypto/evp/libfips-lib-p_lib.o" => [ ++ "crypto/evp/p_lib.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_check.o" => [ ++ "crypto/evp/pmeth_check.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_gn.o" => [ ++ "crypto/evp/pmeth_gn.c" ++ ], ++ "crypto/evp/libfips-lib-pmeth_lib.o" => [ ++ "crypto/evp/pmeth_lib.c" ++ ], ++ "crypto/evp/libfips-lib-signature.o" => [ ++ "crypto/evp/signature.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_backend.o" => [ ++ "crypto/ffc/ffc_backend.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_dh.o" => [ ++ "crypto/ffc/ffc_dh.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_generate.o" => [ ++ "crypto/ffc/ffc_key_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_key_validate.o" => [ ++ "crypto/ffc/ffc_key_validate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params.o" => [ ++ "crypto/ffc/ffc_params.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_generate.o" => [ ++ "crypto/ffc/ffc_params_generate.c" ++ ], ++ "crypto/ffc/libfips-lib-ffc_params_validate.o" => [ ++ "crypto/ffc/ffc_params_validate.c" ++ ], ++ "crypto/hmac/libcrypto-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/hmac/libfips-lib-hmac.o" => [ ++ "crypto/hmac/hmac.c" ++ ], ++ "crypto/http/libcrypto-lib-http_client.o" => [ ++ "crypto/http/http_client.c" ++ ], ++ "crypto/http/libcrypto-lib-http_err.o" => [ ++ "crypto/http/http_err.c" ++ ], ++ "crypto/http/libcrypto-lib-http_lib.o" => [ ++ "crypto/http/http_lib.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cbc.o" => [ ++ "crypto/idea/i_cbc.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_cfb64.o" => [ ++ "crypto/idea/i_cfb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ecb.o" => [ ++ "crypto/idea/i_ecb.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_ofb64.o" => [ ++ "crypto/idea/i_ofb64.c" ++ ], ++ "crypto/idea/libcrypto-lib-i_skey.o" => [ ++ "crypto/idea/i_skey.c" ++ ], ++ "crypto/kdf/libcrypto-lib-kdf_err.o" => [ ++ "crypto/kdf/kdf_err.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lh_stats.o" => [ ++ "crypto/lhash/lh_stats.c" ++ ], ++ "crypto/lhash/libcrypto-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/lhash/libfips-lib-lhash.o" => [ ++ "crypto/lhash/lhash.c" ++ ], ++ "crypto/libcrypto-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libcrypto-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libcrypto-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libcrypto-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libcrypto-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libcrypto-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libcrypto-lib-cpt_err.o" => [ ++ "crypto/cpt_err.c" ++ ], ++ "crypto/libcrypto-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libcrypto-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libcrypto-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libcrypto-lib-cversion.o" => [ ++ "crypto/cversion.c" ++ ], ++ "crypto/libcrypto-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libcrypto-lib-ebcdic.o" => [ ++ "crypto/ebcdic.c" ++ ], ++ "crypto/libcrypto-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libcrypto-lib-getenv.o" => [ ++ "crypto/getenv.c" ++ ], ++ "crypto/libcrypto-lib-info.o" => [ ++ "crypto/info.c" ++ ], ++ "crypto/libcrypto-lib-init.o" => [ ++ "crypto/init.c" ++ ], ++ "crypto/libcrypto-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libcrypto-lib-mem.o" => [ ++ "crypto/mem.c" ++ ], ++ "crypto/libcrypto-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libcrypto-lib-mem_sec.o" => [ ++ "crypto/mem_sec.c" ++ ], ++ "crypto/libcrypto-lib-o_dir.o" => [ ++ "crypto/o_dir.c" ++ ], ++ "crypto/libcrypto-lib-o_fopen.o" => [ ++ "crypto/o_fopen.c" ++ ], ++ "crypto/libcrypto-lib-o_init.o" => [ ++ "crypto/o_init.c" ++ ], ++ "crypto/libcrypto-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libcrypto-lib-o_time.o" => [ ++ "crypto/o_time.c" ++ ], ++ "crypto/libcrypto-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libcrypto-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libcrypto-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libcrypto-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libcrypto-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libcrypto-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libcrypto-lib-passphrase.o" => [ ++ "crypto/passphrase.c" ++ ], ++ "crypto/libcrypto-lib-provider.o" => [ ++ "crypto/provider.c" ++ ], ++ "crypto/libcrypto-lib-provider_child.o" => [ ++ "crypto/provider_child.c" ++ ], ++ "crypto/libcrypto-lib-provider_conf.o" => [ ++ "crypto/provider_conf.c" ++ ], ++ "crypto/libcrypto-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libcrypto-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libcrypto-lib-punycode.o" => [ ++ "crypto/punycode.c" ++ ], ++ "crypto/libcrypto-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libcrypto-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libcrypto-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libcrypto-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libcrypto-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libcrypto-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/libcrypto-lib-trace.o" => [ ++ "crypto/trace.c" ++ ], ++ "crypto/libcrypto-lib-uid.o" => [ ++ "crypto/uid.c" ++ ], ++ "crypto/libfips-lib-asn1_dsa.o" => [ ++ "crypto/asn1_dsa.c" ++ ], ++ "crypto/libfips-lib-bsearch.o" => [ ++ "crypto/bsearch.c" ++ ], ++ "crypto/libfips-lib-context.o" => [ ++ "crypto/context.c" ++ ], ++ "crypto/libfips-lib-core_algorithm.o" => [ ++ "crypto/core_algorithm.c" ++ ], ++ "crypto/libfips-lib-core_fetch.o" => [ ++ "crypto/core_fetch.c" ++ ], ++ "crypto/libfips-lib-core_namemap.o" => [ ++ "crypto/core_namemap.c" ++ ], ++ "crypto/libfips-lib-cpuid.o" => [ ++ "crypto/cpuid.c" ++ ], ++ "crypto/libfips-lib-cryptlib.o" => [ ++ "crypto/cryptlib.c" ++ ], ++ "crypto/libfips-lib-ctype.o" => [ ++ "crypto/ctype.c" ++ ], ++ "crypto/libfips-lib-der_writer.o" => [ ++ "crypto/der_writer.c" ++ ], ++ "crypto/libfips-lib-ex_data.o" => [ ++ "crypto/ex_data.c" ++ ], ++ "crypto/libfips-lib-initthread.o" => [ ++ "crypto/initthread.c" ++ ], ++ "crypto/libfips-lib-mem_clr.o" => [ ++ "crypto/mem_clr.c" ++ ], ++ "crypto/libfips-lib-o_str.o" => [ ++ "crypto/o_str.c" ++ ], ++ "crypto/libfips-lib-packet.o" => [ ++ "crypto/packet.c" ++ ], ++ "crypto/libfips-lib-param_build.o" => [ ++ "crypto/param_build.c" ++ ], ++ "crypto/libfips-lib-param_build_set.o" => [ ++ "crypto/param_build_set.c" ++ ], ++ "crypto/libfips-lib-params.o" => [ ++ "crypto/params.c" ++ ], ++ "crypto/libfips-lib-params_dup.o" => [ ++ "crypto/params_dup.c" ++ ], ++ "crypto/libfips-lib-params_from_text.o" => [ ++ "crypto/params_from_text.c" ++ ], ++ "crypto/libfips-lib-provider_core.o" => [ ++ "crypto/provider_core.c" ++ ], ++ "crypto/libfips-lib-provider_predefined.o" => [ ++ "crypto/provider_predefined.c" ++ ], ++ "crypto/libfips-lib-self_test_core.o" => [ ++ "crypto/self_test_core.c" ++ ], ++ "crypto/libfips-lib-sparse_array.o" => [ ++ "crypto/sparse_array.c" ++ ], ++ "crypto/libfips-lib-threads_lib.o" => [ ++ "crypto/threads_lib.c" ++ ], ++ "crypto/libfips-lib-threads_none.o" => [ ++ "crypto/threads_none.c" ++ ], ++ "crypto/libfips-lib-threads_pthread.o" => [ ++ "crypto/threads_pthread.c" ++ ], ++ "crypto/libfips-lib-threads_win.o" => [ ++ "crypto/threads_win.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_dgst.o" => [ ++ "crypto/md4/md4_dgst.c" ++ ], ++ "crypto/md4/libcrypto-lib-md4_one.o" => [ ++ "crypto/md4/md4_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/libcrypto-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_dgst.o" => [ ++ "crypto/md5/md5_dgst.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_one.o" => [ ++ "crypto/md5/md5_one.c" ++ ], ++ "crypto/md5/liblegacy-lib-md5_sha1.o" => [ ++ "crypto/md5/md5_sha1.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o" => [ ++ "crypto/mdc2/mdc2_one.c" ++ ], ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o" => [ ++ "crypto/mdc2/mdc2dgst.c" ++ ], ++ "crypto/modes/libcrypto-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libcrypto-lib-cts128.o" => [ ++ "crypto/modes/cts128.c" ++ ], ++ "crypto/modes/libcrypto-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ocb128.o" => [ ++ "crypto/modes/ocb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libcrypto-lib-siv128.o" => [ ++ "crypto/modes/siv128.c" ++ ], ++ "crypto/modes/libcrypto-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libcrypto-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/modes/libfips-lib-cbc128.o" => [ ++ "crypto/modes/cbc128.c" ++ ], ++ "crypto/modes/libfips-lib-ccm128.o" => [ ++ "crypto/modes/ccm128.c" ++ ], ++ "crypto/modes/libfips-lib-cfb128.o" => [ ++ "crypto/modes/cfb128.c" ++ ], ++ "crypto/modes/libfips-lib-ctr128.o" => [ ++ "crypto/modes/ctr128.c" ++ ], ++ "crypto/modes/libfips-lib-gcm128.o" => [ ++ "crypto/modes/gcm128.c" ++ ], ++ "crypto/modes/libfips-lib-ofb128.o" => [ ++ "crypto/modes/ofb128.c" ++ ], ++ "crypto/modes/libfips-lib-wrap128.o" => [ ++ "crypto/modes/wrap128.c" ++ ], ++ "crypto/modes/libfips-lib-xts128.o" => [ ++ "crypto/modes/xts128.c" ++ ], ++ "crypto/objects/libcrypto-lib-o_names.o" => [ ++ "crypto/objects/o_names.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_dat.o" => [ ++ "crypto/objects/obj_dat.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_err.o" => [ ++ "crypto/objects/obj_err.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_lib.o" => [ ++ "crypto/objects/obj_lib.c" ++ ], ++ "crypto/objects/libcrypto-lib-obj_xref.o" => [ ++ "crypto/objects/obj_xref.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o" => [ ++ "crypto/ocsp/ocsp_asn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o" => [ ++ "crypto/ocsp/ocsp_cl.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o" => [ ++ "crypto/ocsp/ocsp_err.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o" => [ ++ "crypto/ocsp/ocsp_ext.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o" => [ ++ "crypto/ocsp/ocsp_http.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o" => [ ++ "crypto/ocsp/ocsp_lib.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o" => [ ++ "crypto/ocsp/ocsp_prn.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o" => [ ++ "crypto/ocsp/ocsp_srv.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o" => [ ++ "crypto/ocsp/ocsp_vfy.c" ++ ], ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o" => [ ++ "crypto/ocsp/v3_ocsp.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_all.o" => [ ++ "crypto/pem/pem_all.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_err.o" => [ ++ "crypto/pem/pem_err.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_info.o" => [ ++ "crypto/pem/pem_info.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_lib.o" => [ ++ "crypto/pem/pem_lib.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_oth.o" => [ ++ "crypto/pem/pem_oth.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pk8.o" => [ ++ "crypto/pem/pem_pk8.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_pkey.o" => [ ++ "crypto/pem/pem_pkey.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_sign.o" => [ ++ "crypto/pem/pem_sign.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_x509.o" => [ ++ "crypto/pem/pem_x509.c" ++ ], ++ "crypto/pem/libcrypto-lib-pem_xaux.o" => [ ++ "crypto/pem/pem_xaux.c" ++ ], ++ "crypto/pem/libcrypto-lib-pvkfmt.o" => [ ++ "crypto/pem/pvkfmt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_add.o" => [ ++ "crypto/pkcs12/p12_add.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o" => [ ++ "crypto/pkcs12/p12_asn.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o" => [ ++ "crypto/pkcs12/p12_attr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o" => [ ++ "crypto/pkcs12/p12_crpt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o" => [ ++ "crypto/pkcs12/p12_crt.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o" => [ ++ "crypto/pkcs12/p12_decr.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_init.o" => [ ++ "crypto/pkcs12/p12_init.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_key.o" => [ ++ "crypto/pkcs12/p12_key.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o" => [ ++ "crypto/pkcs12/p12_kiss.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o" => [ ++ "crypto/pkcs12/p12_mutl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o" => [ ++ "crypto/pkcs12/p12_npas.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o" => [ ++ "crypto/pkcs12/p12_p8d.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o" => [ ++ "crypto/pkcs12/p12_p8e.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o" => [ ++ "crypto/pkcs12/p12_sbag.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o" => [ ++ "crypto/pkcs12/p12_utl.c" ++ ], ++ "crypto/pkcs12/libcrypto-lib-pk12err.o" => [ ++ "crypto/pkcs12/pk12err.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o" => [ ++ "crypto/pkcs7/bio_pk7.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o" => [ ++ "crypto/pkcs7/pk7_asn1.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o" => [ ++ "crypto/pkcs7/pk7_attr.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o" => [ ++ "crypto/pkcs7/pk7_doit.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o" => [ ++ "crypto/pkcs7/pk7_lib.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o" => [ ++ "crypto/pkcs7/pk7_mime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o" => [ ++ "crypto/pkcs7/pk7_smime.c" ++ ], ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o" => [ ++ "crypto/pkcs7/pkcs7err.c" ++ ], ++ "crypto/poly1305/libcrypto-lib-poly1305.o" => [ ++ "crypto/poly1305/poly1305.c" ++ ], ++ "crypto/property/libcrypto-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libcrypto-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libcrypto-lib-property_err.o" => [ ++ "crypto/property/property_err.c" ++ ], ++ "crypto/property/libcrypto-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libcrypto-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libcrypto-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/property/libfips-lib-defn_cache.o" => [ ++ "crypto/property/defn_cache.c" ++ ], ++ "crypto/property/libfips-lib-property.o" => [ ++ "crypto/property/property.c" ++ ], ++ "crypto/property/libfips-lib-property_parse.o" => [ ++ "crypto/property/property_parse.c" ++ ], ++ "crypto/property/libfips-lib-property_query.o" => [ ++ "crypto/property/property_query.c" ++ ], ++ "crypto/property/libfips-lib-property_string.o" => [ ++ "crypto/property/property_string.c" ++ ], ++ "crypto/rand/libcrypto-lib-prov_seed.o" => [ ++ "crypto/rand/prov_seed.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_deprecated.o" => [ ++ "crypto/rand/rand_deprecated.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_err.o" => [ ++ "crypto/rand/rand_err.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_meth.o" => [ ++ "crypto/rand/rand_meth.c" ++ ], ++ "crypto/rand/libcrypto-lib-rand_pool.o" => [ ++ "crypto/rand/rand_pool.c" ++ ], ++ "crypto/rand/libcrypto-lib-randfile.o" => [ ++ "crypto/rand/randfile.c" ++ ], ++ "crypto/rand/libfips-lib-rand_lib.o" => [ ++ "crypto/rand/rand_lib.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o" => [ ++ "crypto/rc2/rc2_cbc.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o" => [ ++ "crypto/rc2/rc2_ecb.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2_skey.o" => [ ++ "crypto/rc2/rc2_skey.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o" => [ ++ "crypto/rc2/rc2cfb64.c" ++ ], ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o" => [ ++ "crypto/rc2/rc2ofb64.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_enc.o" => [ ++ "crypto/rc4/rc4_enc.c" ++ ], ++ "crypto/rc4/libcrypto-lib-rc4_skey.o" => [ ++ "crypto/rc4/rc4_skey.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o" => [ ++ "crypto/ripemd/rmd_dgst.c" ++ ], ++ "crypto/ripemd/libcrypto-lib-rmd_one.o" => [ ++ "crypto/ripemd/rmd_one.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o" => [ ++ "crypto/rsa/rsa_ameth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o" => [ ++ "crypto/rsa/rsa_asn1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_depr.o" => [ ++ "crypto/rsa/rsa_depr.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_err.o" => [ ++ "crypto/rsa/rsa_err.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_meth.o" => [ ++ "crypto/rsa/rsa_meth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp.o" => [ ++ "crypto/rsa/rsa_mp.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o" => [ ++ "crypto/rsa/rsa_pmeth.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_prn.o" => [ ++ "crypto/rsa/rsa_prn.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_saos.o" => [ ++ "crypto/rsa/rsa_saos.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o" => [ ++ "crypto/rsa/rsa_x931g.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o" => [ ++ "crypto/rsa/rsa_acvp_test_params.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_backend.o" => [ ++ "crypto/rsa/rsa_backend.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_chk.o" => [ ++ "crypto/rsa/rsa_chk.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_crpt.o" => [ ++ "crypto/rsa/rsa_crpt.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_gen.o" => [ ++ "crypto/rsa/rsa_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_lib.o" => [ ++ "crypto/rsa/rsa_lib.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_mp_names.o" => [ ++ "crypto/rsa/rsa_mp_names.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_none.o" => [ ++ "crypto/rsa/rsa_none.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_oaep.o" => [ ++ "crypto/rsa/rsa_oaep.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_ossl.o" => [ ++ "crypto/rsa/rsa_ossl.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pk1.o" => [ ++ "crypto/rsa/rsa_pk1.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_pss.o" => [ ++ "crypto/rsa/rsa_pss.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_schemes.o" => [ ++ "crypto/rsa/rsa_schemes.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sign.o" => [ ++ "crypto/rsa/rsa_sign.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o" => [ ++ "crypto/rsa/rsa_sp800_56b_check.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o" => [ ++ "crypto/rsa/rsa_sp800_56b_gen.c" ++ ], ++ "crypto/rsa/libfips-lib-rsa_x931.o" => [ ++ "crypto/rsa/rsa_x931.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed.o" => [ ++ "crypto/seed/seed.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cbc.o" => [ ++ "crypto/seed/seed_cbc.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_cfb.o" => [ ++ "crypto/seed/seed_cfb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ecb.o" => [ ++ "crypto/seed/seed_ecb.c" ++ ], ++ "crypto/seed/libcrypto-lib-seed_ofb.o" => [ ++ "crypto/seed/seed_ofb.c" ++ ], ++ "crypto/sha/libcrypto-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1_one.o" => [ ++ "crypto/sha/sha1_one.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libcrypto-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/sha/libfips-lib-keccak1600.o" => [ ++ "crypto/sha/keccak1600.c" ++ ], ++ "crypto/sha/libfips-lib-sha1dgst.o" => [ ++ "crypto/sha/sha1dgst.c" ++ ], ++ "crypto/sha/libfips-lib-sha256.o" => [ ++ "crypto/sha/sha256.c" ++ ], ++ "crypto/sha/libfips-lib-sha3.o" => [ ++ "crypto/sha/sha3.c" ++ ], ++ "crypto/sha/libfips-lib-sha512.o" => [ ++ "crypto/sha/sha512.c" ++ ], ++ "crypto/siphash/libcrypto-lib-siphash.o" => [ ++ "crypto/siphash/siphash.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o" => [ ++ "crypto/sm2/sm2_crypt.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_err.o" => [ ++ "crypto/sm2/sm2_err.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_key.o" => [ ++ "crypto/sm2/sm2_key.c" ++ ], ++ "crypto/sm2/libcrypto-lib-sm2_sign.o" => [ ++ "crypto/sm2/sm2_sign.c" ++ ], ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o" => [ ++ "crypto/sm3/legacy_sm3.c" ++ ], ++ "crypto/sm3/libcrypto-lib-sm3.o" => [ ++ "crypto/sm3/sm3.c" ++ ], ++ "crypto/sm4/libcrypto-lib-sm4.o" => [ ++ "crypto/sm4/sm4.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_lib.o" => [ ++ "crypto/srp/srp_lib.c" ++ ], ++ "crypto/srp/libcrypto-lib-srp_vfy.o" => [ ++ "crypto/srp/srp_vfy.c" ++ ], ++ "crypto/stack/libcrypto-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/stack/libfips-lib-stack.o" => [ ++ "crypto/stack/stack.c" ++ ], ++ "crypto/store/libcrypto-lib-store_err.o" => [ ++ "crypto/store/store_err.c" ++ ], ++ "crypto/store/libcrypto-lib-store_init.o" => [ ++ "crypto/store/store_init.c" ++ ], ++ "crypto/store/libcrypto-lib-store_lib.o" => [ ++ "crypto/store/store_lib.c" ++ ], ++ "crypto/store/libcrypto-lib-store_meth.o" => [ ++ "crypto/store/store_meth.c" ++ ], ++ "crypto/store/libcrypto-lib-store_register.o" => [ ++ "crypto/store/store_register.c" ++ ], ++ "crypto/store/libcrypto-lib-store_result.o" => [ ++ "crypto/store/store_result.c" ++ ], ++ "crypto/store/libcrypto-lib-store_strings.o" => [ ++ "crypto/store/store_strings.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_asn1.o" => [ ++ "crypto/ts/ts_asn1.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_conf.o" => [ ++ "crypto/ts/ts_conf.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_err.o" => [ ++ "crypto/ts/ts_err.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_lib.o" => [ ++ "crypto/ts/ts_lib.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_print.o" => [ ++ "crypto/ts/ts_req_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_req_utils.o" => [ ++ "crypto/ts/ts_req_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o" => [ ++ "crypto/ts/ts_rsp_print.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o" => [ ++ "crypto/ts/ts_rsp_sign.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o" => [ ++ "crypto/ts/ts_rsp_utils.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o" => [ ++ "crypto/ts/ts_rsp_verify.c" ++ ], ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o" => [ ++ "crypto/ts/ts_verify_ctx.c" ++ ], ++ "crypto/txt_db/libcrypto-lib-txt_db.o" => [ ++ "crypto/txt_db/txt_db.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_err.o" => [ ++ "crypto/ui/ui_err.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_lib.o" => [ ++ "crypto/ui/ui_lib.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_null.o" => [ ++ "crypto/ui/ui_null.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_openssl.o" => [ ++ "crypto/ui/ui_openssl.c" ++ ], ++ "crypto/ui/libcrypto-lib-ui_util.o" => [ ++ "crypto/ui/ui_util.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_block.o" => [ ++ "crypto/whrlpool/wp_block.c" ++ ], ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o" => [ ++ "crypto/whrlpool/wp_dgst.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_dir.o" => [ ++ "crypto/x509/by_dir.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_file.o" => [ ++ "crypto/x509/by_file.c" ++ ], ++ "crypto/x509/libcrypto-lib-by_store.o" => [ ++ "crypto/x509/by_store.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_cache.o" => [ ++ "crypto/x509/pcy_cache.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_data.o" => [ ++ "crypto/x509/pcy_data.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_lib.o" => [ ++ "crypto/x509/pcy_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_map.o" => [ ++ "crypto/x509/pcy_map.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_node.o" => [ ++ "crypto/x509/pcy_node.c" ++ ], ++ "crypto/x509/libcrypto-lib-pcy_tree.o" => [ ++ "crypto/x509/pcy_tree.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_crl.o" => [ ++ "crypto/x509/t_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_req.o" => [ ++ "crypto/x509/t_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-t_x509.o" => [ ++ "crypto/x509/t_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_addr.o" => [ ++ "crypto/x509/v3_addr.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_admis.o" => [ ++ "crypto/x509/v3_admis.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akeya.o" => [ ++ "crypto/x509/v3_akeya.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_akid.o" => [ ++ "crypto/x509/v3_akid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_asid.o" => [ ++ "crypto/x509/v3_asid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bcons.o" => [ ++ "crypto/x509/v3_bcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_bitst.o" => [ ++ "crypto/x509/v3_bitst.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_conf.o" => [ ++ "crypto/x509/v3_conf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_cpols.o" => [ ++ "crypto/x509/v3_cpols.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_crld.o" => [ ++ "crypto/x509/v3_crld.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_enum.o" => [ ++ "crypto/x509/v3_enum.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_extku.o" => [ ++ "crypto/x509/v3_extku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_genn.o" => [ ++ "crypto/x509/v3_genn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ia5.o" => [ ++ "crypto/x509/v3_ia5.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_info.o" => [ ++ "crypto/x509/v3_info.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_int.o" => [ ++ "crypto/x509/v3_int.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ist.o" => [ ++ "crypto/x509/v3_ist.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_lib.o" => [ ++ "crypto/x509/v3_lib.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_ncons.o" => [ ++ "crypto/x509/v3_ncons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pci.o" => [ ++ "crypto/x509/v3_pci.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcia.o" => [ ++ "crypto/x509/v3_pcia.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pcons.o" => [ ++ "crypto/x509/v3_pcons.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pku.o" => [ ++ "crypto/x509/v3_pku.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_pmaps.o" => [ ++ "crypto/x509/v3_pmaps.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_prn.o" => [ ++ "crypto/x509/v3_prn.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_purp.o" => [ ++ "crypto/x509/v3_purp.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_san.o" => [ ++ "crypto/x509/v3_san.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_skid.o" => [ ++ "crypto/x509/v3_skid.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_sxnet.o" => [ ++ "crypto/x509/v3_sxnet.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_tlsf.o" => [ ++ "crypto/x509/v3_tlsf.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utf8.o" => [ ++ "crypto/x509/v3_utf8.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3_utl.o" => [ ++ "crypto/x509/v3_utl.c" ++ ], ++ "crypto/x509/libcrypto-lib-v3err.o" => [ ++ "crypto/x509/v3err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_att.o" => [ ++ "crypto/x509/x509_att.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_cmp.o" => [ ++ "crypto/x509/x509_cmp.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_d2.o" => [ ++ "crypto/x509/x509_d2.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_def.o" => [ ++ "crypto/x509/x509_def.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_err.o" => [ ++ "crypto/x509/x509_err.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_ext.o" => [ ++ "crypto/x509/x509_ext.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_lu.o" => [ ++ "crypto/x509/x509_lu.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_meth.o" => [ ++ "crypto/x509/x509_meth.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_obj.o" => [ ++ "crypto/x509/x509_obj.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_r2x.o" => [ ++ "crypto/x509/x509_r2x.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_req.o" => [ ++ "crypto/x509/x509_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_set.o" => [ ++ "crypto/x509/x509_set.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_trust.o" => [ ++ "crypto/x509/x509_trust.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_txt.o" => [ ++ "crypto/x509/x509_txt.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_v3.o" => [ ++ "crypto/x509/x509_v3.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vfy.o" => [ ++ "crypto/x509/x509_vfy.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509_vpm.o" => [ ++ "crypto/x509/x509_vpm.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509cset.o" => [ ++ "crypto/x509/x509cset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509name.o" => [ ++ "crypto/x509/x509name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509rset.o" => [ ++ "crypto/x509/x509rset.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509spki.o" => [ ++ "crypto/x509/x509spki.c" ++ ], ++ "crypto/x509/libcrypto-lib-x509type.o" => [ ++ "crypto/x509/x509type.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_all.o" => [ ++ "crypto/x509/x_all.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_attrib.o" => [ ++ "crypto/x509/x_attrib.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_crl.o" => [ ++ "crypto/x509/x_crl.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_exten.o" => [ ++ "crypto/x509/x_exten.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_name.o" => [ ++ "crypto/x509/x_name.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_pubkey.o" => [ ++ "crypto/x509/x_pubkey.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_req.o" => [ ++ "crypto/x509/x_req.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509.o" => [ ++ "crypto/x509/x_x509.c" ++ ], ++ "crypto/x509/libcrypto-lib-x_x509a.o" => [ ++ "crypto/x509/x_x509a.c" ++ ], ++ "engines/libcrypto-lib-e_capi.o" => [ ++ "engines/e_capi.c" ++ ], ++ "engines/libcrypto-lib-e_padlock.o" => [ ++ "engines/e_padlock.c" ++ ], ++ "fuzz/asn1-test" => [ ++ "fuzz/asn1-test-bin-asn1.o", ++ "fuzz/asn1-test-bin-fuzz_rand.o", ++ "fuzz/asn1-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1-test-bin-asn1.o" => [ ++ "fuzz/asn1.c" ++ ], ++ "fuzz/asn1-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/asn1-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/asn1parse-test" => [ ++ "fuzz/asn1parse-test-bin-asn1parse.o", ++ "fuzz/asn1parse-test-bin-test-corpus.o" ++ ], ++ "fuzz/asn1parse-test-bin-asn1parse.o" => [ ++ "fuzz/asn1parse.c" ++ ], ++ "fuzz/asn1parse-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bignum-test" => [ ++ "fuzz/bignum-test-bin-bignum.o", ++ "fuzz/bignum-test-bin-test-corpus.o" ++ ], ++ "fuzz/bignum-test-bin-bignum.o" => [ ++ "fuzz/bignum.c" ++ ], ++ "fuzz/bignum-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/bndiv-test" => [ ++ "fuzz/bndiv-test-bin-bndiv.o", ++ "fuzz/bndiv-test-bin-test-corpus.o" ++ ], ++ "fuzz/bndiv-test-bin-bndiv.o" => [ ++ "fuzz/bndiv.c" ++ ], ++ "fuzz/bndiv-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/client-test" => [ ++ "fuzz/client-test-bin-client.o", ++ "fuzz/client-test-bin-fuzz_rand.o", ++ "fuzz/client-test-bin-test-corpus.o" ++ ], ++ "fuzz/client-test-bin-client.o" => [ ++ "fuzz/client.c" ++ ], ++ "fuzz/client-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/client-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cmp-test" => [ ++ "fuzz/cmp-test-bin-cmp.o", ++ "fuzz/cmp-test-bin-fuzz_rand.o", ++ "fuzz/cmp-test-bin-test-corpus.o" ++ ], ++ "fuzz/cmp-test-bin-cmp.o" => [ ++ "fuzz/cmp.c" ++ ], ++ "fuzz/cmp-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/cmp-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/cms-test" => [ ++ "fuzz/cms-test-bin-cms.o", ++ "fuzz/cms-test-bin-test-corpus.o" ++ ], ++ "fuzz/cms-test-bin-cms.o" => [ ++ "fuzz/cms.c" ++ ], ++ "fuzz/cms-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/conf-test" => [ ++ "fuzz/conf-test-bin-conf.o", ++ "fuzz/conf-test-bin-test-corpus.o" ++ ], ++ "fuzz/conf-test-bin-conf.o" => [ ++ "fuzz/conf.c" ++ ], ++ "fuzz/conf-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/crl-test" => [ ++ "fuzz/crl-test-bin-crl.o", ++ "fuzz/crl-test-bin-test-corpus.o" ++ ], ++ "fuzz/crl-test-bin-crl.o" => [ ++ "fuzz/crl.c" ++ ], ++ "fuzz/crl-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/ct-test" => [ ++ "fuzz/ct-test-bin-ct.o", ++ "fuzz/ct-test-bin-test-corpus.o" ++ ], ++ "fuzz/ct-test-bin-ct.o" => [ ++ "fuzz/ct.c" ++ ], ++ "fuzz/ct-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/server-test" => [ ++ "fuzz/server-test-bin-fuzz_rand.o", ++ "fuzz/server-test-bin-server.o", ++ "fuzz/server-test-bin-test-corpus.o" ++ ], ++ "fuzz/server-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/server-test-bin-server.o" => [ ++ "fuzz/server.c" ++ ], ++ "fuzz/server-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test" => [ ++ "fuzz/x509-test-bin-fuzz_rand.o", ++ "fuzz/x509-test-bin-test-corpus.o", ++ "fuzz/x509-test-bin-x509.o" ++ ], ++ "fuzz/x509-test-bin-fuzz_rand.o" => [ ++ "fuzz/fuzz_rand.c" ++ ], ++ "fuzz/x509-test-bin-test-corpus.o" => [ ++ "fuzz/test-corpus.c" ++ ], ++ "fuzz/x509-test-bin-x509.o" => [ ++ "fuzz/x509.c" ++ ], ++ "libcrypto" => [ ++ "crypto/aes/libcrypto-lib-aes_cbc.o", ++ "crypto/aes/libcrypto-lib-aes_cfb.o", ++ "crypto/aes/libcrypto-lib-aes_core.o", ++ "crypto/aes/libcrypto-lib-aes_ecb.o", ++ "crypto/aes/libcrypto-lib-aes_ige.o", ++ "crypto/aes/libcrypto-lib-aes_misc.o", ++ "crypto/aes/libcrypto-lib-aes_ofb.o", ++ "crypto/aes/libcrypto-lib-aes_wrap.o", ++ "crypto/aria/libcrypto-lib-aria.o", ++ "crypto/asn1/libcrypto-lib-a_bitstr.o", ++ "crypto/asn1/libcrypto-lib-a_d2i_fp.o", ++ "crypto/asn1/libcrypto-lib-a_digest.o", ++ "crypto/asn1/libcrypto-lib-a_dup.o", ++ "crypto/asn1/libcrypto-lib-a_gentm.o", ++ "crypto/asn1/libcrypto-lib-a_i2d_fp.o", ++ "crypto/asn1/libcrypto-lib-a_int.o", ++ "crypto/asn1/libcrypto-lib-a_mbstr.o", ++ "crypto/asn1/libcrypto-lib-a_object.o", ++ "crypto/asn1/libcrypto-lib-a_octet.o", ++ "crypto/asn1/libcrypto-lib-a_print.o", ++ "crypto/asn1/libcrypto-lib-a_sign.o", ++ "crypto/asn1/libcrypto-lib-a_strex.o", ++ "crypto/asn1/libcrypto-lib-a_strnid.o", ++ "crypto/asn1/libcrypto-lib-a_time.o", ++ "crypto/asn1/libcrypto-lib-a_type.o", ++ "crypto/asn1/libcrypto-lib-a_utctm.o", ++ "crypto/asn1/libcrypto-lib-a_utf8.o", ++ "crypto/asn1/libcrypto-lib-a_verify.o", ++ "crypto/asn1/libcrypto-lib-ameth_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_err.o", ++ "crypto/asn1/libcrypto-lib-asn1_gen.o", ++ "crypto/asn1/libcrypto-lib-asn1_item_list.o", ++ "crypto/asn1/libcrypto-lib-asn1_lib.o", ++ "crypto/asn1/libcrypto-lib-asn1_parse.o", ++ "crypto/asn1/libcrypto-lib-asn_mime.o", ++ "crypto/asn1/libcrypto-lib-asn_moid.o", ++ "crypto/asn1/libcrypto-lib-asn_mstbl.o", ++ "crypto/asn1/libcrypto-lib-asn_pack.o", ++ "crypto/asn1/libcrypto-lib-bio_asn1.o", ++ "crypto/asn1/libcrypto-lib-bio_ndef.o", ++ "crypto/asn1/libcrypto-lib-d2i_param.o", ++ "crypto/asn1/libcrypto-lib-d2i_pr.o", ++ "crypto/asn1/libcrypto-lib-d2i_pu.o", ++ "crypto/asn1/libcrypto-lib-evp_asn1.o", ++ "crypto/asn1/libcrypto-lib-f_int.o", ++ "crypto/asn1/libcrypto-lib-f_string.o", ++ "crypto/asn1/libcrypto-lib-i2d_evp.o", ++ "crypto/asn1/libcrypto-lib-n_pkey.o", ++ "crypto/asn1/libcrypto-lib-nsseq.o", ++ "crypto/asn1/libcrypto-lib-p5_pbe.o", ++ "crypto/asn1/libcrypto-lib-p5_pbev2.o", ++ "crypto/asn1/libcrypto-lib-p5_scrypt.o", ++ "crypto/asn1/libcrypto-lib-p8_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_bitst.o", ++ "crypto/asn1/libcrypto-lib-t_pkey.o", ++ "crypto/asn1/libcrypto-lib-t_spki.o", ++ "crypto/asn1/libcrypto-lib-tasn_dec.o", ++ "crypto/asn1/libcrypto-lib-tasn_enc.o", ++ "crypto/asn1/libcrypto-lib-tasn_fre.o", ++ "crypto/asn1/libcrypto-lib-tasn_new.o", ++ "crypto/asn1/libcrypto-lib-tasn_prn.o", ++ "crypto/asn1/libcrypto-lib-tasn_scn.o", ++ "crypto/asn1/libcrypto-lib-tasn_typ.o", ++ "crypto/asn1/libcrypto-lib-tasn_utl.o", ++ "crypto/asn1/libcrypto-lib-x_algor.o", ++ "crypto/asn1/libcrypto-lib-x_bignum.o", ++ "crypto/asn1/libcrypto-lib-x_info.o", ++ "crypto/asn1/libcrypto-lib-x_int64.o", ++ "crypto/asn1/libcrypto-lib-x_long.o", ++ "crypto/asn1/libcrypto-lib-x_pkey.o", ++ "crypto/asn1/libcrypto-lib-x_sig.o", ++ "crypto/asn1/libcrypto-lib-x_spki.o", ++ "crypto/asn1/libcrypto-lib-x_val.o", ++ "crypto/async/arch/libcrypto-lib-async_null.o", ++ "crypto/async/arch/libcrypto-lib-async_posix.o", ++ "crypto/async/arch/libcrypto-lib-async_win.o", ++ "crypto/async/libcrypto-lib-async.o", ++ "crypto/async/libcrypto-lib-async_err.o", ++ "crypto/async/libcrypto-lib-async_wait.o", ++ "crypto/bf/libcrypto-lib-bf_cfb64.o", ++ "crypto/bf/libcrypto-lib-bf_ecb.o", ++ "crypto/bf/libcrypto-lib-bf_enc.o", ++ "crypto/bf/libcrypto-lib-bf_ofb64.o", ++ "crypto/bf/libcrypto-lib-bf_skey.o", ++ "crypto/bio/libcrypto-lib-bf_buff.o", ++ "crypto/bio/libcrypto-lib-bf_lbuf.o", ++ "crypto/bio/libcrypto-lib-bf_nbio.o", ++ "crypto/bio/libcrypto-lib-bf_null.o", ++ "crypto/bio/libcrypto-lib-bf_prefix.o", ++ "crypto/bio/libcrypto-lib-bf_readbuff.o", ++ "crypto/bio/libcrypto-lib-bio_addr.o", ++ "crypto/bio/libcrypto-lib-bio_cb.o", ++ "crypto/bio/libcrypto-lib-bio_dump.o", ++ "crypto/bio/libcrypto-lib-bio_err.o", ++ "crypto/bio/libcrypto-lib-bio_lib.o", ++ "crypto/bio/libcrypto-lib-bio_meth.o", ++ "crypto/bio/libcrypto-lib-bio_print.o", ++ "crypto/bio/libcrypto-lib-bio_sock.o", ++ "crypto/bio/libcrypto-lib-bio_sock2.o", ++ "crypto/bio/libcrypto-lib-bss_acpt.o", ++ "crypto/bio/libcrypto-lib-bss_bio.o", ++ "crypto/bio/libcrypto-lib-bss_conn.o", ++ "crypto/bio/libcrypto-lib-bss_core.o", ++ "crypto/bio/libcrypto-lib-bss_dgram.o", ++ "crypto/bio/libcrypto-lib-bss_fd.o", ++ "crypto/bio/libcrypto-lib-bss_file.o", ++ "crypto/bio/libcrypto-lib-bss_log.o", ++ "crypto/bio/libcrypto-lib-bss_mem.o", ++ "crypto/bio/libcrypto-lib-bss_null.o", ++ "crypto/bio/libcrypto-lib-bss_sock.o", ++ "crypto/bio/libcrypto-lib-ossl_core_bio.o", ++ "crypto/bn/libcrypto-lib-bn_add.o", ++ "crypto/bn/libcrypto-lib-bn_asm.o", ++ "crypto/bn/libcrypto-lib-bn_blind.o", ++ "crypto/bn/libcrypto-lib-bn_const.o", ++ "crypto/bn/libcrypto-lib-bn_conv.o", ++ "crypto/bn/libcrypto-lib-bn_ctx.o", ++ "crypto/bn/libcrypto-lib-bn_depr.o", ++ "crypto/bn/libcrypto-lib-bn_dh.o", ++ "crypto/bn/libcrypto-lib-bn_div.o", ++ "crypto/bn/libcrypto-lib-bn_err.o", ++ "crypto/bn/libcrypto-lib-bn_exp.o", ++ "crypto/bn/libcrypto-lib-bn_exp2.o", ++ "crypto/bn/libcrypto-lib-bn_gcd.o", ++ "crypto/bn/libcrypto-lib-bn_gf2m.o", ++ "crypto/bn/libcrypto-lib-bn_intern.o", ++ "crypto/bn/libcrypto-lib-bn_kron.o", ++ "crypto/bn/libcrypto-lib-bn_lib.o", ++ "crypto/bn/libcrypto-lib-bn_mod.o", ++ "crypto/bn/libcrypto-lib-bn_mont.o", ++ "crypto/bn/libcrypto-lib-bn_mpi.o", ++ "crypto/bn/libcrypto-lib-bn_mul.o", ++ "crypto/bn/libcrypto-lib-bn_nist.o", ++ "crypto/bn/libcrypto-lib-bn_prime.o", ++ "crypto/bn/libcrypto-lib-bn_print.o", ++ "crypto/bn/libcrypto-lib-bn_rand.o", ++ "crypto/bn/libcrypto-lib-bn_recp.o", ++ "crypto/bn/libcrypto-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libcrypto-lib-bn_shift.o", ++ "crypto/bn/libcrypto-lib-bn_sqr.o", ++ "crypto/bn/libcrypto-lib-bn_sqrt.o", ++ "crypto/bn/libcrypto-lib-bn_srp.o", ++ "crypto/bn/libcrypto-lib-bn_word.o", ++ "crypto/bn/libcrypto-lib-bn_x931p.o", ++ "crypto/buffer/libcrypto-lib-buf_err.o", ++ "crypto/buffer/libcrypto-lib-buffer.o", ++ "crypto/camellia/libcrypto-lib-camellia.o", ++ "crypto/camellia/libcrypto-lib-cmll_cbc.o", ++ "crypto/camellia/libcrypto-lib-cmll_cfb.o", ++ "crypto/camellia/libcrypto-lib-cmll_ctr.o", ++ "crypto/camellia/libcrypto-lib-cmll_ecb.o", ++ "crypto/camellia/libcrypto-lib-cmll_misc.o", ++ "crypto/camellia/libcrypto-lib-cmll_ofb.o", ++ "crypto/cast/libcrypto-lib-c_cfb64.o", ++ "crypto/cast/libcrypto-lib-c_ecb.o", ++ "crypto/cast/libcrypto-lib-c_enc.o", ++ "crypto/cast/libcrypto-lib-c_ofb64.o", ++ "crypto/cast/libcrypto-lib-c_skey.o", ++ "crypto/chacha/libcrypto-lib-chacha_enc.o", ++ "crypto/cmac/libcrypto-lib-cmac.o", ++ "crypto/cmp/libcrypto-lib-cmp_asn.o", ++ "crypto/cmp/libcrypto-lib-cmp_client.o", ++ "crypto/cmp/libcrypto-lib-cmp_ctx.o", ++ "crypto/cmp/libcrypto-lib-cmp_err.o", ++ "crypto/cmp/libcrypto-lib-cmp_hdr.o", ++ "crypto/cmp/libcrypto-lib-cmp_http.o", ++ "crypto/cmp/libcrypto-lib-cmp_msg.o", ++ "crypto/cmp/libcrypto-lib-cmp_protect.o", ++ "crypto/cmp/libcrypto-lib-cmp_server.o", ++ "crypto/cmp/libcrypto-lib-cmp_status.o", ++ "crypto/cmp/libcrypto-lib-cmp_util.o", ++ "crypto/cmp/libcrypto-lib-cmp_vfy.o", ++ "crypto/cms/libcrypto-lib-cms_asn1.o", ++ "crypto/cms/libcrypto-lib-cms_att.o", ++ "crypto/cms/libcrypto-lib-cms_cd.o", ++ "crypto/cms/libcrypto-lib-cms_dd.o", ++ "crypto/cms/libcrypto-lib-cms_dh.o", ++ "crypto/cms/libcrypto-lib-cms_ec.o", ++ "crypto/cms/libcrypto-lib-cms_enc.o", ++ "crypto/cms/libcrypto-lib-cms_env.o", ++ "crypto/cms/libcrypto-lib-cms_err.o", ++ "crypto/cms/libcrypto-lib-cms_ess.o", ++ "crypto/cms/libcrypto-lib-cms_io.o", ++ "crypto/cms/libcrypto-lib-cms_kari.o", ++ "crypto/cms/libcrypto-lib-cms_lib.o", ++ "crypto/cms/libcrypto-lib-cms_pwri.o", ++ "crypto/cms/libcrypto-lib-cms_rsa.o", ++ "crypto/cms/libcrypto-lib-cms_sd.o", ++ "crypto/cms/libcrypto-lib-cms_smime.o", ++ "crypto/conf/libcrypto-lib-conf_api.o", ++ "crypto/conf/libcrypto-lib-conf_def.o", ++ "crypto/conf/libcrypto-lib-conf_err.o", ++ "crypto/conf/libcrypto-lib-conf_lib.o", ++ "crypto/conf/libcrypto-lib-conf_mall.o", ++ "crypto/conf/libcrypto-lib-conf_mod.o", ++ "crypto/conf/libcrypto-lib-conf_sap.o", ++ "crypto/conf/libcrypto-lib-conf_ssl.o", ++ "crypto/crmf/libcrypto-lib-crmf_asn.o", ++ "crypto/crmf/libcrypto-lib-crmf_err.o", ++ "crypto/crmf/libcrypto-lib-crmf_lib.o", ++ "crypto/crmf/libcrypto-lib-crmf_pbm.o", ++ "crypto/ct/libcrypto-lib-ct_b64.o", ++ "crypto/ct/libcrypto-lib-ct_err.o", ++ "crypto/ct/libcrypto-lib-ct_log.o", ++ "crypto/ct/libcrypto-lib-ct_oct.o", ++ "crypto/ct/libcrypto-lib-ct_policy.o", ++ "crypto/ct/libcrypto-lib-ct_prn.o", ++ "crypto/ct/libcrypto-lib-ct_sct.o", ++ "crypto/ct/libcrypto-lib-ct_sct_ctx.o", ++ "crypto/ct/libcrypto-lib-ct_vfy.o", ++ "crypto/ct/libcrypto-lib-ct_x509v3.o", ++ "crypto/des/libcrypto-lib-cbc_cksm.o", ++ "crypto/des/libcrypto-lib-cbc_enc.o", ++ "crypto/des/libcrypto-lib-cfb64ede.o", ++ "crypto/des/libcrypto-lib-cfb64enc.o", ++ "crypto/des/libcrypto-lib-cfb_enc.o", ++ "crypto/des/libcrypto-lib-des_enc.o", ++ "crypto/des/libcrypto-lib-ecb3_enc.o", ++ "crypto/des/libcrypto-lib-ecb_enc.o", ++ "crypto/des/libcrypto-lib-fcrypt.o", ++ "crypto/des/libcrypto-lib-fcrypt_b.o", ++ "crypto/des/libcrypto-lib-ofb64ede.o", ++ "crypto/des/libcrypto-lib-ofb64enc.o", ++ "crypto/des/libcrypto-lib-ofb_enc.o", ++ "crypto/des/libcrypto-lib-pcbc_enc.o", ++ "crypto/des/libcrypto-lib-qud_cksm.o", ++ "crypto/des/libcrypto-lib-rand_key.o", ++ "crypto/des/libcrypto-lib-set_key.o", ++ "crypto/des/libcrypto-lib-str2key.o", ++ "crypto/des/libcrypto-lib-xcbc_enc.o", ++ "crypto/dh/libcrypto-lib-dh_ameth.o", ++ "crypto/dh/libcrypto-lib-dh_asn1.o", ++ "crypto/dh/libcrypto-lib-dh_backend.o", ++ "crypto/dh/libcrypto-lib-dh_check.o", ++ "crypto/dh/libcrypto-lib-dh_depr.o", ++ "crypto/dh/libcrypto-lib-dh_err.o", ++ "crypto/dh/libcrypto-lib-dh_gen.o", ++ "crypto/dh/libcrypto-lib-dh_group_params.o", ++ "crypto/dh/libcrypto-lib-dh_kdf.o", ++ "crypto/dh/libcrypto-lib-dh_key.o", ++ "crypto/dh/libcrypto-lib-dh_lib.o", ++ "crypto/dh/libcrypto-lib-dh_meth.o", ++ "crypto/dh/libcrypto-lib-dh_pmeth.o", ++ "crypto/dh/libcrypto-lib-dh_prn.o", ++ "crypto/dh/libcrypto-lib-dh_rfc5114.o", ++ "crypto/dsa/libcrypto-lib-dsa_ameth.o", ++ "crypto/dsa/libcrypto-lib-dsa_asn1.o", ++ "crypto/dsa/libcrypto-lib-dsa_backend.o", ++ "crypto/dsa/libcrypto-lib-dsa_check.o", ++ "crypto/dsa/libcrypto-lib-dsa_depr.o", ++ "crypto/dsa/libcrypto-lib-dsa_err.o", ++ "crypto/dsa/libcrypto-lib-dsa_gen.o", ++ "crypto/dsa/libcrypto-lib-dsa_key.o", ++ "crypto/dsa/libcrypto-lib-dsa_lib.o", ++ "crypto/dsa/libcrypto-lib-dsa_meth.o", ++ "crypto/dsa/libcrypto-lib-dsa_ossl.o", ++ "crypto/dsa/libcrypto-lib-dsa_pmeth.o", ++ "crypto/dsa/libcrypto-lib-dsa_prn.o", ++ "crypto/dsa/libcrypto-lib-dsa_sign.o", ++ "crypto/dsa/libcrypto-lib-dsa_vrf.o", ++ "crypto/dso/libcrypto-lib-dso_dl.o", ++ "crypto/dso/libcrypto-lib-dso_dlfcn.o", ++ "crypto/dso/libcrypto-lib-dso_err.o", ++ "crypto/dso/libcrypto-lib-dso_lib.o", ++ "crypto/dso/libcrypto-lib-dso_openssl.o", ++ "crypto/dso/libcrypto-lib-dso_vms.o", ++ "crypto/dso/libcrypto-lib-dso_win32.o", ++ "crypto/ec/curve448/arch_32/libcrypto-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libcrypto-lib-f_impl64.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448.o", ++ "crypto/ec/curve448/libcrypto-lib-curve448_tables.o", ++ "crypto/ec/curve448/libcrypto-lib-eddsa.o", ++ "crypto/ec/curve448/libcrypto-lib-f_generic.o", ++ "crypto/ec/curve448/libcrypto-lib-scalar.o", ++ "crypto/ec/libcrypto-lib-curve25519.o", ++ "crypto/ec/libcrypto-lib-ec2_oct.o", ++ "crypto/ec/libcrypto-lib-ec2_smpl.o", ++ "crypto/ec/libcrypto-lib-ec_ameth.o", ++ "crypto/ec/libcrypto-lib-ec_asn1.o", ++ "crypto/ec/libcrypto-lib-ec_backend.o", ++ "crypto/ec/libcrypto-lib-ec_check.o", ++ "crypto/ec/libcrypto-lib-ec_curve.o", ++ "crypto/ec/libcrypto-lib-ec_cvt.o", ++ "crypto/ec/libcrypto-lib-ec_deprecated.o", ++ "crypto/ec/libcrypto-lib-ec_err.o", ++ "crypto/ec/libcrypto-lib-ec_key.o", ++ "crypto/ec/libcrypto-lib-ec_kmeth.o", ++ "crypto/ec/libcrypto-lib-ec_lib.o", ++ "crypto/ec/libcrypto-lib-ec_mult.o", ++ "crypto/ec/libcrypto-lib-ec_oct.o", ++ "crypto/ec/libcrypto-lib-ec_pmeth.o", ++ "crypto/ec/libcrypto-lib-ec_print.o", ++ "crypto/ec/libcrypto-lib-ecdh_kdf.o", ++ "crypto/ec/libcrypto-lib-ecdh_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_ossl.o", ++ "crypto/ec/libcrypto-lib-ecdsa_sign.o", ++ "crypto/ec/libcrypto-lib-ecdsa_vrf.o", ++ "crypto/ec/libcrypto-lib-eck_prn.o", ++ "crypto/ec/libcrypto-lib-ecp_mont.o", ++ "crypto/ec/libcrypto-lib-ecp_nist.o", ++ "crypto/ec/libcrypto-lib-ecp_oct.o", ++ "crypto/ec/libcrypto-lib-ecp_smpl.o", ++ "crypto/ec/libcrypto-lib-ecx_backend.o", ++ "crypto/ec/libcrypto-lib-ecx_key.o", ++ "crypto/ec/libcrypto-lib-ecx_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-decoder_pkey.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_err.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_lib.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_meth.o", ++ "crypto/encode_decode/libcrypto-lib-encoder_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_all.o", ++ "crypto/engine/libcrypto-lib-eng_cnf.o", ++ "crypto/engine/libcrypto-lib-eng_ctrl.o", ++ "crypto/engine/libcrypto-lib-eng_dyn.o", ++ "crypto/engine/libcrypto-lib-eng_err.o", ++ "crypto/engine/libcrypto-lib-eng_fat.o", ++ "crypto/engine/libcrypto-lib-eng_init.o", ++ "crypto/engine/libcrypto-lib-eng_lib.o", ++ "crypto/engine/libcrypto-lib-eng_list.o", ++ "crypto/engine/libcrypto-lib-eng_openssl.o", ++ "crypto/engine/libcrypto-lib-eng_pkey.o", ++ "crypto/engine/libcrypto-lib-eng_rdrand.o", ++ "crypto/engine/libcrypto-lib-eng_table.o", ++ "crypto/engine/libcrypto-lib-tb_asnmth.o", ++ "crypto/engine/libcrypto-lib-tb_cipher.o", ++ "crypto/engine/libcrypto-lib-tb_dh.o", ++ "crypto/engine/libcrypto-lib-tb_digest.o", ++ "crypto/engine/libcrypto-lib-tb_dsa.o", ++ "crypto/engine/libcrypto-lib-tb_eckey.o", ++ "crypto/engine/libcrypto-lib-tb_pkmeth.o", ++ "crypto/engine/libcrypto-lib-tb_rand.o", ++ "crypto/engine/libcrypto-lib-tb_rsa.o", ++ "crypto/err/libcrypto-lib-err.o", ++ "crypto/err/libcrypto-lib-err_all.o", ++ "crypto/err/libcrypto-lib-err_all_legacy.o", ++ "crypto/err/libcrypto-lib-err_blocks.o", ++ "crypto/err/libcrypto-lib-err_prn.o", ++ "crypto/ess/libcrypto-lib-ess_asn1.o", ++ "crypto/ess/libcrypto-lib-ess_err.o", ++ "crypto/ess/libcrypto-lib-ess_lib.o", ++ "crypto/evp/libcrypto-lib-asymcipher.o", ++ "crypto/evp/libcrypto-lib-bio_b64.o", ++ "crypto/evp/libcrypto-lib-bio_enc.o", ++ "crypto/evp/libcrypto-lib-bio_md.o", ++ "crypto/evp/libcrypto-lib-bio_ok.o", ++ "crypto/evp/libcrypto-lib-c_allc.o", ++ "crypto/evp/libcrypto-lib-c_alld.o", ++ "crypto/evp/libcrypto-lib-cmeth_lib.o", ++ "crypto/evp/libcrypto-lib-ctrl_params_translate.o", ++ "crypto/evp/libcrypto-lib-dh_ctrl.o", ++ "crypto/evp/libcrypto-lib-dh_support.o", ++ "crypto/evp/libcrypto-lib-digest.o", ++ "crypto/evp/libcrypto-lib-dsa_ctrl.o", ++ "crypto/evp/libcrypto-lib-e_aes.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha1.o", ++ "crypto/evp/libcrypto-lib-e_aes_cbc_hmac_sha256.o", ++ "crypto/evp/libcrypto-lib-e_aria.o", ++ "crypto/evp/libcrypto-lib-e_bf.o", ++ "crypto/evp/libcrypto-lib-e_camellia.o", ++ "crypto/evp/libcrypto-lib-e_cast.o", ++ "crypto/evp/libcrypto-lib-e_chacha20_poly1305.o", ++ "crypto/evp/libcrypto-lib-e_des.o", ++ "crypto/evp/libcrypto-lib-e_des3.o", ++ "crypto/evp/libcrypto-lib-e_idea.o", ++ "crypto/evp/libcrypto-lib-e_null.o", ++ "crypto/evp/libcrypto-lib-e_old.o", ++ "crypto/evp/libcrypto-lib-e_rc2.o", ++ "crypto/evp/libcrypto-lib-e_rc4.o", ++ "crypto/evp/libcrypto-lib-e_rc4_hmac_md5.o", ++ "crypto/evp/libcrypto-lib-e_rc5.o", ++ "crypto/evp/libcrypto-lib-e_seed.o", ++ "crypto/evp/libcrypto-lib-e_sm4.o", ++ "crypto/evp/libcrypto-lib-e_xcbc_d.o", ++ "crypto/evp/libcrypto-lib-ec_ctrl.o", ++ "crypto/evp/libcrypto-lib-ec_support.o", ++ "crypto/evp/libcrypto-lib-encode.o", ++ "crypto/evp/libcrypto-lib-evp_cnf.o", ++ "crypto/evp/libcrypto-lib-evp_enc.o", ++ "crypto/evp/libcrypto-lib-evp_err.o", ++ "crypto/evp/libcrypto-lib-evp_fetch.o", ++ "crypto/evp/libcrypto-lib-evp_key.o", ++ "crypto/evp/libcrypto-lib-evp_lib.o", ++ "crypto/evp/libcrypto-lib-evp_pbe.o", ++ "crypto/evp/libcrypto-lib-evp_pkey.o", ++ "crypto/evp/libcrypto-lib-evp_rand.o", ++ "crypto/evp/libcrypto-lib-evp_utils.o", ++ "crypto/evp/libcrypto-lib-exchange.o", ++ "crypto/evp/libcrypto-lib-kdf_lib.o", ++ "crypto/evp/libcrypto-lib-kdf_meth.o", ++ "crypto/evp/libcrypto-lib-kem.o", ++ "crypto/evp/libcrypto-lib-keymgmt_lib.o", ++ "crypto/evp/libcrypto-lib-keymgmt_meth.o", ++ "crypto/evp/libcrypto-lib-legacy_blake2.o", ++ "crypto/evp/libcrypto-lib-legacy_md4.o", ++ "crypto/evp/libcrypto-lib-legacy_md5.o", ++ "crypto/evp/libcrypto-lib-legacy_md5_sha1.o", ++ "crypto/evp/libcrypto-lib-legacy_mdc2.o", ++ "crypto/evp/libcrypto-lib-legacy_ripemd.o", ++ "crypto/evp/libcrypto-lib-legacy_sha.o", ++ "crypto/evp/libcrypto-lib-legacy_wp.o", ++ "crypto/evp/libcrypto-lib-m_null.o", ++ "crypto/evp/libcrypto-lib-m_sigver.o", ++ "crypto/evp/libcrypto-lib-mac_lib.o", ++ "crypto/evp/libcrypto-lib-mac_meth.o", ++ "crypto/evp/libcrypto-lib-names.o", ++ "crypto/evp/libcrypto-lib-p5_crpt.o", ++ "crypto/evp/libcrypto-lib-p5_crpt2.o", ++ "crypto/evp/libcrypto-lib-p_dec.o", ++ "crypto/evp/libcrypto-lib-p_enc.o", ++ "crypto/evp/libcrypto-lib-p_legacy.o", ++ "crypto/evp/libcrypto-lib-p_lib.o", ++ "crypto/evp/libcrypto-lib-p_open.o", ++ "crypto/evp/libcrypto-lib-p_seal.o", ++ "crypto/evp/libcrypto-lib-p_sign.o", ++ "crypto/evp/libcrypto-lib-p_verify.o", ++ "crypto/evp/libcrypto-lib-pbe_scrypt.o", ++ "crypto/evp/libcrypto-lib-pmeth_check.o", ++ "crypto/evp/libcrypto-lib-pmeth_gn.o", ++ "crypto/evp/libcrypto-lib-pmeth_lib.o", ++ "crypto/evp/libcrypto-lib-signature.o", ++ "crypto/ffc/libcrypto-lib-ffc_backend.o", ++ "crypto/ffc/libcrypto-lib-ffc_dh.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_key_validate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_generate.o", ++ "crypto/ffc/libcrypto-lib-ffc_params_validate.o", ++ "crypto/hmac/libcrypto-lib-hmac.o", ++ "crypto/http/libcrypto-lib-http_client.o", ++ "crypto/http/libcrypto-lib-http_err.o", ++ "crypto/http/libcrypto-lib-http_lib.o", ++ "crypto/idea/libcrypto-lib-i_cbc.o", ++ "crypto/idea/libcrypto-lib-i_cfb64.o", ++ "crypto/idea/libcrypto-lib-i_ecb.o", ++ "crypto/idea/libcrypto-lib-i_ofb64.o", ++ "crypto/idea/libcrypto-lib-i_skey.o", ++ "crypto/kdf/libcrypto-lib-kdf_err.o", ++ "crypto/lhash/libcrypto-lib-lh_stats.o", ++ "crypto/lhash/libcrypto-lib-lhash.o", ++ "crypto/libcrypto-lib-asn1_dsa.o", ++ "crypto/libcrypto-lib-bsearch.o", ++ "crypto/libcrypto-lib-context.o", ++ "crypto/libcrypto-lib-core_algorithm.o", ++ "crypto/libcrypto-lib-core_fetch.o", ++ "crypto/libcrypto-lib-core_namemap.o", ++ "crypto/libcrypto-lib-cpt_err.o", ++ "crypto/libcrypto-lib-cpuid.o", ++ "crypto/libcrypto-lib-cryptlib.o", ++ "crypto/libcrypto-lib-ctype.o", ++ "crypto/libcrypto-lib-cversion.o", ++ "crypto/libcrypto-lib-der_writer.o", ++ "crypto/libcrypto-lib-ebcdic.o", ++ "crypto/libcrypto-lib-ex_data.o", ++ "crypto/libcrypto-lib-getenv.o", ++ "crypto/libcrypto-lib-info.o", ++ "crypto/libcrypto-lib-init.o", ++ "crypto/libcrypto-lib-initthread.o", ++ "crypto/libcrypto-lib-mem.o", ++ "crypto/libcrypto-lib-mem_clr.o", ++ "crypto/libcrypto-lib-mem_sec.o", ++ "crypto/libcrypto-lib-o_dir.o", ++ "crypto/libcrypto-lib-o_fopen.o", ++ "crypto/libcrypto-lib-o_init.o", ++ "crypto/libcrypto-lib-o_str.o", ++ "crypto/libcrypto-lib-o_time.o", ++ "crypto/libcrypto-lib-packet.o", ++ "crypto/libcrypto-lib-param_build.o", ++ "crypto/libcrypto-lib-param_build_set.o", ++ "crypto/libcrypto-lib-params.o", ++ "crypto/libcrypto-lib-params_dup.o", ++ "crypto/libcrypto-lib-params_from_text.o", ++ "crypto/libcrypto-lib-passphrase.o", ++ "crypto/libcrypto-lib-provider.o", ++ "crypto/libcrypto-lib-provider_child.o", ++ "crypto/libcrypto-lib-provider_conf.o", ++ "crypto/libcrypto-lib-provider_core.o", ++ "crypto/libcrypto-lib-provider_predefined.o", ++ "crypto/libcrypto-lib-punycode.o", ++ "crypto/libcrypto-lib-self_test_core.o", ++ "crypto/libcrypto-lib-sparse_array.o", ++ "crypto/libcrypto-lib-threads_lib.o", ++ "crypto/libcrypto-lib-threads_none.o", ++ "crypto/libcrypto-lib-threads_pthread.o", ++ "crypto/libcrypto-lib-threads_win.o", ++ "crypto/libcrypto-lib-trace.o", ++ "crypto/libcrypto-lib-uid.o", ++ "crypto/md4/libcrypto-lib-md4_dgst.o", ++ "crypto/md4/libcrypto-lib-md4_one.o", ++ "crypto/md5/libcrypto-lib-md5_dgst.o", ++ "crypto/md5/libcrypto-lib-md5_one.o", ++ "crypto/md5/libcrypto-lib-md5_sha1.o", ++ "crypto/mdc2/libcrypto-lib-mdc2_one.o", ++ "crypto/mdc2/libcrypto-lib-mdc2dgst.o", ++ "crypto/modes/libcrypto-lib-cbc128.o", ++ "crypto/modes/libcrypto-lib-ccm128.o", ++ "crypto/modes/libcrypto-lib-cfb128.o", ++ "crypto/modes/libcrypto-lib-ctr128.o", ++ "crypto/modes/libcrypto-lib-cts128.o", ++ "crypto/modes/libcrypto-lib-gcm128.o", ++ "crypto/modes/libcrypto-lib-ocb128.o", ++ "crypto/modes/libcrypto-lib-ofb128.o", ++ "crypto/modes/libcrypto-lib-siv128.o", ++ "crypto/modes/libcrypto-lib-wrap128.o", ++ "crypto/modes/libcrypto-lib-xts128.o", ++ "crypto/objects/libcrypto-lib-o_names.o", ++ "crypto/objects/libcrypto-lib-obj_dat.o", ++ "crypto/objects/libcrypto-lib-obj_err.o", ++ "crypto/objects/libcrypto-lib-obj_lib.o", ++ "crypto/objects/libcrypto-lib-obj_xref.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_asn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_cl.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_err.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_ext.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_http.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_lib.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_prn.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_srv.o", ++ "crypto/ocsp/libcrypto-lib-ocsp_vfy.o", ++ "crypto/ocsp/libcrypto-lib-v3_ocsp.o", ++ "crypto/pem/libcrypto-lib-pem_all.o", ++ "crypto/pem/libcrypto-lib-pem_err.o", ++ "crypto/pem/libcrypto-lib-pem_info.o", ++ "crypto/pem/libcrypto-lib-pem_lib.o", ++ "crypto/pem/libcrypto-lib-pem_oth.o", ++ "crypto/pem/libcrypto-lib-pem_pk8.o", ++ "crypto/pem/libcrypto-lib-pem_pkey.o", ++ "crypto/pem/libcrypto-lib-pem_sign.o", ++ "crypto/pem/libcrypto-lib-pem_x509.o", ++ "crypto/pem/libcrypto-lib-pem_xaux.o", ++ "crypto/pem/libcrypto-lib-pvkfmt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_add.o", ++ "crypto/pkcs12/libcrypto-lib-p12_asn.o", ++ "crypto/pkcs12/libcrypto-lib-p12_attr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crpt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_crt.o", ++ "crypto/pkcs12/libcrypto-lib-p12_decr.o", ++ "crypto/pkcs12/libcrypto-lib-p12_init.o", ++ "crypto/pkcs12/libcrypto-lib-p12_key.o", ++ "crypto/pkcs12/libcrypto-lib-p12_kiss.o", ++ "crypto/pkcs12/libcrypto-lib-p12_mutl.o", ++ "crypto/pkcs12/libcrypto-lib-p12_npas.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8d.o", ++ "crypto/pkcs12/libcrypto-lib-p12_p8e.o", ++ "crypto/pkcs12/libcrypto-lib-p12_sbag.o", ++ "crypto/pkcs12/libcrypto-lib-p12_utl.o", ++ "crypto/pkcs12/libcrypto-lib-pk12err.o", ++ "crypto/pkcs7/libcrypto-lib-bio_pk7.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_asn1.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_attr.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_doit.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_lib.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_mime.o", ++ "crypto/pkcs7/libcrypto-lib-pk7_smime.o", ++ "crypto/pkcs7/libcrypto-lib-pkcs7err.o", ++ "crypto/poly1305/libcrypto-lib-poly1305.o", ++ "crypto/property/libcrypto-lib-defn_cache.o", ++ "crypto/property/libcrypto-lib-property.o", ++ "crypto/property/libcrypto-lib-property_err.o", ++ "crypto/property/libcrypto-lib-property_parse.o", ++ "crypto/property/libcrypto-lib-property_query.o", ++ "crypto/property/libcrypto-lib-property_string.o", ++ "crypto/rand/libcrypto-lib-prov_seed.o", ++ "crypto/rand/libcrypto-lib-rand_deprecated.o", ++ "crypto/rand/libcrypto-lib-rand_err.o", ++ "crypto/rand/libcrypto-lib-rand_lib.o", ++ "crypto/rand/libcrypto-lib-rand_meth.o", ++ "crypto/rand/libcrypto-lib-rand_pool.o", ++ "crypto/rand/libcrypto-lib-randfile.o", ++ "crypto/rc2/libcrypto-lib-rc2_cbc.o", ++ "crypto/rc2/libcrypto-lib-rc2_ecb.o", ++ "crypto/rc2/libcrypto-lib-rc2_skey.o", ++ "crypto/rc2/libcrypto-lib-rc2cfb64.o", ++ "crypto/rc2/libcrypto-lib-rc2ofb64.o", ++ "crypto/rc4/libcrypto-lib-rc4_enc.o", ++ "crypto/rc4/libcrypto-lib-rc4_skey.o", ++ "crypto/ripemd/libcrypto-lib-rmd_dgst.o", ++ "crypto/ripemd/libcrypto-lib-rmd_one.o", ++ "crypto/rsa/libcrypto-lib-rsa_ameth.o", ++ "crypto/rsa/libcrypto-lib-rsa_asn1.o", ++ "crypto/rsa/libcrypto-lib-rsa_backend.o", ++ "crypto/rsa/libcrypto-lib-rsa_chk.o", ++ "crypto/rsa/libcrypto-lib-rsa_crpt.o", ++ "crypto/rsa/libcrypto-lib-rsa_depr.o", ++ "crypto/rsa/libcrypto-lib-rsa_err.o", ++ "crypto/rsa/libcrypto-lib-rsa_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_lib.o", ++ "crypto/rsa/libcrypto-lib-rsa_meth.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp.o", ++ "crypto/rsa/libcrypto-lib-rsa_mp_names.o", ++ "crypto/rsa/libcrypto-lib-rsa_none.o", ++ "crypto/rsa/libcrypto-lib-rsa_oaep.o", ++ "crypto/rsa/libcrypto-lib-rsa_ossl.o", ++ "crypto/rsa/libcrypto-lib-rsa_pk1.o", ++ "crypto/rsa/libcrypto-lib-rsa_pmeth.o", ++ "crypto/rsa/libcrypto-lib-rsa_prn.o", ++ "crypto/rsa/libcrypto-lib-rsa_pss.o", ++ "crypto/rsa/libcrypto-lib-rsa_saos.o", ++ "crypto/rsa/libcrypto-lib-rsa_schemes.o", ++ "crypto/rsa/libcrypto-lib-rsa_sign.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libcrypto-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931.o", ++ "crypto/rsa/libcrypto-lib-rsa_x931g.o", ++ "crypto/seed/libcrypto-lib-seed.o", ++ "crypto/seed/libcrypto-lib-seed_cbc.o", ++ "crypto/seed/libcrypto-lib-seed_cfb.o", ++ "crypto/seed/libcrypto-lib-seed_ecb.o", ++ "crypto/seed/libcrypto-lib-seed_ofb.o", ++ "crypto/sha/libcrypto-lib-keccak1600.o", ++ "crypto/sha/libcrypto-lib-sha1_one.o", ++ "crypto/sha/libcrypto-lib-sha1dgst.o", ++ "crypto/sha/libcrypto-lib-sha256.o", ++ "crypto/sha/libcrypto-lib-sha3.o", ++ "crypto/sha/libcrypto-lib-sha512.o", ++ "crypto/siphash/libcrypto-lib-siphash.o", ++ "crypto/sm2/libcrypto-lib-sm2_crypt.o", ++ "crypto/sm2/libcrypto-lib-sm2_err.o", ++ "crypto/sm2/libcrypto-lib-sm2_key.o", ++ "crypto/sm2/libcrypto-lib-sm2_sign.o", ++ "crypto/sm3/libcrypto-lib-legacy_sm3.o", ++ "crypto/sm3/libcrypto-lib-sm3.o", ++ "crypto/sm4/libcrypto-lib-sm4.o", ++ "crypto/srp/libcrypto-lib-srp_lib.o", ++ "crypto/srp/libcrypto-lib-srp_vfy.o", ++ "crypto/stack/libcrypto-lib-stack.o", ++ "crypto/store/libcrypto-lib-store_err.o", ++ "crypto/store/libcrypto-lib-store_init.o", ++ "crypto/store/libcrypto-lib-store_lib.o", ++ "crypto/store/libcrypto-lib-store_meth.o", ++ "crypto/store/libcrypto-lib-store_register.o", ++ "crypto/store/libcrypto-lib-store_result.o", ++ "crypto/store/libcrypto-lib-store_strings.o", ++ "crypto/ts/libcrypto-lib-ts_asn1.o", ++ "crypto/ts/libcrypto-lib-ts_conf.o", ++ "crypto/ts/libcrypto-lib-ts_err.o", ++ "crypto/ts/libcrypto-lib-ts_lib.o", ++ "crypto/ts/libcrypto-lib-ts_req_print.o", ++ "crypto/ts/libcrypto-lib-ts_req_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_print.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_sign.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_utils.o", ++ "crypto/ts/libcrypto-lib-ts_rsp_verify.o", ++ "crypto/ts/libcrypto-lib-ts_verify_ctx.o", ++ "crypto/txt_db/libcrypto-lib-txt_db.o", ++ "crypto/ui/libcrypto-lib-ui_err.o", ++ "crypto/ui/libcrypto-lib-ui_lib.o", ++ "crypto/ui/libcrypto-lib-ui_null.o", ++ "crypto/ui/libcrypto-lib-ui_openssl.o", ++ "crypto/ui/libcrypto-lib-ui_util.o", ++ "crypto/whrlpool/libcrypto-lib-wp_block.o", ++ "crypto/whrlpool/libcrypto-lib-wp_dgst.o", ++ "crypto/x509/libcrypto-lib-by_dir.o", ++ "crypto/x509/libcrypto-lib-by_file.o", ++ "crypto/x509/libcrypto-lib-by_store.o", ++ "crypto/x509/libcrypto-lib-pcy_cache.o", ++ "crypto/x509/libcrypto-lib-pcy_data.o", ++ "crypto/x509/libcrypto-lib-pcy_lib.o", ++ "crypto/x509/libcrypto-lib-pcy_map.o", ++ "crypto/x509/libcrypto-lib-pcy_node.o", ++ "crypto/x509/libcrypto-lib-pcy_tree.o", ++ "crypto/x509/libcrypto-lib-t_crl.o", ++ "crypto/x509/libcrypto-lib-t_req.o", ++ "crypto/x509/libcrypto-lib-t_x509.o", ++ "crypto/x509/libcrypto-lib-v3_addr.o", ++ "crypto/x509/libcrypto-lib-v3_admis.o", ++ "crypto/x509/libcrypto-lib-v3_akeya.o", ++ "crypto/x509/libcrypto-lib-v3_akid.o", ++ "crypto/x509/libcrypto-lib-v3_asid.o", ++ "crypto/x509/libcrypto-lib-v3_bcons.o", ++ "crypto/x509/libcrypto-lib-v3_bitst.o", ++ "crypto/x509/libcrypto-lib-v3_conf.o", ++ "crypto/x509/libcrypto-lib-v3_cpols.o", ++ "crypto/x509/libcrypto-lib-v3_crld.o", ++ "crypto/x509/libcrypto-lib-v3_enum.o", ++ "crypto/x509/libcrypto-lib-v3_extku.o", ++ "crypto/x509/libcrypto-lib-v3_genn.o", ++ "crypto/x509/libcrypto-lib-v3_ia5.o", ++ "crypto/x509/libcrypto-lib-v3_info.o", ++ "crypto/x509/libcrypto-lib-v3_int.o", ++ "crypto/x509/libcrypto-lib-v3_ist.o", ++ "crypto/x509/libcrypto-lib-v3_lib.o", ++ "crypto/x509/libcrypto-lib-v3_ncons.o", ++ "crypto/x509/libcrypto-lib-v3_pci.o", ++ "crypto/x509/libcrypto-lib-v3_pcia.o", ++ "crypto/x509/libcrypto-lib-v3_pcons.o", ++ "crypto/x509/libcrypto-lib-v3_pku.o", ++ "crypto/x509/libcrypto-lib-v3_pmaps.o", ++ "crypto/x509/libcrypto-lib-v3_prn.o", ++ "crypto/x509/libcrypto-lib-v3_purp.o", ++ "crypto/x509/libcrypto-lib-v3_san.o", ++ "crypto/x509/libcrypto-lib-v3_skid.o", ++ "crypto/x509/libcrypto-lib-v3_sxnet.o", ++ "crypto/x509/libcrypto-lib-v3_tlsf.o", ++ "crypto/x509/libcrypto-lib-v3_utf8.o", ++ "crypto/x509/libcrypto-lib-v3_utl.o", ++ "crypto/x509/libcrypto-lib-v3err.o", ++ "crypto/x509/libcrypto-lib-x509_att.o", ++ "crypto/x509/libcrypto-lib-x509_cmp.o", ++ "crypto/x509/libcrypto-lib-x509_d2.o", ++ "crypto/x509/libcrypto-lib-x509_def.o", ++ "crypto/x509/libcrypto-lib-x509_err.o", ++ "crypto/x509/libcrypto-lib-x509_ext.o", ++ "crypto/x509/libcrypto-lib-x509_lu.o", ++ "crypto/x509/libcrypto-lib-x509_meth.o", ++ "crypto/x509/libcrypto-lib-x509_obj.o", ++ "crypto/x509/libcrypto-lib-x509_r2x.o", ++ "crypto/x509/libcrypto-lib-x509_req.o", ++ "crypto/x509/libcrypto-lib-x509_set.o", ++ "crypto/x509/libcrypto-lib-x509_trust.o", ++ "crypto/x509/libcrypto-lib-x509_txt.o", ++ "crypto/x509/libcrypto-lib-x509_v3.o", ++ "crypto/x509/libcrypto-lib-x509_vfy.o", ++ "crypto/x509/libcrypto-lib-x509_vpm.o", ++ "crypto/x509/libcrypto-lib-x509cset.o", ++ "crypto/x509/libcrypto-lib-x509name.o", ++ "crypto/x509/libcrypto-lib-x509rset.o", ++ "crypto/x509/libcrypto-lib-x509spki.o", ++ "crypto/x509/libcrypto-lib-x509type.o", ++ "crypto/x509/libcrypto-lib-x_all.o", ++ "crypto/x509/libcrypto-lib-x_attrib.o", ++ "crypto/x509/libcrypto-lib-x_crl.o", ++ "crypto/x509/libcrypto-lib-x_exten.o", ++ "crypto/x509/libcrypto-lib-x_name.o", ++ "crypto/x509/libcrypto-lib-x_pubkey.o", ++ "crypto/x509/libcrypto-lib-x_req.o", ++ "crypto/x509/libcrypto-lib-x_x509.o", ++ "crypto/x509/libcrypto-lib-x_x509a.o", ++ "engines/libcrypto-lib-e_capi.o", ++ "engines/libcrypto-lib-e_padlock.o", ++ "providers/libcrypto-lib-baseprov.o", ++ "providers/libcrypto-lib-defltprov.o", ++ "providers/libcrypto-lib-nullprov.o", ++ "providers/libcrypto-lib-prov_running.o", ++ "providers/libdefault.a" ++ ], ++ "libssl" => [ ++ "ssl/libssl-lib-bio_ssl.o", ++ "ssl/libssl-lib-d1_lib.o", ++ "ssl/libssl-lib-d1_msg.o", ++ "ssl/libssl-lib-d1_srtp.o", ++ "ssl/libssl-lib-methods.o", ++ "ssl/libssl-lib-pqueue.o", ++ "ssl/libssl-lib-s3_enc.o", ++ "ssl/libssl-lib-s3_lib.o", ++ "ssl/libssl-lib-s3_msg.o", ++ "ssl/libssl-lib-ssl_asn1.o", ++ "ssl/libssl-lib-ssl_cert.o", ++ "ssl/libssl-lib-ssl_ciph.o", ++ "ssl/libssl-lib-ssl_conf.o", ++ "ssl/libssl-lib-ssl_err.o", ++ "ssl/libssl-lib-ssl_err_legacy.o", ++ "ssl/libssl-lib-ssl_init.o", ++ "ssl/libssl-lib-ssl_lib.o", ++ "ssl/libssl-lib-ssl_mcnf.o", ++ "ssl/libssl-lib-ssl_quic.o", ++ "ssl/libssl-lib-ssl_rsa.o", ++ "ssl/libssl-lib-ssl_rsa_legacy.o", ++ "ssl/libssl-lib-ssl_sess.o", ++ "ssl/libssl-lib-ssl_stat.o", ++ "ssl/libssl-lib-ssl_txt.o", ++ "ssl/libssl-lib-ssl_utst.o", ++ "ssl/libssl-lib-t1_enc.o", ++ "ssl/libssl-lib-t1_lib.o", ++ "ssl/libssl-lib-t1_trce.o", ++ "ssl/libssl-lib-tls13_enc.o", ++ "ssl/libssl-lib-tls_depr.o", ++ "ssl/libssl-lib-tls_srp.o", ++ "ssl/record/libssl-lib-dtls1_bitmap.o", ++ "ssl/record/libssl-lib-rec_layer_d1.o", ++ "ssl/record/libssl-lib-rec_layer_s3.o", ++ "ssl/record/libssl-lib-ssl3_buffer.o", ++ "ssl/record/libssl-lib-ssl3_record.o", ++ "ssl/record/libssl-lib-ssl3_record_tls13.o", ++ "ssl/statem/libssl-lib-extensions.o", ++ "ssl/statem/libssl-lib-extensions_clnt.o", ++ "ssl/statem/libssl-lib-extensions_cust.o", ++ "ssl/statem/libssl-lib-extensions_srvr.o", ++ "ssl/statem/libssl-lib-statem.o", ++ "ssl/statem/libssl-lib-statem_clnt.o", ++ "ssl/statem/libssl-lib-statem_dtls.o", ++ "ssl/statem/libssl-lib-statem_lib.o", ++ "ssl/statem/libssl-lib-statem_quic.o", ++ "ssl/statem/libssl-lib-statem_srvr.o" ++ ], ++ "providers/common/der/libcommon-lib-der_digests_gen.o" => [ ++ "providers/common/der/der_digests_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_gen.o" => [ ++ "providers/common/der/der_dsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_key.o" => [ ++ "providers/common/der/der_dsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_dsa_sig.o" => [ ++ "providers/common/der/der_dsa_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_gen.o" => [ ++ "providers/common/der/der_ec_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_key.o" => [ ++ "providers/common/der/der_ec_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ec_sig.o" => [ ++ "providers/common/der/der_ec_sig.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_gen.o" => [ ++ "providers/common/der/der_ecx_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_ecx_key.o" => [ ++ "providers/common/der/der_ecx_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_gen.o" => [ ++ "providers/common/der/der_rsa_gen.c" ++ ], ++ "providers/common/der/libcommon-lib-der_rsa_key.o" => [ ++ "providers/common/der/der_rsa_key.c" ++ ], ++ "providers/common/der/libcommon-lib-der_wrap_gen.o" => [ ++ "providers/common/der/der_wrap_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_gen.o" => [ ++ "providers/common/der/der_sm2_gen.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_key.o" => [ ++ "providers/common/der/der_sm2_key.c" ++ ], ++ "providers/common/der/libdefault-lib-der_sm2_sig.o" => [ ++ "providers/common/der/der_sm2_sig.c" ++ ], ++ "providers/common/der/libfips-lib-der_rsa_sig.o" => [ ++ "providers/common/der/der_rsa_sig.c" ++ ], ++ "providers/common/libcommon-lib-provider_ctx.o" => [ ++ "providers/common/provider_ctx.c" ++ ], ++ "providers/common/libcommon-lib-provider_err.o" => [ ++ "providers/common/provider_err.c" ++ ], ++ "providers/common/libdefault-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libdefault-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libdefault-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libdefault-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libdefault-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libdefault-lib-securitycheck_default.o" => [ ++ "providers/common/securitycheck_default.c" ++ ], ++ "providers/common/libfips-lib-bio_prov.o" => [ ++ "providers/common/bio_prov.c" ++ ], ++ "providers/common/libfips-lib-capabilities.o" => [ ++ "providers/common/capabilities.c" ++ ], ++ "providers/common/libfips-lib-digest_to_nid.o" => [ ++ "providers/common/digest_to_nid.c" ++ ], ++ "providers/common/libfips-lib-provider_seeding.o" => [ ++ "providers/common/provider_seeding.c" ++ ], ++ "providers/common/libfips-lib-provider_util.o" => [ ++ "providers/common/provider_util.c" ++ ], ++ "providers/common/libfips-lib-securitycheck.o" => [ ++ "providers/common/securitycheck.c" ++ ], ++ "providers/common/libfips-lib-securitycheck_fips.o" => [ ++ "providers/common/securitycheck_fips.c" ++ ], ++ "providers/fips" => [ ++ "providers/fips.ld", ++ "providers/fips/fips-dso-fips_entry.o" ++ ], ++ "providers/fips/fips-dso-fips_entry.o" => [ ++ "providers/fips/fips_entry.c" ++ ], ++ "providers/fips/libfips-lib-fipsprov.o" => [ ++ "providers/fips/fipsprov.c" ++ ], ++ "providers/fips/libfips-lib-self_test.o" => [ ++ "providers/fips/self_test.c" ++ ], ++ "providers/fips/libfips-lib-self_test_kats.o" => [ ++ "providers/fips/self_test_kats.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o" => [ ++ "providers/implementations/asymciphers/sm2_enc.c" ++ ], ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o" => [ ++ "providers/implementations/asymciphers/rsa_enc.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o" => [ ++ "providers/implementations/ciphers/ciphercommon.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o" => [ ++ "providers/implementations/ciphers/ciphercommon_block.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o" => [ ++ "providers/implementations/ciphers/ciphercommon_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_siv_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o" => [ ++ "providers/implementations/ciphers/cipher_aria.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aria_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o" => [ ++ "providers/implementations/ciphers/cipher_camellia.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o" => [ ++ "providers/implementations/ciphers/cipher_camellia_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o" => [ ++ "providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o" => [ ++ "providers/implementations/ciphers/cipher_null.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o" => [ ++ "providers/implementations/ciphers/cipher_sm4.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_sm4_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_default_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap.c" ++ ], ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_wrap_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o" => [ ++ "providers/implementations/ciphers/cipher_aes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ccm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_gcm_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_ocb_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o" => [ ++ "providers/implementations/ciphers/cipher_aes_wrp.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_fips.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o" => [ ++ "providers/implementations/ciphers/cipher_aes_xts_hw.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o" => [ ++ "providers/implementations/ciphers/cipher_cts.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o" => [ ++ "providers/implementations/ciphers/cipher_tdes.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o" => [ ++ "providers/implementations/ciphers/cipher_blowfish_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o" => [ ++ "providers/implementations/ciphers/cipher_cast5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_cast5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o" => [ ++ "providers/implementations/ciphers/cipher_des.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o" => [ ++ "providers/implementations/ciphers/cipher_des_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o" => [ ++ "providers/implementations/ciphers/cipher_desx.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o" => [ ++ "providers/implementations/ciphers/cipher_desx_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o" => [ ++ "providers/implementations/ciphers/cipher_idea.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o" => [ ++ "providers/implementations/ciphers/cipher_idea_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o" => [ ++ "providers/implementations/ciphers/cipher_rc2.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc2_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o" => [ ++ "providers/implementations/ciphers/cipher_rc4.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o" => [ ++ "providers/implementations/ciphers/cipher_rc4_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o" => [ ++ "providers/implementations/ciphers/cipher_seed.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o" => [ ++ "providers/implementations/ciphers/cipher_seed_hw.c" ++ ], ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o" => [ ++ "providers/implementations/ciphers/cipher_tdes_common.c" ++ ], ++ "providers/implementations/digests/libcommon-lib-digestcommon.o" => [ ++ "providers/implementations/digests/digestcommon.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o" => [ ++ "providers/implementations/digests/blake2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o" => [ ++ "providers/implementations/digests/blake2b_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o" => [ ++ "providers/implementations/digests/blake2s_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_prov.o" => [ ++ "providers/implementations/digests/md5_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o" => [ ++ "providers/implementations/digests/md5_sha1_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-null_prov.o" => [ ++ "providers/implementations/digests/null_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o" => [ ++ "providers/implementations/digests/sm3_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha2_prov.o" => [ ++ "providers/implementations/digests/sha2_prov.c" ++ ], ++ "providers/implementations/digests/libfips-lib-sha3_prov.o" => [ ++ "providers/implementations/digests/sha3_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o" => [ ++ "providers/implementations/digests/md4_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o" => [ ++ "providers/implementations/digests/mdc2_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o" => [ ++ "providers/implementations/digests/ripemd_prov.c" ++ ], ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o" => [ ++ "providers/implementations/digests/wp_prov.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o" => [ ++ "providers/implementations/encode_decode/decode_der2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o" => [ ++ "providers/implementations/encode_decode/decode_epki2pki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o" => [ ++ "providers/implementations/encode_decode/decode_msblob2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o" => [ ++ "providers/implementations/encode_decode/decode_pem2der.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o" => [ ++ "providers/implementations/encode_decode/decode_pvk2key.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o" => [ ++ "providers/implementations/encode_decode/decode_spki2typespki.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o" => [ ++ "providers/implementations/encode_decode/encode_key2any.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o" => [ ++ "providers/implementations/encode_decode/encode_key2blob.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o" => [ ++ "providers/implementations/encode_decode/encode_key2ms.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o" => [ ++ "providers/implementations/encode_decode/encode_key2text.c" ++ ], ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o" => [ ++ "providers/implementations/encode_decode/endecoder_common.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-dh_exch.o" => [ ++ "providers/implementations/exchange/dh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o" => [ ++ "providers/implementations/exchange/ecdh_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o" => [ ++ "providers/implementations/exchange/ecx_exch.c" ++ ], ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o" => [ ++ "providers/implementations/exchange/kdf_exch.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o" => [ ++ "providers/implementations/kdfs/krb5kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o" => [ ++ "providers/implementations/kdfs/pkcs12kdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o" => [ ++ "providers/implementations/kdfs/scrypt.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-hkdf.o" => [ ++ "providers/implementations/kdfs/hkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o" => [ ++ "providers/implementations/kdfs/kbkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o" => [ ++ "providers/implementations/kdfs/pbkdf2.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o" => [ ++ "providers/implementations/kdfs/pbkdf2_fips.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o" => [ ++ "providers/implementations/kdfs/sshkdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-sskdf.o" => [ ++ "providers/implementations/kdfs/sskdf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o" => [ ++ "providers/implementations/kdfs/tls1_prf.c" ++ ], ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o" => [ ++ "providers/implementations/kdfs/x942kdf.c" ++ ], ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o" => [ ++ "providers/implementations/kdfs/pbkdf1.c" ++ ], ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/kem/libfips-lib-rsa_kem.o" => [ ++ "providers/implementations/kem/rsa_kem.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dh_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/dsa_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ec_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o" => [ ++ "providers/implementations/keymgmt/ecx_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/kdf_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o" => [ ++ "providers/implementations/keymgmt/mac_legacy_kmgmt.c" ++ ], ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o" => [ ++ "providers/implementations/keymgmt/rsa_kmgmt.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o" => [ ++ "providers/implementations/macs/blake2b_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o" => [ ++ "providers/implementations/macs/blake2s_mac.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o" => [ ++ "providers/implementations/macs/poly1305_prov.c" ++ ], ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o" => [ ++ "providers/implementations/macs/siphash_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-cmac_prov.o" => [ ++ "providers/implementations/macs/cmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-gmac_prov.o" => [ ++ "providers/implementations/macs/gmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-hmac_prov.o" => [ ++ "providers/implementations/macs/hmac_prov.c" ++ ], ++ "providers/implementations/macs/libfips-lib-kmac_prov.o" => [ ++ "providers/implementations/macs/kmac_prov.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-seed_src.o" => [ ++ "providers/implementations/rands/seed_src.c" ++ ], ++ "providers/implementations/rands/libdefault-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/libfips-lib-crngt.o" => [ ++ "providers/implementations/rands/crngt.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg.o" => [ ++ "providers/implementations/rands/drbg.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o" => [ ++ "providers/implementations/rands/drbg_ctr.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hash.o" => [ ++ "providers/implementations/rands/drbg_hash.c" ++ ], ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o" => [ ++ "providers/implementations/rands/drbg_hmac.c" ++ ], ++ "providers/implementations/rands/libfips-lib-test_rng.o" => [ ++ "providers/implementations/rands/test_rng.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o" => [ ++ "providers/implementations/rands/seeding/rand_cpu_x86.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o" => [ ++ "providers/implementations/rands/seeding/rand_tsc.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o" => [ ++ "providers/implementations/rands/seeding/rand_unix.c" ++ ], ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o" => [ ++ "providers/implementations/rands/seeding/rand_win.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o" => [ ++ "providers/implementations/signature/sm2_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-dsa_sig.o" => [ ++ "providers/implementations/signature/dsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o" => [ ++ "providers/implementations/signature/ecdsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o" => [ ++ "providers/implementations/signature/eddsa_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o" => [ ++ "providers/implementations/signature/mac_legacy_sig.c" ++ ], ++ "providers/implementations/signature/libfips-lib-rsa_sig.o" => [ ++ "providers/implementations/signature/rsa_sig.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o" => [ ++ "providers/implementations/storemgmt/file_store.c" ++ ], ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o" => [ ++ "providers/implementations/storemgmt/file_store_any2obj.c" ++ ], ++ "providers/legacy" => [ ++ "providers/legacy-dso-legacyprov.o", ++ "providers/legacy.ld" ++ ], ++ "providers/legacy-dso-legacyprov.o" => [ ++ "providers/legacyprov.c" ++ ], ++ "providers/libcommon.a" => [ ++ "providers/common/der/libcommon-lib-der_digests_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_gen.o", ++ "providers/common/der/libcommon-lib-der_dsa_key.o", ++ "providers/common/der/libcommon-lib-der_dsa_sig.o", ++ "providers/common/der/libcommon-lib-der_ec_gen.o", ++ "providers/common/der/libcommon-lib-der_ec_key.o", ++ "providers/common/der/libcommon-lib-der_ec_sig.o", ++ "providers/common/der/libcommon-lib-der_ecx_gen.o", ++ "providers/common/der/libcommon-lib-der_ecx_key.o", ++ "providers/common/der/libcommon-lib-der_rsa_gen.o", ++ "providers/common/der/libcommon-lib-der_rsa_key.o", ++ "providers/common/der/libcommon-lib-der_wrap_gen.o", ++ "providers/common/libcommon-lib-provider_ctx.o", ++ "providers/common/libcommon-lib-provider_err.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_block.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_ccm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_gcm_hw.o", ++ "providers/implementations/ciphers/libcommon-lib-ciphercommon_hw.o", ++ "providers/implementations/digests/libcommon-lib-digestcommon.o", ++ "ssl/record/libcommon-lib-tls_pad.o" ++ ], ++ "providers/libcrypto-lib-baseprov.o" => [ ++ "providers/baseprov.c" ++ ], ++ "providers/libcrypto-lib-defltprov.o" => [ ++ "providers/defltprov.c" ++ ], ++ "providers/libcrypto-lib-nullprov.o" => [ ++ "providers/nullprov.c" ++ ], ++ "providers/libcrypto-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/libdefault.a" => [ ++ "providers/common/der/libdefault-lib-der_rsa_sig.o", ++ "providers/common/der/libdefault-lib-der_sm2_gen.o", ++ "providers/common/der/libdefault-lib-der_sm2_key.o", ++ "providers/common/der/libdefault-lib-der_sm2_sig.o", ++ "providers/common/libdefault-lib-bio_prov.o", ++ "providers/common/libdefault-lib-capabilities.o", ++ "providers/common/libdefault-lib-digest_to_nid.o", ++ "providers/common/libdefault-lib-provider_seeding.o", ++ "providers/common/libdefault-lib-provider_util.o", ++ "providers/common/libdefault-lib-securitycheck.o", ++ "providers/common/libdefault-lib-securitycheck_default.o", ++ "providers/implementations/asymciphers/libdefault-lib-rsa_enc.o", ++ "providers/implementations/asymciphers/libdefault-lib-sm2_enc.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_siv_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_ccm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_gcm_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_aria_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_camellia_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_chacha20_poly1305_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_null.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_sm4_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_default_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_hw.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap.o", ++ "providers/implementations/ciphers/libdefault-lib-cipher_tdes_wrap_hw.o", ++ "providers/implementations/digests/libdefault-lib-blake2_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2b_prov.o", ++ "providers/implementations/digests/libdefault-lib-blake2s_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_prov.o", ++ "providers/implementations/digests/libdefault-lib-md5_sha1_prov.o", ++ "providers/implementations/digests/libdefault-lib-null_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha2_prov.o", ++ "providers/implementations/digests/libdefault-lib-sha3_prov.o", ++ "providers/implementations/digests/libdefault-lib-sm3_prov.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_der2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_epki2pki.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_msblob2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pem2der.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_pvk2key.o", ++ "providers/implementations/encode_decode/libdefault-lib-decode_spki2typespki.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2any.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2blob.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2ms.o", ++ "providers/implementations/encode_decode/libdefault-lib-encode_key2text.o", ++ "providers/implementations/encode_decode/libdefault-lib-endecoder_common.o", ++ "providers/implementations/exchange/libdefault-lib-dh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libdefault-lib-ecx_exch.o", ++ "providers/implementations/exchange/libdefault-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libdefault-lib-hkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-kbkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-krb5kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libdefault-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libdefault-lib-pkcs12kdf.o", ++ "providers/implementations/kdfs/libdefault-lib-scrypt.o", ++ "providers/implementations/kdfs/libdefault-lib-sshkdf.o", ++ "providers/implementations/kdfs/libdefault-lib-sskdf.o", ++ "providers/implementations/kdfs/libdefault-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libdefault-lib-x942kdf.o", ++ "providers/implementations/kem/libdefault-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libdefault-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libdefault-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libdefault-lib-blake2b_mac.o", ++ "providers/implementations/macs/libdefault-lib-blake2s_mac.o", ++ "providers/implementations/macs/libdefault-lib-cmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-gmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-hmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-kmac_prov.o", ++ "providers/implementations/macs/libdefault-lib-poly1305_prov.o", ++ "providers/implementations/macs/libdefault-lib-siphash_prov.o", ++ "providers/implementations/rands/libdefault-lib-crngt.o", ++ "providers/implementations/rands/libdefault-lib-drbg.o", ++ "providers/implementations/rands/libdefault-lib-drbg_ctr.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hash.o", ++ "providers/implementations/rands/libdefault-lib-drbg_hmac.o", ++ "providers/implementations/rands/libdefault-lib-seed_src.o", ++ "providers/implementations/rands/libdefault-lib-test_rng.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_cpu_x86.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_tsc.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_unix.o", ++ "providers/implementations/rands/seeding/libdefault-lib-rand_win.o", ++ "providers/implementations/signature/libdefault-lib-dsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-eddsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libdefault-lib-rsa_sig.o", ++ "providers/implementations/signature/libdefault-lib-sm2_sig.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store.o", ++ "providers/implementations/storemgmt/libdefault-lib-file_store_any2obj.o", ++ "ssl/libdefault-lib-s3_cbc.o" ++ ], ++ "providers/libfips.a" => [ ++ "crypto/aes/libfips-lib-aes_cbc.o", ++ "crypto/aes/libfips-lib-aes_core.o", ++ "crypto/aes/libfips-lib-aes_ecb.o", ++ "crypto/aes/libfips-lib-aes_misc.o", ++ "crypto/bn/libfips-lib-bn_add.o", ++ "crypto/bn/libfips-lib-bn_asm.o", ++ "crypto/bn/libfips-lib-bn_blind.o", ++ "crypto/bn/libfips-lib-bn_const.o", ++ "crypto/bn/libfips-lib-bn_conv.o", ++ "crypto/bn/libfips-lib-bn_ctx.o", ++ "crypto/bn/libfips-lib-bn_dh.o", ++ "crypto/bn/libfips-lib-bn_div.o", ++ "crypto/bn/libfips-lib-bn_exp.o", ++ "crypto/bn/libfips-lib-bn_exp2.o", ++ "crypto/bn/libfips-lib-bn_gcd.o", ++ "crypto/bn/libfips-lib-bn_gf2m.o", ++ "crypto/bn/libfips-lib-bn_intern.o", ++ "crypto/bn/libfips-lib-bn_kron.o", ++ "crypto/bn/libfips-lib-bn_lib.o", ++ "crypto/bn/libfips-lib-bn_mod.o", ++ "crypto/bn/libfips-lib-bn_mont.o", ++ "crypto/bn/libfips-lib-bn_mpi.o", ++ "crypto/bn/libfips-lib-bn_mul.o", ++ "crypto/bn/libfips-lib-bn_nist.o", ++ "crypto/bn/libfips-lib-bn_prime.o", ++ "crypto/bn/libfips-lib-bn_rand.o", ++ "crypto/bn/libfips-lib-bn_recp.o", ++ "crypto/bn/libfips-lib-bn_rsa_fips186_4.o", ++ "crypto/bn/libfips-lib-bn_shift.o", ++ "crypto/bn/libfips-lib-bn_sqr.o", ++ "crypto/bn/libfips-lib-bn_sqrt.o", ++ "crypto/bn/libfips-lib-bn_word.o", ++ "crypto/buffer/libfips-lib-buffer.o", ++ "crypto/cmac/libfips-lib-cmac.o", ++ "crypto/des/libfips-lib-des_enc.o", ++ "crypto/des/libfips-lib-ecb3_enc.o", ++ "crypto/des/libfips-lib-fcrypt_b.o", ++ "crypto/des/libfips-lib-set_key.o", ++ "crypto/dh/libfips-lib-dh_backend.o", ++ "crypto/dh/libfips-lib-dh_check.o", ++ "crypto/dh/libfips-lib-dh_gen.o", ++ "crypto/dh/libfips-lib-dh_group_params.o", ++ "crypto/dh/libfips-lib-dh_kdf.o", ++ "crypto/dh/libfips-lib-dh_key.o", ++ "crypto/dh/libfips-lib-dh_lib.o", ++ "crypto/dsa/libfips-lib-dsa_backend.o", ++ "crypto/dsa/libfips-lib-dsa_check.o", ++ "crypto/dsa/libfips-lib-dsa_gen.o", ++ "crypto/dsa/libfips-lib-dsa_key.o", ++ "crypto/dsa/libfips-lib-dsa_lib.o", ++ "crypto/dsa/libfips-lib-dsa_ossl.o", ++ "crypto/dsa/libfips-lib-dsa_sign.o", ++ "crypto/dsa/libfips-lib-dsa_vrf.o", ++ "crypto/ec/curve448/arch_32/libfips-lib-f_impl32.o", ++ "crypto/ec/curve448/arch_64/libfips-lib-f_impl64.o", ++ "crypto/ec/curve448/libfips-lib-curve448.o", ++ "crypto/ec/curve448/libfips-lib-curve448_tables.o", ++ "crypto/ec/curve448/libfips-lib-eddsa.o", ++ "crypto/ec/curve448/libfips-lib-f_generic.o", ++ "crypto/ec/curve448/libfips-lib-scalar.o", ++ "crypto/ec/libfips-lib-curve25519.o", ++ "crypto/ec/libfips-lib-ec2_oct.o", ++ "crypto/ec/libfips-lib-ec2_smpl.o", ++ "crypto/ec/libfips-lib-ec_asn1.o", ++ "crypto/ec/libfips-lib-ec_backend.o", ++ "crypto/ec/libfips-lib-ec_check.o", ++ "crypto/ec/libfips-lib-ec_curve.o", ++ "crypto/ec/libfips-lib-ec_cvt.o", ++ "crypto/ec/libfips-lib-ec_key.o", ++ "crypto/ec/libfips-lib-ec_kmeth.o", ++ "crypto/ec/libfips-lib-ec_lib.o", ++ "crypto/ec/libfips-lib-ec_mult.o", ++ "crypto/ec/libfips-lib-ec_oct.o", ++ "crypto/ec/libfips-lib-ecdh_kdf.o", ++ "crypto/ec/libfips-lib-ecdh_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_ossl.o", ++ "crypto/ec/libfips-lib-ecdsa_sign.o", ++ "crypto/ec/libfips-lib-ecdsa_vrf.o", ++ "crypto/ec/libfips-lib-ecp_mont.o", ++ "crypto/ec/libfips-lib-ecp_nist.o", ++ "crypto/ec/libfips-lib-ecp_oct.o", ++ "crypto/ec/libfips-lib-ecp_smpl.o", ++ "crypto/ec/libfips-lib-ecx_backend.o", ++ "crypto/ec/libfips-lib-ecx_key.o", ++ "crypto/evp/libfips-lib-asymcipher.o", ++ "crypto/evp/libfips-lib-dh_support.o", ++ "crypto/evp/libfips-lib-digest.o", ++ "crypto/evp/libfips-lib-ec_support.o", ++ "crypto/evp/libfips-lib-evp_enc.o", ++ "crypto/evp/libfips-lib-evp_fetch.o", ++ "crypto/evp/libfips-lib-evp_lib.o", ++ "crypto/evp/libfips-lib-evp_rand.o", ++ "crypto/evp/libfips-lib-evp_utils.o", ++ "crypto/evp/libfips-lib-exchange.o", ++ "crypto/evp/libfips-lib-kdf_lib.o", ++ "crypto/evp/libfips-lib-kdf_meth.o", ++ "crypto/evp/libfips-lib-kem.o", ++ "crypto/evp/libfips-lib-keymgmt_lib.o", ++ "crypto/evp/libfips-lib-keymgmt_meth.o", ++ "crypto/evp/libfips-lib-m_sigver.o", ++ "crypto/evp/libfips-lib-mac_lib.o", ++ "crypto/evp/libfips-lib-mac_meth.o", ++ "crypto/evp/libfips-lib-p_lib.o", ++ "crypto/evp/libfips-lib-pmeth_check.o", ++ "crypto/evp/libfips-lib-pmeth_gn.o", ++ "crypto/evp/libfips-lib-pmeth_lib.o", ++ "crypto/evp/libfips-lib-signature.o", ++ "crypto/ffc/libfips-lib-ffc_backend.o", ++ "crypto/ffc/libfips-lib-ffc_dh.o", ++ "crypto/ffc/libfips-lib-ffc_key_generate.o", ++ "crypto/ffc/libfips-lib-ffc_key_validate.o", ++ "crypto/ffc/libfips-lib-ffc_params.o", ++ "crypto/ffc/libfips-lib-ffc_params_generate.o", ++ "crypto/ffc/libfips-lib-ffc_params_validate.o", ++ "crypto/hmac/libfips-lib-hmac.o", ++ "crypto/lhash/libfips-lib-lhash.o", ++ "crypto/libfips-lib-asn1_dsa.o", ++ "crypto/libfips-lib-bsearch.o", ++ "crypto/libfips-lib-context.o", ++ "crypto/libfips-lib-core_algorithm.o", ++ "crypto/libfips-lib-core_fetch.o", ++ "crypto/libfips-lib-core_namemap.o", ++ "crypto/libfips-lib-cpuid.o", ++ "crypto/libfips-lib-cryptlib.o", ++ "crypto/libfips-lib-ctype.o", ++ "crypto/libfips-lib-der_writer.o", ++ "crypto/libfips-lib-ex_data.o", ++ "crypto/libfips-lib-initthread.o", ++ "crypto/libfips-lib-mem_clr.o", ++ "crypto/libfips-lib-o_str.o", ++ "crypto/libfips-lib-packet.o", ++ "crypto/libfips-lib-param_build.o", ++ "crypto/libfips-lib-param_build_set.o", ++ "crypto/libfips-lib-params.o", ++ "crypto/libfips-lib-params_dup.o", ++ "crypto/libfips-lib-params_from_text.o", ++ "crypto/libfips-lib-provider_core.o", ++ "crypto/libfips-lib-provider_predefined.o", ++ "crypto/libfips-lib-self_test_core.o", ++ "crypto/libfips-lib-sparse_array.o", ++ "crypto/libfips-lib-threads_lib.o", ++ "crypto/libfips-lib-threads_none.o", ++ "crypto/libfips-lib-threads_pthread.o", ++ "crypto/libfips-lib-threads_win.o", ++ "crypto/modes/libfips-lib-cbc128.o", ++ "crypto/modes/libfips-lib-ccm128.o", ++ "crypto/modes/libfips-lib-cfb128.o", ++ "crypto/modes/libfips-lib-ctr128.o", ++ "crypto/modes/libfips-lib-gcm128.o", ++ "crypto/modes/libfips-lib-ofb128.o", ++ "crypto/modes/libfips-lib-wrap128.o", ++ "crypto/modes/libfips-lib-xts128.o", ++ "crypto/property/libfips-lib-defn_cache.o", ++ "crypto/property/libfips-lib-property.o", ++ "crypto/property/libfips-lib-property_parse.o", ++ "crypto/property/libfips-lib-property_query.o", ++ "crypto/property/libfips-lib-property_string.o", ++ "crypto/rand/libfips-lib-rand_lib.o", ++ "crypto/rsa/libfips-lib-rsa_acvp_test_params.o", ++ "crypto/rsa/libfips-lib-rsa_backend.o", ++ "crypto/rsa/libfips-lib-rsa_chk.o", ++ "crypto/rsa/libfips-lib-rsa_crpt.o", ++ "crypto/rsa/libfips-lib-rsa_gen.o", ++ "crypto/rsa/libfips-lib-rsa_lib.o", ++ "crypto/rsa/libfips-lib-rsa_mp_names.o", ++ "crypto/rsa/libfips-lib-rsa_none.o", ++ "crypto/rsa/libfips-lib-rsa_oaep.o", ++ "crypto/rsa/libfips-lib-rsa_ossl.o", ++ "crypto/rsa/libfips-lib-rsa_pk1.o", ++ "crypto/rsa/libfips-lib-rsa_pss.o", ++ "crypto/rsa/libfips-lib-rsa_schemes.o", ++ "crypto/rsa/libfips-lib-rsa_sign.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_check.o", ++ "crypto/rsa/libfips-lib-rsa_sp800_56b_gen.o", ++ "crypto/rsa/libfips-lib-rsa_x931.o", ++ "crypto/sha/libfips-lib-keccak1600.o", ++ "crypto/sha/libfips-lib-sha1dgst.o", ++ "crypto/sha/libfips-lib-sha256.o", ++ "crypto/sha/libfips-lib-sha3.o", ++ "crypto/sha/libfips-lib-sha512.o", ++ "crypto/stack/libfips-lib-stack.o", ++ "providers/common/der/libfips-lib-der_rsa_sig.o", ++ "providers/common/libfips-lib-bio_prov.o", ++ "providers/common/libfips-lib-capabilities.o", ++ "providers/common/libfips-lib-digest_to_nid.o", ++ "providers/common/libfips-lib-provider_seeding.o", ++ "providers/common/libfips-lib-provider_util.o", ++ "providers/common/libfips-lib-securitycheck.o", ++ "providers/common/libfips-lib-securitycheck_fips.o", ++ "providers/fips/libfips-lib-fipsprov.o", ++ "providers/fips/libfips-lib-self_test.o", ++ "providers/fips/libfips-lib-self_test_kats.o", ++ "providers/implementations/asymciphers/libfips-lib-rsa_enc.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha1_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_cbc_hmac_sha256_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ccm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_gcm_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_ocb_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_wrp.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_fips.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_aes_xts_hw.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_cts.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_common.o", ++ "providers/implementations/ciphers/libfips-lib-cipher_tdes_hw.o", ++ "providers/implementations/digests/libfips-lib-sha2_prov.o", ++ "providers/implementations/digests/libfips-lib-sha3_prov.o", ++ "providers/implementations/exchange/libfips-lib-dh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecdh_exch.o", ++ "providers/implementations/exchange/libfips-lib-ecx_exch.o", ++ "providers/implementations/exchange/libfips-lib-kdf_exch.o", ++ "providers/implementations/kdfs/libfips-lib-hkdf.o", ++ "providers/implementations/kdfs/libfips-lib-kbkdf.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2.o", ++ "providers/implementations/kdfs/libfips-lib-pbkdf2_fips.o", ++ "providers/implementations/kdfs/libfips-lib-sshkdf.o", ++ "providers/implementations/kdfs/libfips-lib-sskdf.o", ++ "providers/implementations/kdfs/libfips-lib-tls1_prf.o", ++ "providers/implementations/kdfs/libfips-lib-x942kdf.o", ++ "providers/implementations/kem/libfips-lib-rsa_kem.o", ++ "providers/implementations/keymgmt/libfips-lib-dh_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-dsa_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ec_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-ecx_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-kdf_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-mac_legacy_kmgmt.o", ++ "providers/implementations/keymgmt/libfips-lib-rsa_kmgmt.o", ++ "providers/implementations/macs/libfips-lib-cmac_prov.o", ++ "providers/implementations/macs/libfips-lib-gmac_prov.o", ++ "providers/implementations/macs/libfips-lib-hmac_prov.o", ++ "providers/implementations/macs/libfips-lib-kmac_prov.o", ++ "providers/implementations/rands/libfips-lib-crngt.o", ++ "providers/implementations/rands/libfips-lib-drbg.o", ++ "providers/implementations/rands/libfips-lib-drbg_ctr.o", ++ "providers/implementations/rands/libfips-lib-drbg_hash.o", ++ "providers/implementations/rands/libfips-lib-drbg_hmac.o", ++ "providers/implementations/rands/libfips-lib-test_rng.o", ++ "providers/implementations/signature/libfips-lib-dsa_sig.o", ++ "providers/implementations/signature/libfips-lib-ecdsa_sig.o", ++ "providers/implementations/signature/libfips-lib-eddsa_sig.o", ++ "providers/implementations/signature/libfips-lib-mac_legacy_sig.o", ++ "providers/implementations/signature/libfips-lib-rsa_sig.o", ++ "providers/libcommon.a", ++ "ssl/libfips-lib-s3_cbc.o" ++ ], ++ "providers/liblegacy-lib-prov_running.o" => [ ++ "providers/prov_running.c" ++ ], ++ "providers/liblegacy.a" => [ ++ "crypto/bn/liblegacy-lib-bn_asm.o", ++ "crypto/des/liblegacy-lib-des_enc.o", ++ "crypto/des/liblegacy-lib-fcrypt_b.o", ++ "crypto/md5/liblegacy-lib-md5_dgst.o", ++ "crypto/md5/liblegacy-lib-md5_one.o", ++ "crypto/md5/liblegacy-lib-md5_sha1.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_blowfish_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_cast5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_des_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_desx_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_idea_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc2_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hmac_md5_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_rc4_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_seed_hw.o", ++ "providers/implementations/ciphers/liblegacy-lib-cipher_tdes_common.o", ++ "providers/implementations/digests/liblegacy-lib-md4_prov.o", ++ "providers/implementations/digests/liblegacy-lib-mdc2_prov.o", ++ "providers/implementations/digests/liblegacy-lib-ripemd_prov.o", ++ "providers/implementations/digests/liblegacy-lib-wp_prov.o", ++ "providers/implementations/kdfs/liblegacy-lib-pbkdf1.o", ++ "providers/liblegacy-lib-prov_running.o" ++ ], ++ "ssl/libdefault-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libfips-lib-s3_cbc.o" => [ ++ "ssl/s3_cbc.c" ++ ], ++ "ssl/libssl-lib-bio_ssl.o" => [ ++ "ssl/bio_ssl.c" ++ ], ++ "ssl/libssl-lib-d1_lib.o" => [ ++ "ssl/d1_lib.c" ++ ], ++ "ssl/libssl-lib-d1_msg.o" => [ ++ "ssl/d1_msg.c" ++ ], ++ "ssl/libssl-lib-d1_srtp.o" => [ ++ "ssl/d1_srtp.c" ++ ], ++ "ssl/libssl-lib-methods.o" => [ ++ "ssl/methods.c" ++ ], ++ "ssl/libssl-lib-pqueue.o" => [ ++ "ssl/pqueue.c" ++ ], ++ "ssl/libssl-lib-s3_enc.o" => [ ++ "ssl/s3_enc.c" ++ ], ++ "ssl/libssl-lib-s3_lib.o" => [ ++ "ssl/s3_lib.c" ++ ], ++ "ssl/libssl-lib-s3_msg.o" => [ ++ "ssl/s3_msg.c" ++ ], ++ "ssl/libssl-lib-ssl_asn1.o" => [ ++ "ssl/ssl_asn1.c" ++ ], ++ "ssl/libssl-lib-ssl_cert.o" => [ ++ "ssl/ssl_cert.c" ++ ], ++ "ssl/libssl-lib-ssl_ciph.o" => [ ++ "ssl/ssl_ciph.c" ++ ], ++ "ssl/libssl-lib-ssl_conf.o" => [ ++ "ssl/ssl_conf.c" ++ ], ++ "ssl/libssl-lib-ssl_err.o" => [ ++ "ssl/ssl_err.c" ++ ], ++ "ssl/libssl-lib-ssl_err_legacy.o" => [ ++ "ssl/ssl_err_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_init.o" => [ ++ "ssl/ssl_init.c" ++ ], ++ "ssl/libssl-lib-ssl_lib.o" => [ ++ "ssl/ssl_lib.c" ++ ], ++ "ssl/libssl-lib-ssl_mcnf.o" => [ ++ "ssl/ssl_mcnf.c" ++ ], ++ "ssl/libssl-lib-ssl_quic.o" => [ ++ "ssl/ssl_quic.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa.o" => [ ++ "ssl/ssl_rsa.c" ++ ], ++ "ssl/libssl-lib-ssl_rsa_legacy.o" => [ ++ "ssl/ssl_rsa_legacy.c" ++ ], ++ "ssl/libssl-lib-ssl_sess.o" => [ ++ "ssl/ssl_sess.c" ++ ], ++ "ssl/libssl-lib-ssl_stat.o" => [ ++ "ssl/ssl_stat.c" ++ ], ++ "ssl/libssl-lib-ssl_txt.o" => [ ++ "ssl/ssl_txt.c" ++ ], ++ "ssl/libssl-lib-ssl_utst.o" => [ ++ "ssl/ssl_utst.c" ++ ], ++ "ssl/libssl-lib-t1_enc.o" => [ ++ "ssl/t1_enc.c" ++ ], ++ "ssl/libssl-lib-t1_lib.o" => [ ++ "ssl/t1_lib.c" ++ ], ++ "ssl/libssl-lib-t1_trce.o" => [ ++ "ssl/t1_trce.c" ++ ], ++ "ssl/libssl-lib-tls13_enc.o" => [ ++ "ssl/tls13_enc.c" ++ ], ++ "ssl/libssl-lib-tls_depr.o" => [ ++ "ssl/tls_depr.c" ++ ], ++ "ssl/libssl-lib-tls_srp.o" => [ ++ "ssl/tls_srp.c" ++ ], ++ "ssl/record/libcommon-lib-tls_pad.o" => [ ++ "ssl/record/tls_pad.c" ++ ], ++ "ssl/record/libssl-lib-dtls1_bitmap.o" => [ ++ "ssl/record/dtls1_bitmap.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_d1.o" => [ ++ "ssl/record/rec_layer_d1.c" ++ ], ++ "ssl/record/libssl-lib-rec_layer_s3.o" => [ ++ "ssl/record/rec_layer_s3.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_buffer.o" => [ ++ "ssl/record/ssl3_buffer.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record.o" => [ ++ "ssl/record/ssl3_record.c" ++ ], ++ "ssl/record/libssl-lib-ssl3_record_tls13.o" => [ ++ "ssl/record/ssl3_record_tls13.c" ++ ], ++ "ssl/statem/libssl-lib-extensions.o" => [ ++ "ssl/statem/extensions.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_clnt.o" => [ ++ "ssl/statem/extensions_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_cust.o" => [ ++ "ssl/statem/extensions_cust.c" ++ ], ++ "ssl/statem/libssl-lib-extensions_srvr.o" => [ ++ "ssl/statem/extensions_srvr.c" ++ ], ++ "ssl/statem/libssl-lib-statem.o" => [ ++ "ssl/statem/statem.c" ++ ], ++ "ssl/statem/libssl-lib-statem_clnt.o" => [ ++ "ssl/statem/statem_clnt.c" ++ ], ++ "ssl/statem/libssl-lib-statem_dtls.o" => [ ++ "ssl/statem/statem_dtls.c" ++ ], ++ "ssl/statem/libssl-lib-statem_lib.o" => [ ++ "ssl/statem/statem_lib.c" ++ ], ++ "ssl/statem/libssl-lib-statem_quic.o" => [ ++ "ssl/statem/statem_quic.c" ++ ], ++ "ssl/statem/libssl-lib-statem_srvr.o" => [ ++ "ssl/statem/statem_srvr.c" ++ ], ++ "test/aborttest" => [ ++ "test/aborttest-bin-aborttest.o" ++ ], ++ "test/aborttest-bin-aborttest.o" => [ ++ "test/aborttest.c" ++ ], ++ "test/acvp_test" => [ ++ "test/acvp_test-bin-acvp_test.o" ++ ], ++ "test/acvp_test-bin-acvp_test.o" => [ ++ "test/acvp_test.c" ++ ], ++ "test/aesgcmtest" => [ ++ "test/aesgcmtest-bin-aesgcmtest.o" ++ ], ++ "test/aesgcmtest-bin-aesgcmtest.o" => [ ++ "test/aesgcmtest.c" ++ ], ++ "test/afalgtest" => [ ++ "test/afalgtest-bin-afalgtest.o" ++ ], ++ "test/afalgtest-bin-afalgtest.o" => [ ++ "test/afalgtest.c" ++ ], ++ "test/algorithmid_test" => [ ++ "test/algorithmid_test-bin-algorithmid_test.o" ++ ], ++ "test/algorithmid_test-bin-algorithmid_test.o" => [ ++ "test/algorithmid_test.c" ++ ], ++ "test/asn1_decode_test" => [ ++ "test/asn1_decode_test-bin-asn1_decode_test.o" ++ ], ++ "test/asn1_decode_test-bin-asn1_decode_test.o" => [ ++ "test/asn1_decode_test.c" ++ ], ++ "test/asn1_dsa_internal_test" => [ ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" ++ ], ++ "test/asn1_dsa_internal_test-bin-asn1_dsa_internal_test.o" => [ ++ "test/asn1_dsa_internal_test.c" ++ ], ++ "test/asn1_encode_test" => [ ++ "test/asn1_encode_test-bin-asn1_encode_test.o" ++ ], ++ "test/asn1_encode_test-bin-asn1_encode_test.o" => [ ++ "test/asn1_encode_test.c" ++ ], ++ "test/asn1_internal_test" => [ ++ "test/asn1_internal_test-bin-asn1_internal_test.o" ++ ], ++ "test/asn1_internal_test-bin-asn1_internal_test.o" => [ ++ "test/asn1_internal_test.c" ++ ], ++ "test/asn1_string_table_test" => [ ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" ++ ], ++ "test/asn1_string_table_test-bin-asn1_string_table_test.o" => [ ++ "test/asn1_string_table_test.c" ++ ], ++ "test/asn1_time_test" => [ ++ "test/asn1_time_test-bin-asn1_time_test.o" ++ ], ++ "test/asn1_time_test-bin-asn1_time_test.o" => [ ++ "test/asn1_time_test.c" ++ ], ++ "test/asynciotest" => [ ++ "test/asynciotest-bin-asynciotest.o", ++ "test/helpers/asynciotest-bin-ssltestlib.o" ++ ], ++ "test/asynciotest-bin-asynciotest.o" => [ ++ "test/asynciotest.c" ++ ], ++ "test/asynctest" => [ ++ "test/asynctest-bin-asynctest.o" ++ ], ++ "test/asynctest-bin-asynctest.o" => [ ++ "test/asynctest.c" ++ ], ++ "test/bad_dtls_test" => [ ++ "test/bad_dtls_test-bin-bad_dtls_test.o" ++ ], ++ "test/bad_dtls_test-bin-bad_dtls_test.o" => [ ++ "test/bad_dtls_test.c" ++ ], ++ "test/bftest" => [ ++ "test/bftest-bin-bftest.o" ++ ], ++ "test/bftest-bin-bftest.o" => [ ++ "test/bftest.c" ++ ], ++ "test/bio_callback_test" => [ ++ "test/bio_callback_test-bin-bio_callback_test.o" ++ ], ++ "test/bio_callback_test-bin-bio_callback_test.o" => [ ++ "test/bio_callback_test.c" ++ ], ++ "test/bio_core_test" => [ ++ "test/bio_core_test-bin-bio_core_test.o" ++ ], ++ "test/bio_core_test-bin-bio_core_test.o" => [ ++ "test/bio_core_test.c" ++ ], ++ "test/bio_enc_test" => [ ++ "test/bio_enc_test-bin-bio_enc_test.o" ++ ], ++ "test/bio_enc_test-bin-bio_enc_test.o" => [ ++ "test/bio_enc_test.c" ++ ], ++ "test/bio_memleak_test" => [ ++ "test/bio_memleak_test-bin-bio_memleak_test.o" ++ ], ++ "test/bio_memleak_test-bin-bio_memleak_test.o" => [ ++ "test/bio_memleak_test.c" ++ ], ++ "test/bio_prefix_text" => [ ++ "test/bio_prefix_text-bin-bio_prefix_text.o" ++ ], ++ "test/bio_prefix_text-bin-bio_prefix_text.o" => [ ++ "test/bio_prefix_text.c" ++ ], ++ "test/bio_readbuffer_test" => [ ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" ++ ], ++ "test/bio_readbuffer_test-bin-bio_readbuffer_test.o" => [ ++ "test/bio_readbuffer_test.c" ++ ], ++ "test/bioprinttest" => [ ++ "test/bioprinttest-bin-bioprinttest.o" ++ ], ++ "test/bioprinttest-bin-bioprinttest.o" => [ ++ "test/bioprinttest.c" ++ ], ++ "test/bn_internal_test" => [ ++ "test/bn_internal_test-bin-bn_internal_test.o" ++ ], ++ "test/bn_internal_test-bin-bn_internal_test.o" => [ ++ "test/bn_internal_test.c" ++ ], ++ "test/bntest" => [ ++ "test/bntest-bin-bntest.o" ++ ], ++ "test/bntest-bin-bntest.o" => [ ++ "test/bntest.c" ++ ], ++ "test/buildtest_c_aes" => [ ++ "test/buildtest_c_aes-bin-buildtest_aes.o" ++ ], ++ "test/buildtest_c_aes-bin-buildtest_aes.o" => [ ++ "test/buildtest_aes.c" ++ ], ++ "test/buildtest_c_async" => [ ++ "test/buildtest_c_async-bin-buildtest_async.o" ++ ], ++ "test/buildtest_c_async-bin-buildtest_async.o" => [ ++ "test/buildtest_async.c" ++ ], ++ "test/buildtest_c_blowfish" => [ ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" ++ ], ++ "test/buildtest_c_blowfish-bin-buildtest_blowfish.o" => [ ++ "test/buildtest_blowfish.c" ++ ], ++ "test/buildtest_c_bn" => [ ++ "test/buildtest_c_bn-bin-buildtest_bn.o" ++ ], ++ "test/buildtest_c_bn-bin-buildtest_bn.o" => [ ++ "test/buildtest_bn.c" ++ ], ++ "test/buildtest_c_buffer" => [ ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" ++ ], ++ "test/buildtest_c_buffer-bin-buildtest_buffer.o" => [ ++ "test/buildtest_buffer.c" ++ ], ++ "test/buildtest_c_camellia" => [ ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" ++ ], ++ "test/buildtest_c_camellia-bin-buildtest_camellia.o" => [ ++ "test/buildtest_camellia.c" ++ ], ++ "test/buildtest_c_cast" => [ ++ "test/buildtest_c_cast-bin-buildtest_cast.o" ++ ], ++ "test/buildtest_c_cast-bin-buildtest_cast.o" => [ ++ "test/buildtest_cast.c" ++ ], ++ "test/buildtest_c_cmac" => [ ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" ++ ], ++ "test/buildtest_c_cmac-bin-buildtest_cmac.o" => [ ++ "test/buildtest_cmac.c" ++ ], ++ "test/buildtest_c_cmp_util" => [ ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" ++ ], ++ "test/buildtest_c_cmp_util-bin-buildtest_cmp_util.o" => [ ++ "test/buildtest_cmp_util.c" ++ ], ++ "test/buildtest_c_conf_api" => [ ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" ++ ], ++ "test/buildtest_c_conf_api-bin-buildtest_conf_api.o" => [ ++ "test/buildtest_conf_api.c" ++ ], ++ "test/buildtest_c_conftypes" => [ ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" ++ ], ++ "test/buildtest_c_conftypes-bin-buildtest_conftypes.o" => [ ++ "test/buildtest_conftypes.c" ++ ], ++ "test/buildtest_c_core" => [ ++ "test/buildtest_c_core-bin-buildtest_core.o" ++ ], ++ "test/buildtest_c_core-bin-buildtest_core.o" => [ ++ "test/buildtest_core.c" ++ ], ++ "test/buildtest_c_core_dispatch" => [ ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" ++ ], ++ "test/buildtest_c_core_dispatch-bin-buildtest_core_dispatch.o" => [ ++ "test/buildtest_core_dispatch.c" ++ ], ++ "test/buildtest_c_core_names" => [ ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" ++ ], ++ "test/buildtest_c_core_names-bin-buildtest_core_names.o" => [ ++ "test/buildtest_core_names.c" ++ ], ++ "test/buildtest_c_core_object" => [ ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" ++ ], ++ "test/buildtest_c_core_object-bin-buildtest_core_object.o" => [ ++ "test/buildtest_core_object.c" ++ ], ++ "test/buildtest_c_cryptoerr_legacy" => [ ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" ++ ], ++ "test/buildtest_c_cryptoerr_legacy-bin-buildtest_cryptoerr_legacy.o" => [ ++ "test/buildtest_cryptoerr_legacy.c" ++ ], ++ "test/buildtest_c_decoder" => [ ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" ++ ], ++ "test/buildtest_c_decoder-bin-buildtest_decoder.o" => [ ++ "test/buildtest_decoder.c" ++ ], ++ "test/buildtest_c_des" => [ ++ "test/buildtest_c_des-bin-buildtest_des.o" ++ ], ++ "test/buildtest_c_des-bin-buildtest_des.o" => [ ++ "test/buildtest_des.c" ++ ], ++ "test/buildtest_c_dh" => [ ++ "test/buildtest_c_dh-bin-buildtest_dh.o" ++ ], ++ "test/buildtest_c_dh-bin-buildtest_dh.o" => [ ++ "test/buildtest_dh.c" ++ ], ++ "test/buildtest_c_dsa" => [ ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" ++ ], ++ "test/buildtest_c_dsa-bin-buildtest_dsa.o" => [ ++ "test/buildtest_dsa.c" ++ ], ++ "test/buildtest_c_dtls1" => [ ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" ++ ], ++ "test/buildtest_c_dtls1-bin-buildtest_dtls1.o" => [ ++ "test/buildtest_dtls1.c" ++ ], ++ "test/buildtest_c_e_os2" => [ ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" ++ ], ++ "test/buildtest_c_e_os2-bin-buildtest_e_os2.o" => [ ++ "test/buildtest_e_os2.c" ++ ], ++ "test/buildtest_c_ebcdic" => [ ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" ++ ], ++ "test/buildtest_c_ebcdic-bin-buildtest_ebcdic.o" => [ ++ "test/buildtest_ebcdic.c" ++ ], ++ "test/buildtest_c_ec" => [ ++ "test/buildtest_c_ec-bin-buildtest_ec.o" ++ ], ++ "test/buildtest_c_ec-bin-buildtest_ec.o" => [ ++ "test/buildtest_ec.c" ++ ], ++ "test/buildtest_c_ecdh" => [ ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" ++ ], ++ "test/buildtest_c_ecdh-bin-buildtest_ecdh.o" => [ ++ "test/buildtest_ecdh.c" ++ ], ++ "test/buildtest_c_ecdsa" => [ ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" ++ ], ++ "test/buildtest_c_ecdsa-bin-buildtest_ecdsa.o" => [ ++ "test/buildtest_ecdsa.c" ++ ], ++ "test/buildtest_c_encoder" => [ ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" ++ ], ++ "test/buildtest_c_encoder-bin-buildtest_encoder.o" => [ ++ "test/buildtest_encoder.c" ++ ], ++ "test/buildtest_c_engine" => [ ++ "test/buildtest_c_engine-bin-buildtest_engine.o" ++ ], ++ "test/buildtest_c_engine-bin-buildtest_engine.o" => [ ++ "test/buildtest_engine.c" ++ ], ++ "test/buildtest_c_evp" => [ ++ "test/buildtest_c_evp-bin-buildtest_evp.o" ++ ], ++ "test/buildtest_c_evp-bin-buildtest_evp.o" => [ ++ "test/buildtest_evp.c" ++ ], ++ "test/buildtest_c_fips_names" => [ ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" ++ ], ++ "test/buildtest_c_fips_names-bin-buildtest_fips_names.o" => [ ++ "test/buildtest_fips_names.c" ++ ], ++ "test/buildtest_c_hmac" => [ ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" ++ ], ++ "test/buildtest_c_hmac-bin-buildtest_hmac.o" => [ ++ "test/buildtest_hmac.c" ++ ], ++ "test/buildtest_c_http" => [ ++ "test/buildtest_c_http-bin-buildtest_http.o" ++ ], ++ "test/buildtest_c_http-bin-buildtest_http.o" => [ ++ "test/buildtest_http.c" ++ ], ++ "test/buildtest_c_idea" => [ ++ "test/buildtest_c_idea-bin-buildtest_idea.o" ++ ], ++ "test/buildtest_c_idea-bin-buildtest_idea.o" => [ ++ "test/buildtest_idea.c" ++ ], ++ "test/buildtest_c_kdf" => [ ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" ++ ], ++ "test/buildtest_c_kdf-bin-buildtest_kdf.o" => [ ++ "test/buildtest_kdf.c" ++ ], ++ "test/buildtest_c_macros" => [ ++ "test/buildtest_c_macros-bin-buildtest_macros.o" ++ ], ++ "test/buildtest_c_macros-bin-buildtest_macros.o" => [ ++ "test/buildtest_macros.c" ++ ], ++ "test/buildtest_c_md4" => [ ++ "test/buildtest_c_md4-bin-buildtest_md4.o" ++ ], ++ "test/buildtest_c_md4-bin-buildtest_md4.o" => [ ++ "test/buildtest_md4.c" ++ ], ++ "test/buildtest_c_md5" => [ ++ "test/buildtest_c_md5-bin-buildtest_md5.o" ++ ], ++ "test/buildtest_c_md5-bin-buildtest_md5.o" => [ ++ "test/buildtest_md5.c" ++ ], ++ "test/buildtest_c_mdc2" => [ ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" ++ ], ++ "test/buildtest_c_mdc2-bin-buildtest_mdc2.o" => [ ++ "test/buildtest_mdc2.c" ++ ], ++ "test/buildtest_c_modes" => [ ++ "test/buildtest_c_modes-bin-buildtest_modes.o" ++ ], ++ "test/buildtest_c_modes-bin-buildtest_modes.o" => [ ++ "test/buildtest_modes.c" ++ ], ++ "test/buildtest_c_obj_mac" => [ ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" ++ ], ++ "test/buildtest_c_obj_mac-bin-buildtest_obj_mac.o" => [ ++ "test/buildtest_obj_mac.c" ++ ], ++ "test/buildtest_c_objects" => [ ++ "test/buildtest_c_objects-bin-buildtest_objects.o" ++ ], ++ "test/buildtest_c_objects-bin-buildtest_objects.o" => [ ++ "test/buildtest_objects.c" ++ ], ++ "test/buildtest_c_ossl_typ" => [ ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" ++ ], ++ "test/buildtest_c_ossl_typ-bin-buildtest_ossl_typ.o" => [ ++ "test/buildtest_ossl_typ.c" ++ ], ++ "test/buildtest_c_param_build" => [ ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" ++ ], ++ "test/buildtest_c_param_build-bin-buildtest_param_build.o" => [ ++ "test/buildtest_param_build.c" ++ ], ++ "test/buildtest_c_params" => [ ++ "test/buildtest_c_params-bin-buildtest_params.o" ++ ], ++ "test/buildtest_c_params-bin-buildtest_params.o" => [ ++ "test/buildtest_params.c" ++ ], ++ "test/buildtest_c_pem" => [ ++ "test/buildtest_c_pem-bin-buildtest_pem.o" ++ ], ++ "test/buildtest_c_pem-bin-buildtest_pem.o" => [ ++ "test/buildtest_pem.c" ++ ], ++ "test/buildtest_c_pem2" => [ ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" ++ ], ++ "test/buildtest_c_pem2-bin-buildtest_pem2.o" => [ ++ "test/buildtest_pem2.c" ++ ], ++ "test/buildtest_c_prov_ssl" => [ ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" ++ ], ++ "test/buildtest_c_prov_ssl-bin-buildtest_prov_ssl.o" => [ ++ "test/buildtest_prov_ssl.c" ++ ], ++ "test/buildtest_c_provider" => [ ++ "test/buildtest_c_provider-bin-buildtest_provider.o" ++ ], ++ "test/buildtest_c_provider-bin-buildtest_provider.o" => [ ++ "test/buildtest_provider.c" ++ ], ++ "test/buildtest_c_quic" => [ ++ "test/buildtest_c_quic-bin-buildtest_quic.o" ++ ], ++ "test/buildtest_c_quic-bin-buildtest_quic.o" => [ ++ "test/buildtest_quic.c" ++ ], ++ "test/buildtest_c_rand" => [ ++ "test/buildtest_c_rand-bin-buildtest_rand.o" ++ ], ++ "test/buildtest_c_rand-bin-buildtest_rand.o" => [ ++ "test/buildtest_rand.c" ++ ], ++ "test/buildtest_c_rc2" => [ ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" ++ ], ++ "test/buildtest_c_rc2-bin-buildtest_rc2.o" => [ ++ "test/buildtest_rc2.c" ++ ], ++ "test/buildtest_c_rc4" => [ ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" ++ ], ++ "test/buildtest_c_rc4-bin-buildtest_rc4.o" => [ ++ "test/buildtest_rc4.c" ++ ], ++ "test/buildtest_c_ripemd" => [ ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" ++ ], ++ "test/buildtest_c_ripemd-bin-buildtest_ripemd.o" => [ ++ "test/buildtest_ripemd.c" ++ ], ++ "test/buildtest_c_rsa" => [ ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" ++ ], ++ "test/buildtest_c_rsa-bin-buildtest_rsa.o" => [ ++ "test/buildtest_rsa.c" ++ ], ++ "test/buildtest_c_seed" => [ ++ "test/buildtest_c_seed-bin-buildtest_seed.o" ++ ], ++ "test/buildtest_c_seed-bin-buildtest_seed.o" => [ ++ "test/buildtest_seed.c" ++ ], ++ "test/buildtest_c_self_test" => [ ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" ++ ], ++ "test/buildtest_c_self_test-bin-buildtest_self_test.o" => [ ++ "test/buildtest_self_test.c" ++ ], ++ "test/buildtest_c_sha" => [ ++ "test/buildtest_c_sha-bin-buildtest_sha.o" ++ ], ++ "test/buildtest_c_sha-bin-buildtest_sha.o" => [ ++ "test/buildtest_sha.c" ++ ], ++ "test/buildtest_c_srtp" => [ ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" ++ ], ++ "test/buildtest_c_srtp-bin-buildtest_srtp.o" => [ ++ "test/buildtest_srtp.c" ++ ], ++ "test/buildtest_c_ssl2" => [ ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" ++ ], ++ "test/buildtest_c_ssl2-bin-buildtest_ssl2.o" => [ ++ "test/buildtest_ssl2.c" ++ ], ++ "test/buildtest_c_sslerr_legacy" => [ ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" ++ ], ++ "test/buildtest_c_sslerr_legacy-bin-buildtest_sslerr_legacy.o" => [ ++ "test/buildtest_sslerr_legacy.c" ++ ], ++ "test/buildtest_c_stack" => [ ++ "test/buildtest_c_stack-bin-buildtest_stack.o" ++ ], ++ "test/buildtest_c_stack-bin-buildtest_stack.o" => [ ++ "test/buildtest_stack.c" ++ ], ++ "test/buildtest_c_store" => [ ++ "test/buildtest_c_store-bin-buildtest_store.o" ++ ], ++ "test/buildtest_c_store-bin-buildtest_store.o" => [ ++ "test/buildtest_store.c" ++ ], ++ "test/buildtest_c_symhacks" => [ ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" ++ ], ++ "test/buildtest_c_symhacks-bin-buildtest_symhacks.o" => [ ++ "test/buildtest_symhacks.c" ++ ], ++ "test/buildtest_c_tls1" => [ ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" ++ ], ++ "test/buildtest_c_tls1-bin-buildtest_tls1.o" => [ ++ "test/buildtest_tls1.c" ++ ], ++ "test/buildtest_c_ts" => [ ++ "test/buildtest_c_ts-bin-buildtest_ts.o" ++ ], ++ "test/buildtest_c_ts-bin-buildtest_ts.o" => [ ++ "test/buildtest_ts.c" ++ ], ++ "test/buildtest_c_txt_db" => [ ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" ++ ], ++ "test/buildtest_c_txt_db-bin-buildtest_txt_db.o" => [ ++ "test/buildtest_txt_db.c" ++ ], ++ "test/buildtest_c_types" => [ ++ "test/buildtest_c_types-bin-buildtest_types.o" ++ ], ++ "test/buildtest_c_types-bin-buildtest_types.o" => [ ++ "test/buildtest_types.c" ++ ], ++ "test/buildtest_c_whrlpool" => [ ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" ++ ], ++ "test/buildtest_c_whrlpool-bin-buildtest_whrlpool.o" => [ ++ "test/buildtest_whrlpool.c" ++ ], ++ "test/casttest" => [ ++ "test/casttest-bin-casttest.o" ++ ], ++ "test/casttest-bin-casttest.o" => [ ++ "test/casttest.c" ++ ], ++ "test/chacha_internal_test" => [ ++ "test/chacha_internal_test-bin-chacha_internal_test.o" ++ ], ++ "test/chacha_internal_test-bin-chacha_internal_test.o" => [ ++ "test/chacha_internal_test.c" ++ ], ++ "test/cipher_overhead_test" => [ ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" ++ ], ++ "test/cipher_overhead_test-bin-cipher_overhead_test.o" => [ ++ "test/cipher_overhead_test.c" ++ ], ++ "test/cipherbytes_test" => [ ++ "test/cipherbytes_test-bin-cipherbytes_test.o" ++ ], ++ "test/cipherbytes_test-bin-cipherbytes_test.o" => [ ++ "test/cipherbytes_test.c" ++ ], ++ "test/cipherlist_test" => [ ++ "test/cipherlist_test-bin-cipherlist_test.o" ++ ], ++ "test/cipherlist_test-bin-cipherlist_test.o" => [ ++ "test/cipherlist_test.c" ++ ], ++ "test/ciphername_test" => [ ++ "test/ciphername_test-bin-ciphername_test.o" ++ ], ++ "test/ciphername_test-bin-ciphername_test.o" => [ ++ "test/ciphername_test.c" ++ ], ++ "test/clienthellotest" => [ ++ "test/clienthellotest-bin-clienthellotest.o" ++ ], ++ "test/clienthellotest-bin-clienthellotest.o" => [ ++ "test/clienthellotest.c" ++ ], ++ "test/cmactest" => [ ++ "test/cmactest-bin-cmactest.o" ++ ], ++ "test/cmactest-bin-cmactest.o" => [ ++ "test/cmactest.c" ++ ], ++ "test/cmp_asn_test" => [ ++ "test/cmp_asn_test-bin-cmp_asn_test.o", ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_asn_test-bin-cmp_asn_test.o" => [ ++ "test/cmp_asn_test.c" ++ ], ++ "test/cmp_client_test" => [ ++ "apps/lib/cmp_client_test-bin-cmp_mock_srv.o", ++ "test/cmp_client_test-bin-cmp_client_test.o", ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_client_test-bin-cmp_client_test.o" => [ ++ "test/cmp_client_test.c" ++ ], ++ "test/cmp_ctx_test" => [ ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o", ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_ctx_test-bin-cmp_ctx_test.o" => [ ++ "test/cmp_ctx_test.c" ++ ], ++ "test/cmp_hdr_test" => [ ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o", ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_hdr_test-bin-cmp_hdr_test.o" => [ ++ "test/cmp_hdr_test.c" ++ ], ++ "test/cmp_msg_test" => [ ++ "test/cmp_msg_test-bin-cmp_msg_test.o", ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_msg_test-bin-cmp_msg_test.o" => [ ++ "test/cmp_msg_test.c" ++ ], ++ "test/cmp_protect_test" => [ ++ "test/cmp_protect_test-bin-cmp_protect_test.o", ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_protect_test-bin-cmp_protect_test.o" => [ ++ "test/cmp_protect_test.c" ++ ], ++ "test/cmp_server_test" => [ ++ "test/cmp_server_test-bin-cmp_server_test.o", ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_server_test-bin-cmp_server_test.o" => [ ++ "test/cmp_server_test.c" ++ ], ++ "test/cmp_status_test" => [ ++ "test/cmp_status_test-bin-cmp_status_test.o", ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_status_test-bin-cmp_status_test.o" => [ ++ "test/cmp_status_test.c" ++ ], ++ "test/cmp_vfy_test" => [ ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o", ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" ++ ], ++ "test/cmp_vfy_test-bin-cmp_vfy_test.o" => [ ++ "test/cmp_vfy_test.c" ++ ], ++ "test/cmsapitest" => [ ++ "test/cmsapitest-bin-cmsapitest.o" ++ ], ++ "test/cmsapitest-bin-cmsapitest.o" => [ ++ "test/cmsapitest.c" ++ ], ++ "test/conf_include_test" => [ ++ "test/conf_include_test-bin-conf_include_test.o" ++ ], ++ "test/conf_include_test-bin-conf_include_test.o" => [ ++ "test/conf_include_test.c" ++ ], ++ "test/confdump" => [ ++ "test/confdump-bin-confdump.o" ++ ], ++ "test/confdump-bin-confdump.o" => [ ++ "test/confdump.c" ++ ], ++ "test/constant_time_test" => [ ++ "test/constant_time_test-bin-constant_time_test.o" ++ ], ++ "test/constant_time_test-bin-constant_time_test.o" => [ ++ "test/constant_time_test.c" ++ ], ++ "test/context_internal_test" => [ ++ "test/context_internal_test-bin-context_internal_test.o" ++ ], ++ "test/context_internal_test-bin-context_internal_test.o" => [ ++ "test/context_internal_test.c" ++ ], ++ "test/crltest" => [ ++ "test/crltest-bin-crltest.o" ++ ], ++ "test/crltest-bin-crltest.o" => [ ++ "test/crltest.c" ++ ], ++ "test/ct_test" => [ ++ "test/ct_test-bin-ct_test.o" ++ ], ++ "test/ct_test-bin-ct_test.o" => [ ++ "test/ct_test.c" ++ ], ++ "test/ctype_internal_test" => [ ++ "test/ctype_internal_test-bin-ctype_internal_test.o" ++ ], ++ "test/ctype_internal_test-bin-ctype_internal_test.o" => [ ++ "test/ctype_internal_test.c" ++ ], ++ "test/curve448_internal_test" => [ ++ "test/curve448_internal_test-bin-curve448_internal_test.o" ++ ], ++ "test/curve448_internal_test-bin-curve448_internal_test.o" => [ ++ "test/curve448_internal_test.c" ++ ], ++ "test/d2i_test" => [ ++ "test/d2i_test-bin-d2i_test.o" ++ ], ++ "test/d2i_test-bin-d2i_test.o" => [ ++ "test/d2i_test.c" ++ ], ++ "test/danetest" => [ ++ "test/danetest-bin-danetest.o" ++ ], ++ "test/danetest-bin-danetest.o" => [ ++ "test/danetest.c" ++ ], ++ "test/defltfips_test" => [ ++ "test/defltfips_test-bin-defltfips_test.o" ++ ], ++ "test/defltfips_test-bin-defltfips_test.o" => [ ++ "test/defltfips_test.c" ++ ], ++ "test/destest" => [ ++ "test/destest-bin-destest.o" ++ ], ++ "test/destest-bin-destest.o" => [ ++ "test/destest.c" ++ ], ++ "test/dhtest" => [ ++ "test/dhtest-bin-dhtest.o" ++ ], ++ "test/dhtest-bin-dhtest.o" => [ ++ "test/dhtest.c" ++ ], ++ "test/drbgtest" => [ ++ "test/drbgtest-bin-drbgtest.o" ++ ], ++ "test/drbgtest-bin-drbgtest.o" => [ ++ "test/drbgtest.c" ++ ], ++ "test/dsa_no_digest_size_test" => [ ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" ++ ], ++ "test/dsa_no_digest_size_test-bin-dsa_no_digest_size_test.o" => [ ++ "test/dsa_no_digest_size_test.c" ++ ], ++ "test/dsatest" => [ ++ "test/dsatest-bin-dsatest.o" ++ ], ++ "test/dsatest-bin-dsatest.o" => [ ++ "test/dsatest.c" ++ ], ++ "test/dtls_mtu_test" => [ ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o", ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" ++ ], ++ "test/dtls_mtu_test-bin-dtls_mtu_test.o" => [ ++ "test/dtls_mtu_test.c" ++ ], ++ "test/dtlstest" => [ ++ "test/dtlstest-bin-dtlstest.o", ++ "test/helpers/dtlstest-bin-ssltestlib.o" ++ ], ++ "test/dtlstest-bin-dtlstest.o" => [ ++ "test/dtlstest.c" ++ ], ++ "test/dtlsv1listentest" => [ ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" ++ ], ++ "test/dtlsv1listentest-bin-dtlsv1listentest.o" => [ ++ "test/dtlsv1listentest.c" ++ ], ++ "test/ec_internal_test" => [ ++ "test/ec_internal_test-bin-ec_internal_test.o" ++ ], ++ "test/ec_internal_test-bin-ec_internal_test.o" => [ ++ "test/ec_internal_test.c" ++ ], ++ "test/ecdsatest" => [ ++ "test/ecdsatest-bin-ecdsatest.o" ++ ], ++ "test/ecdsatest-bin-ecdsatest.o" => [ ++ "test/ecdsatest.c" ++ ], ++ "test/ecstresstest" => [ ++ "test/ecstresstest-bin-ecstresstest.o" ++ ], ++ "test/ecstresstest-bin-ecstresstest.o" => [ ++ "test/ecstresstest.c" ++ ], ++ "test/ectest" => [ ++ "test/ectest-bin-ectest.o" ++ ], ++ "test/ectest-bin-ectest.o" => [ ++ "test/ectest.c" ++ ], ++ "test/endecode_test" => [ ++ "test/endecode_test-bin-endecode_test.o", ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" ++ ], ++ "test/endecode_test-bin-endecode_test.o" => [ ++ "test/endecode_test.c" ++ ], ++ "test/endecoder_legacy_test" => [ ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" ++ ], ++ "test/endecoder_legacy_test-bin-endecoder_legacy_test.o" => [ ++ "test/endecoder_legacy_test.c" ++ ], ++ "test/enginetest" => [ ++ "test/enginetest-bin-enginetest.o" ++ ], ++ "test/enginetest-bin-enginetest.o" => [ ++ "test/enginetest.c" ++ ], ++ "test/errtest" => [ ++ "test/errtest-bin-errtest.o" ++ ], ++ "test/errtest-bin-errtest.o" => [ ++ "test/errtest.c" ++ ], ++ "test/evp_extra_test" => [ ++ "test/evp_extra_test-bin-evp_extra_test.o" ++ ], ++ "test/evp_extra_test-bin-evp_extra_test.o" => [ ++ "test/evp_extra_test.c" ++ ], ++ "test/evp_extra_test2" => [ ++ "test/evp_extra_test2-bin-evp_extra_test2.o" ++ ], ++ "test/evp_extra_test2-bin-evp_extra_test2.o" => [ ++ "test/evp_extra_test2.c" ++ ], ++ "test/evp_fetch_prov_test" => [ ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" ++ ], ++ "test/evp_fetch_prov_test-bin-evp_fetch_prov_test.o" => [ ++ "test/evp_fetch_prov_test.c" ++ ], ++ "test/evp_kdf_test" => [ ++ "test/evp_kdf_test-bin-evp_kdf_test.o" ++ ], ++ "test/evp_kdf_test-bin-evp_kdf_test.o" => [ ++ "test/evp_kdf_test.c" ++ ], ++ "test/evp_libctx_test" => [ ++ "test/evp_libctx_test-bin-evp_libctx_test.o" ++ ], ++ "test/evp_libctx_test-bin-evp_libctx_test.o" => [ ++ "test/evp_libctx_test.c" ++ ], ++ "test/evp_pkey_ctx_new_from_name" => [ ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" ++ ], ++ "test/evp_pkey_ctx_new_from_name-bin-evp_pkey_ctx_new_from_name.o" => [ ++ "test/evp_pkey_ctx_new_from_name.c" ++ ], ++ "test/evp_pkey_dparams_test" => [ ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" ++ ], ++ "test/evp_pkey_dparams_test-bin-evp_pkey_dparams_test.o" => [ ++ "test/evp_pkey_dparams_test.c" ++ ], ++ "test/evp_pkey_provided_test" => [ ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" ++ ], ++ "test/evp_pkey_provided_test-bin-evp_pkey_provided_test.o" => [ ++ "test/evp_pkey_provided_test.c" ++ ], ++ "test/evp_test" => [ ++ "test/evp_test-bin-evp_test.o" ++ ], ++ "test/evp_test-bin-evp_test.o" => [ ++ "test/evp_test.c" ++ ], ++ "test/exdatatest" => [ ++ "test/exdatatest-bin-exdatatest.o" ++ ], ++ "test/exdatatest-bin-exdatatest.o" => [ ++ "test/exdatatest.c" ++ ], ++ "test/exptest" => [ ++ "test/exptest-bin-exptest.o" ++ ], ++ "test/exptest-bin-exptest.o" => [ ++ "test/exptest.c" ++ ], ++ "test/fatalerrtest" => [ ++ "test/fatalerrtest-bin-fatalerrtest.o", ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" ++ ], ++ "test/fatalerrtest-bin-fatalerrtest.o" => [ ++ "test/fatalerrtest.c" ++ ], ++ "test/ffc_internal_test" => [ ++ "test/ffc_internal_test-bin-ffc_internal_test.o" ++ ], ++ "test/ffc_internal_test-bin-ffc_internal_test.o" => [ ++ "test/ffc_internal_test.c" ++ ], ++ "test/gmdifftest" => [ ++ "test/gmdifftest-bin-gmdifftest.o" ++ ], ++ "test/gmdifftest-bin-gmdifftest.o" => [ ++ "test/gmdifftest.c" ++ ], ++ "test/helpers/asynciotest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/cmp_asn_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_client_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_ctx_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_hdr_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_msg_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_protect_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_server_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_status_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/cmp_vfy_test-bin-cmp_testlib.o" => [ ++ "test/helpers/cmp_testlib.c" ++ ], ++ "test/helpers/dtls_mtu_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/dtlstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/endecode_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/fatalerrtest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o" => [ ++ "test/helpers/pkcs12.c" ++ ], ++ "test/helpers/recordlentest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/servername_test-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o" => [ ++ "test/helpers/predefined_dhparams.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake.o" => [ ++ "test/helpers/handshake.c" ++ ], ++ "test/helpers/ssl_test-bin-handshake_srp.o" => [ ++ "test/helpers/handshake_srp.c" ++ ], ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o" => [ ++ "test/helpers/ssl_test_ctx.c" ++ ], ++ "test/helpers/sslapitest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslbuffertest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/helpers/tls13ccstest-bin-ssltestlib.o" => [ ++ "test/helpers/ssltestlib.c" ++ ], ++ "test/hexstr_test" => [ ++ "test/hexstr_test-bin-hexstr_test.o" ++ ], ++ "test/hexstr_test-bin-hexstr_test.o" => [ ++ "test/hexstr_test.c" ++ ], ++ "test/hmactest" => [ ++ "test/hmactest-bin-hmactest.o" ++ ], ++ "test/hmactest-bin-hmactest.o" => [ ++ "test/hmactest.c" ++ ], ++ "test/http_test" => [ ++ "test/http_test-bin-http_test.o" ++ ], ++ "test/http_test-bin-http_test.o" => [ ++ "test/http_test.c" ++ ], ++ "test/ideatest" => [ ++ "test/ideatest-bin-ideatest.o" ++ ], ++ "test/ideatest-bin-ideatest.o" => [ ++ "test/ideatest.c" ++ ], ++ "test/igetest" => [ ++ "test/igetest-bin-igetest.o" ++ ], ++ "test/igetest-bin-igetest.o" => [ ++ "test/igetest.c" ++ ], ++ "test/keymgmt_internal_test" => [ ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" ++ ], ++ "test/keymgmt_internal_test-bin-keymgmt_internal_test.o" => [ ++ "test/keymgmt_internal_test.c" ++ ], ++ "test/lhash_test" => [ ++ "test/lhash_test-bin-lhash_test.o" ++ ], ++ "test/lhash_test-bin-lhash_test.o" => [ ++ "test/lhash_test.c" ++ ], ++ "test/libtestutil.a" => [ ++ "apps/lib/libtestutil-lib-opt.o", ++ "test/testutil/libtestutil-lib-apps_shims.o", ++ "test/testutil/libtestutil-lib-basic_output.o", ++ "test/testutil/libtestutil-lib-cb.o", ++ "test/testutil/libtestutil-lib-driver.o", ++ "test/testutil/libtestutil-lib-fake_random.o", ++ "test/testutil/libtestutil-lib-format_output.o", ++ "test/testutil/libtestutil-lib-load.o", ++ "test/testutil/libtestutil-lib-main.o", ++ "test/testutil/libtestutil-lib-options.o", ++ "test/testutil/libtestutil-lib-output.o", ++ "test/testutil/libtestutil-lib-provider.o", ++ "test/testutil/libtestutil-lib-random.o", ++ "test/testutil/libtestutil-lib-stanza.o", ++ "test/testutil/libtestutil-lib-test_cleanup.o", ++ "test/testutil/libtestutil-lib-test_options.o", ++ "test/testutil/libtestutil-lib-tests.o", ++ "test/testutil/libtestutil-lib-testutil_init.o" ++ ], ++ "test/localetest" => [ ++ "test/localetest-bin-localetest.o" ++ ], ++ "test/localetest-bin-localetest.o" => [ ++ "test/localetest.c" ++ ], ++ "test/mdc2_internal_test" => [ ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" ++ ], ++ "test/mdc2_internal_test-bin-mdc2_internal_test.o" => [ ++ "test/mdc2_internal_test.c" ++ ], ++ "test/mdc2test" => [ ++ "test/mdc2test-bin-mdc2test.o" ++ ], ++ "test/mdc2test-bin-mdc2test.o" => [ ++ "test/mdc2test.c" ++ ], ++ "test/memleaktest" => [ ++ "test/memleaktest-bin-memleaktest.o" ++ ], ++ "test/memleaktest-bin-memleaktest.o" => [ ++ "test/memleaktest.c" ++ ], ++ "test/modes_internal_test" => [ ++ "test/modes_internal_test-bin-modes_internal_test.o" ++ ], ++ "test/modes_internal_test-bin-modes_internal_test.o" => [ ++ "test/modes_internal_test.c" ++ ], ++ "test/namemap_internal_test" => [ ++ "test/namemap_internal_test-bin-namemap_internal_test.o" ++ ], ++ "test/namemap_internal_test-bin-namemap_internal_test.o" => [ ++ "test/namemap_internal_test.c" ++ ], ++ "test/ocspapitest" => [ ++ "test/ocspapitest-bin-ocspapitest.o" ++ ], ++ "test/ocspapitest-bin-ocspapitest.o" => [ ++ "test/ocspapitest.c" ++ ], ++ "test/ossl_store_test" => [ ++ "test/ossl_store_test-bin-ossl_store_test.o" ++ ], ++ "test/ossl_store_test-bin-ossl_store_test.o" => [ ++ "test/ossl_store_test.c" ++ ], ++ "test/p_test" => [ ++ "test/p_test-dso-p_test.o", ++ "test/p_test.ld" ++ ], ++ "test/p_test-dso-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/packettest" => [ ++ "test/packettest-bin-packettest.o" ++ ], ++ "test/packettest-bin-packettest.o" => [ ++ "test/packettest.c" ++ ], ++ "test/param_build_test" => [ ++ "test/param_build_test-bin-param_build_test.o" ++ ], ++ "test/param_build_test-bin-param_build_test.o" => [ ++ "test/param_build_test.c" ++ ], ++ "test/params_api_test" => [ ++ "test/params_api_test-bin-params_api_test.o" ++ ], ++ "test/params_api_test-bin-params_api_test.o" => [ ++ "test/params_api_test.c" ++ ], ++ "test/params_conversion_test" => [ ++ "test/params_conversion_test-bin-params_conversion_test.o" ++ ], ++ "test/params_conversion_test-bin-params_conversion_test.o" => [ ++ "test/params_conversion_test.c" ++ ], ++ "test/params_test" => [ ++ "test/params_test-bin-params_test.o" ++ ], ++ "test/params_test-bin-params_test.o" => [ ++ "test/params_test.c" ++ ], ++ "test/pbelutest" => [ ++ "test/pbelutest-bin-pbelutest.o" ++ ], ++ "test/pbelutest-bin-pbelutest.o" => [ ++ "test/pbelutest.c" ++ ], ++ "test/pbetest" => [ ++ "test/pbetest-bin-pbetest.o" ++ ], ++ "test/pbetest-bin-pbetest.o" => [ ++ "test/pbetest.c" ++ ], ++ "test/pem_read_depr_test" => [ ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" ++ ], ++ "test/pem_read_depr_test-bin-pem_read_depr_test.o" => [ ++ "test/pem_read_depr_test.c" ++ ], ++ "test/pemtest" => [ ++ "test/pemtest-bin-pemtest.o" ++ ], ++ "test/pemtest-bin-pemtest.o" => [ ++ "test/pemtest.c" ++ ], ++ "test/pkcs12_format_test" => [ ++ "test/helpers/pkcs12_format_test-bin-pkcs12.o", ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" ++ ], ++ "test/pkcs12_format_test-bin-pkcs12_format_test.o" => [ ++ "test/pkcs12_format_test.c" ++ ], ++ "test/pkcs7_test" => [ ++ "test/pkcs7_test-bin-pkcs7_test.o" ++ ], ++ "test/pkcs7_test-bin-pkcs7_test.o" => [ ++ "test/pkcs7_test.c" ++ ], ++ "test/pkey_meth_kdf_test" => [ ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" ++ ], ++ "test/pkey_meth_kdf_test-bin-pkey_meth_kdf_test.o" => [ ++ "test/pkey_meth_kdf_test.c" ++ ], ++ "test/pkey_meth_test" => [ ++ "test/pkey_meth_test-bin-pkey_meth_test.o" ++ ], ++ "test/pkey_meth_test-bin-pkey_meth_test.o" => [ ++ "test/pkey_meth_test.c" ++ ], ++ "test/poly1305_internal_test" => [ ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" ++ ], ++ "test/poly1305_internal_test-bin-poly1305_internal_test.o" => [ ++ "test/poly1305_internal_test.c" ++ ], ++ "test/property_test" => [ ++ "test/property_test-bin-property_test.o" ++ ], ++ "test/property_test-bin-property_test.o" => [ ++ "test/property_test.c" ++ ], ++ "test/prov_config_test" => [ ++ "test/prov_config_test-bin-prov_config_test.o" ++ ], ++ "test/prov_config_test-bin-prov_config_test.o" => [ ++ "test/prov_config_test.c" ++ ], ++ "test/provfetchtest" => [ ++ "test/provfetchtest-bin-provfetchtest.o" ++ ], ++ "test/provfetchtest-bin-provfetchtest.o" => [ ++ "test/provfetchtest.c" ++ ], ++ "test/provider_fallback_test" => [ ++ "test/provider_fallback_test-bin-provider_fallback_test.o" ++ ], ++ "test/provider_fallback_test-bin-provider_fallback_test.o" => [ ++ "test/provider_fallback_test.c" ++ ], ++ "test/provider_internal_test" => [ ++ "test/provider_internal_test-bin-p_test.o", ++ "test/provider_internal_test-bin-provider_internal_test.o" ++ ], ++ "test/provider_internal_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_internal_test-bin-provider_internal_test.o" => [ ++ "test/provider_internal_test.c" ++ ], ++ "test/provider_pkey_test" => [ ++ "test/provider_pkey_test-bin-fake_rsaprov.o", ++ "test/provider_pkey_test-bin-provider_pkey_test.o" ++ ], ++ "test/provider_pkey_test-bin-fake_rsaprov.o" => [ ++ "test/fake_rsaprov.c" ++ ], ++ "test/provider_pkey_test-bin-provider_pkey_test.o" => [ ++ "test/provider_pkey_test.c" ++ ], ++ "test/provider_status_test" => [ ++ "test/provider_status_test-bin-provider_status_test.o" ++ ], ++ "test/provider_status_test-bin-provider_status_test.o" => [ ++ "test/provider_status_test.c" ++ ], ++ "test/provider_test" => [ ++ "test/provider_test-bin-p_test.o", ++ "test/provider_test-bin-provider_test.o" ++ ], ++ "test/provider_test-bin-p_test.o" => [ ++ "test/p_test.c" ++ ], ++ "test/provider_test-bin-provider_test.o" => [ ++ "test/provider_test.c" ++ ], ++ "test/rand_status_test" => [ ++ "test/rand_status_test-bin-rand_status_test.o" ++ ], ++ "test/rand_status_test-bin-rand_status_test.o" => [ ++ "test/rand_status_test.c" ++ ], ++ "test/rand_test" => [ ++ "test/rand_test-bin-rand_test.o" ++ ], ++ "test/rand_test-bin-rand_test.o" => [ ++ "test/rand_test.c" ++ ], ++ "test/rc2test" => [ ++ "test/rc2test-bin-rc2test.o" ++ ], ++ "test/rc2test-bin-rc2test.o" => [ ++ "test/rc2test.c" ++ ], ++ "test/rc4test" => [ ++ "test/rc4test-bin-rc4test.o" ++ ], ++ "test/rc4test-bin-rc4test.o" => [ ++ "test/rc4test.c" ++ ], ++ "test/rc5test" => [ ++ "test/rc5test-bin-rc5test.o" ++ ], ++ "test/rc5test-bin-rc5test.o" => [ ++ "test/rc5test.c" ++ ], ++ "test/rdrand_sanitytest" => [ ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" ++ ], ++ "test/rdrand_sanitytest-bin-rdrand_sanitytest.o" => [ ++ "test/rdrand_sanitytest.c" ++ ], ++ "test/recordlentest" => [ ++ "test/helpers/recordlentest-bin-ssltestlib.o", ++ "test/recordlentest-bin-recordlentest.o" ++ ], ++ "test/recordlentest-bin-recordlentest.o" => [ ++ "test/recordlentest.c" ++ ], ++ "test/rsa_complex" => [ ++ "test/rsa_complex-bin-rsa_complex.o" ++ ], ++ "test/rsa_complex-bin-rsa_complex.o" => [ ++ "test/rsa_complex.c" ++ ], ++ "test/rsa_mp_test" => [ ++ "test/rsa_mp_test-bin-rsa_mp_test.o" ++ ], ++ "test/rsa_mp_test-bin-rsa_mp_test.o" => [ ++ "test/rsa_mp_test.c" ++ ], ++ "test/rsa_sp800_56b_test" => [ ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" ++ ], ++ "test/rsa_sp800_56b_test-bin-rsa_sp800_56b_test.o" => [ ++ "test/rsa_sp800_56b_test.c" ++ ], ++ "test/rsa_test" => [ ++ "test/rsa_test-bin-rsa_test.o" ++ ], ++ "test/rsa_test-bin-rsa_test.o" => [ ++ "test/rsa_test.c" ++ ], ++ "test/sanitytest" => [ ++ "test/sanitytest-bin-sanitytest.o" ++ ], ++ "test/sanitytest-bin-sanitytest.o" => [ ++ "test/sanitytest.c" ++ ], ++ "test/secmemtest" => [ ++ "test/secmemtest-bin-secmemtest.o" ++ ], ++ "test/secmemtest-bin-secmemtest.o" => [ ++ "test/secmemtest.c" ++ ], ++ "test/servername_test" => [ ++ "test/helpers/servername_test-bin-ssltestlib.o", ++ "test/servername_test-bin-servername_test.o" ++ ], ++ "test/servername_test-bin-servername_test.o" => [ ++ "test/servername_test.c" ++ ], ++ "test/sha_test" => [ ++ "test/sha_test-bin-sha_test.o" ++ ], ++ "test/sha_test-bin-sha_test.o" => [ ++ "test/sha_test.c" ++ ], ++ "test/siphash_internal_test" => [ ++ "test/siphash_internal_test-bin-siphash_internal_test.o" ++ ], ++ "test/siphash_internal_test-bin-siphash_internal_test.o" => [ ++ "test/siphash_internal_test.c" ++ ], ++ "test/sm2_internal_test" => [ ++ "test/sm2_internal_test-bin-sm2_internal_test.o" ++ ], ++ "test/sm2_internal_test-bin-sm2_internal_test.o" => [ ++ "test/sm2_internal_test.c" ++ ], ++ "test/sm3_internal_test" => [ ++ "test/sm3_internal_test-bin-sm3_internal_test.o" ++ ], ++ "test/sm3_internal_test-bin-sm3_internal_test.o" => [ ++ "test/sm3_internal_test.c" ++ ], ++ "test/sm4_internal_test" => [ ++ "test/sm4_internal_test-bin-sm4_internal_test.o" ++ ], ++ "test/sm4_internal_test-bin-sm4_internal_test.o" => [ ++ "test/sm4_internal_test.c" ++ ], ++ "test/sparse_array_test" => [ ++ "test/sparse_array_test-bin-sparse_array_test.o" ++ ], ++ "test/sparse_array_test-bin-sparse_array_test.o" => [ ++ "test/sparse_array_test.c" ++ ], ++ "test/srptest" => [ ++ "test/srptest-bin-srptest.o" ++ ], ++ "test/srptest-bin-srptest.o" => [ ++ "test/srptest.c" ++ ], ++ "test/ssl_cert_table_internal_test" => [ ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" ++ ], ++ "test/ssl_cert_table_internal_test-bin-ssl_cert_table_internal_test.o" => [ ++ "test/ssl_cert_table_internal_test.c" ++ ], ++ "test/ssl_ctx_test" => [ ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" ++ ], ++ "test/ssl_ctx_test-bin-ssl_ctx_test.o" => [ ++ "test/ssl_ctx_test.c" ++ ], ++ "test/ssl_old_test" => [ ++ "test/helpers/ssl_old_test-bin-predefined_dhparams.o", ++ "test/ssl_old_test-bin-ssl_old_test.o" ++ ], ++ "test/ssl_old_test-bin-ssl_old_test.o" => [ ++ "test/ssl_old_test.c" ++ ], ++ "test/ssl_test" => [ ++ "test/helpers/ssl_test-bin-handshake.o", ++ "test/helpers/ssl_test-bin-handshake_srp.o", ++ "test/helpers/ssl_test-bin-ssl_test_ctx.o", ++ "test/ssl_test-bin-ssl_test.o" ++ ], ++ "test/ssl_test-bin-ssl_test.o" => [ ++ "test/ssl_test.c" ++ ], ++ "test/ssl_test_ctx_test" => [ ++ "test/helpers/ssl_test_ctx_test-bin-ssl_test_ctx.o", ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" ++ ], ++ "test/ssl_test_ctx_test-bin-ssl_test_ctx_test.o" => [ ++ "test/ssl_test_ctx_test.c" ++ ], ++ "test/sslapitest" => [ ++ "test/helpers/sslapitest-bin-ssltestlib.o", ++ "test/sslapitest-bin-filterprov.o", ++ "test/sslapitest-bin-sslapitest.o", ++ "test/sslapitest-bin-tls-provider.o" ++ ], ++ "test/sslapitest-bin-filterprov.o" => [ ++ "test/filterprov.c" ++ ], ++ "test/sslapitest-bin-sslapitest.o" => [ ++ "test/sslapitest.c" ++ ], ++ "test/sslapitest-bin-tls-provider.o" => [ ++ "test/tls-provider.c" ++ ], ++ "test/sslbuffertest" => [ ++ "test/helpers/sslbuffertest-bin-ssltestlib.o", ++ "test/sslbuffertest-bin-sslbuffertest.o" ++ ], ++ "test/sslbuffertest-bin-sslbuffertest.o" => [ ++ "test/sslbuffertest.c" ++ ], ++ "test/sslcorrupttest" => [ ++ "test/helpers/sslcorrupttest-bin-ssltestlib.o", ++ "test/sslcorrupttest-bin-sslcorrupttest.o" ++ ], ++ "test/sslcorrupttest-bin-sslcorrupttest.o" => [ ++ "test/sslcorrupttest.c" ++ ], ++ "test/stack_test" => [ ++ "test/stack_test-bin-stack_test.o" ++ ], ++ "test/stack_test-bin-stack_test.o" => [ ++ "test/stack_test.c" ++ ], ++ "test/sysdefaulttest" => [ ++ "test/sysdefaulttest-bin-sysdefaulttest.o" ++ ], ++ "test/sysdefaulttest-bin-sysdefaulttest.o" => [ ++ "test/sysdefaulttest.c" ++ ], ++ "test/test_test" => [ ++ "test/test_test-bin-test_test.o" ++ ], ++ "test/test_test-bin-test_test.o" => [ ++ "test/test_test.c" ++ ], ++ "test/testutil/libtestutil-lib-apps_shims.o" => [ ++ "test/testutil/apps_shims.c" ++ ], ++ "test/testutil/libtestutil-lib-basic_output.o" => [ ++ "test/testutil/basic_output.c" ++ ], ++ "test/testutil/libtestutil-lib-cb.o" => [ ++ "test/testutil/cb.c" ++ ], ++ "test/testutil/libtestutil-lib-driver.o" => [ ++ "test/testutil/driver.c" ++ ], ++ "test/testutil/libtestutil-lib-fake_random.o" => [ ++ "test/testutil/fake_random.c" ++ ], ++ "test/testutil/libtestutil-lib-format_output.o" => [ ++ "test/testutil/format_output.c" ++ ], ++ "test/testutil/libtestutil-lib-load.o" => [ ++ "test/testutil/load.c" ++ ], ++ "test/testutil/libtestutil-lib-main.o" => [ ++ "test/testutil/main.c" ++ ], ++ "test/testutil/libtestutil-lib-options.o" => [ ++ "test/testutil/options.c" ++ ], ++ "test/testutil/libtestutil-lib-output.o" => [ ++ "test/testutil/output.c" ++ ], ++ "test/testutil/libtestutil-lib-provider.o" => [ ++ "test/testutil/provider.c" ++ ], ++ "test/testutil/libtestutil-lib-random.o" => [ ++ "test/testutil/random.c" ++ ], ++ "test/testutil/libtestutil-lib-stanza.o" => [ ++ "test/testutil/stanza.c" ++ ], ++ "test/testutil/libtestutil-lib-test_cleanup.o" => [ ++ "test/testutil/test_cleanup.c" ++ ], ++ "test/testutil/libtestutil-lib-test_options.o" => [ ++ "test/testutil/test_options.c" ++ ], ++ "test/testutil/libtestutil-lib-tests.o" => [ ++ "test/testutil/tests.c" ++ ], ++ "test/testutil/libtestutil-lib-testutil_init.o" => [ ++ "test/testutil/testutil_init.c" ++ ], ++ "test/threadstest" => [ ++ "test/threadstest-bin-threadstest.o" ++ ], ++ "test/threadstest-bin-threadstest.o" => [ ++ "test/threadstest.c" ++ ], ++ "test/threadstest_fips" => [ ++ "test/threadstest_fips-bin-threadstest_fips.o" ++ ], ++ "test/threadstest_fips-bin-threadstest_fips.o" => [ ++ "test/threadstest_fips.c" ++ ], ++ "test/time_offset_test" => [ ++ "test/time_offset_test-bin-time_offset_test.o" ++ ], ++ "test/time_offset_test-bin-time_offset_test.o" => [ ++ "test/time_offset_test.c" ++ ], ++ "test/tls13ccstest" => [ ++ "test/helpers/tls13ccstest-bin-ssltestlib.o", ++ "test/tls13ccstest-bin-tls13ccstest.o" ++ ], ++ "test/tls13ccstest-bin-tls13ccstest.o" => [ ++ "test/tls13ccstest.c" ++ ], ++ "test/tls13encryptiontest" => [ ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" ++ ], ++ "test/tls13encryptiontest-bin-tls13encryptiontest.o" => [ ++ "test/tls13encryptiontest.c" ++ ], ++ "test/uitest" => [ ++ "apps/lib/uitest-bin-apps_ui.o", ++ "test/uitest-bin-uitest.o" ++ ], ++ "test/uitest-bin-uitest.o" => [ ++ "test/uitest.c" ++ ], ++ "test/upcallstest" => [ ++ "test/upcallstest-bin-upcallstest.o" ++ ], ++ "test/upcallstest-bin-upcallstest.o" => [ ++ "test/upcallstest.c" ++ ], ++ "test/user_property_test" => [ ++ "test/user_property_test-bin-user_property_test.o" ++ ], ++ "test/user_property_test-bin-user_property_test.o" => [ ++ "test/user_property_test.c" ++ ], ++ "test/v3ext" => [ ++ "test/v3ext-bin-v3ext.o" ++ ], ++ "test/v3ext-bin-v3ext.o" => [ ++ "test/v3ext.c" ++ ], ++ "test/v3nametest" => [ ++ "test/v3nametest-bin-v3nametest.o" ++ ], ++ "test/v3nametest-bin-v3nametest.o" => [ ++ "test/v3nametest.c" ++ ], ++ "test/verify_extra_test" => [ ++ "test/verify_extra_test-bin-verify_extra_test.o" ++ ], ++ "test/verify_extra_test-bin-verify_extra_test.o" => [ ++ "test/verify_extra_test.c" ++ ], ++ "test/versions" => [ ++ "test/versions-bin-versions.o" ++ ], ++ "test/versions-bin-versions.o" => [ ++ "test/versions.c" ++ ], ++ "test/wpackettest" => [ ++ "test/wpackettest-bin-wpackettest.o" ++ ], ++ "test/wpackettest-bin-wpackettest.o" => [ ++ "test/wpackettest.c" ++ ], ++ "test/x509_check_cert_pkey_test" => [ ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" ++ ], ++ "test/x509_check_cert_pkey_test-bin-x509_check_cert_pkey_test.o" => [ ++ "test/x509_check_cert_pkey_test.c" ++ ], ++ "test/x509_dup_cert_test" => [ ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" ++ ], ++ "test/x509_dup_cert_test-bin-x509_dup_cert_test.o" => [ ++ "test/x509_dup_cert_test.c" ++ ], ++ "test/x509_internal_test" => [ ++ "test/x509_internal_test-bin-x509_internal_test.o" ++ ], ++ "test/x509_internal_test-bin-x509_internal_test.o" => [ ++ "test/x509_internal_test.c" ++ ], ++ "test/x509_time_test" => [ ++ "test/x509_time_test-bin-x509_time_test.o" ++ ], ++ "test/x509_time_test-bin-x509_time_test.o" => [ ++ "test/x509_time_test.c" ++ ], ++ "test/x509aux" => [ ++ "test/x509aux-bin-x509aux.o" ++ ], ++ "test/x509aux-bin-x509aux.o" => [ ++ "test/x509aux.c" ++ ], ++ "tools/c_rehash" => [ ++ "tools/c_rehash.in" ++ ], ++ "util/shlib_wrap.sh" => [ ++ "util/shlib_wrap.sh.in" ++ ], ++ "util/wrap.pl" => [ ++ "util/wrap.pl.in" ++ ] ++ }, ++ "targets" => [ ++ "build_modules_nodep" ++ ] ++); ++ ++# Unexported, only used by OpenSSL::Test::Utils::available_protocols() ++our %available_protocols = ( ++ tls => [ ++ "ssl3", ++ "tls1", ++ "tls1_1", ++ "tls1_2", ++ "tls1_3" ++], ++ dtls => [ ++ "dtls1", ++ "dtls1_2" ++], ++); ++ ++# The following data is only used when this files is use as a script ++my @makevars = ( ++ "AR", ++ "ARFLAGS", ++ "AS", ++ "ASFLAGS", ++ "CC", ++ "CFLAGS", ++ "CPP", ++ "CPPDEFINES", ++ "CPPFLAGS", ++ "CPPINCLUDES", ++ "CROSS_COMPILE", ++ "CXX", ++ "CXXFLAGS", ++ "HASHBANGPERL", ++ "LD", ++ "LDFLAGS", ++ "LDLIBS", ++ "MT", ++ "MTFLAGS", ++ "PERL", ++ "RANLIB", ++ "RC", ++ "RCFLAGS", ++ "RM" ++); ++my %disabled_info = ( ++ "afalgeng" => { ++ "macro" => "OPENSSL_NO_AFALGENG" ++ }, ++ "asan" => { ++ "macro" => "OPENSSL_NO_ASAN" ++ }, ++ "asm" => { ++ "macro" => "OPENSSL_NO_ASM" ++ }, ++ "comp" => { ++ "macro" => "OPENSSL_NO_COMP", ++ "skipped" => [ ++ "crypto/comp" ++ ] ++ }, ++ "crypto-mdebug" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG" ++ }, ++ "crypto-mdebug-backtrace" => { ++ "macro" => "OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE" ++ }, ++ "devcryptoeng" => { ++ "macro" => "OPENSSL_NO_DEVCRYPTOENG" ++ }, ++ "ec_nistp_64_gcc_128" => { ++ "macro" => "OPENSSL_NO_EC_NISTP_64_GCC_128" ++ }, ++ "egd" => { ++ "macro" => "OPENSSL_NO_EGD" ++ }, ++ "external-tests" => { ++ "macro" => "OPENSSL_NO_EXTERNAL_TESTS" ++ }, ++ "fuzz-afl" => { ++ "macro" => "OPENSSL_NO_FUZZ_AFL" ++ }, ++ "fuzz-libfuzzer" => { ++ "macro" => "OPENSSL_NO_FUZZ_LIBFUZZER" ++ }, ++ "ktls" => { ++ "macro" => "OPENSSL_NO_KTLS" ++ }, ++ "loadereng" => { ++ "macro" => "OPENSSL_NO_LOADERENG" ++ }, ++ "md2" => { ++ "macro" => "OPENSSL_NO_MD2", ++ "skipped" => [ ++ "crypto/md2" ++ ] ++ }, ++ "msan" => { ++ "macro" => "OPENSSL_NO_MSAN" ++ }, ++ "rc5" => { ++ "macro" => "OPENSSL_NO_RC5", ++ "skipped" => [ ++ "crypto/rc5" ++ ] ++ }, ++ "sctp" => { ++ "macro" => "OPENSSL_NO_SCTP" ++ }, ++ "ssl3" => { ++ "macro" => "OPENSSL_NO_SSL3" ++ }, ++ "ssl3-method" => { ++ "macro" => "OPENSSL_NO_SSL3_METHOD" ++ }, ++ "trace" => { ++ "macro" => "OPENSSL_NO_TRACE" ++ }, ++ "ubsan" => { ++ "macro" => "OPENSSL_NO_UBSAN" ++ }, ++ "unit-test" => { ++ "macro" => "OPENSSL_NO_UNIT_TEST" ++ }, ++ "uplink" => { ++ "macro" => "OPENSSL_NO_UPLINK" ++ }, ++ "weak-ssl-ciphers" => { ++ "macro" => "OPENSSL_NO_WEAK_SSL_CIPHERS" ++ } ++); ++my @user_crossable = qw( AR AS CC CXX CPP LD MT RANLIB RC ); ++ ++# If run directly, we can give some answers, and even reconfigure ++unless (caller) { ++ use Getopt::Long; ++ use File::Spec::Functions; ++ use File::Basename; ++ use File::Compare qw(compare_text); ++ use File::Copy; ++ use Pod::Usage; ++ ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++ use OpenSSL::fallback '/home/rafaelgss/repos/os/node/deps/openssl/openssl/external/perl/MODULES.txt'; ++ ++ my $here = dirname($0); ++ ++ if (scalar @ARGV == 0) { ++ # With no arguments, re-create the build file ++ # We do that in two steps, where the first step emits perl ++ # snipets. ++ ++ my $buildfile = $target{build_file}; ++ my $buildfile_template = "$buildfile.in"; ++ my @autowarntext = ( ++ 'WARNING: do not edit!', ++ "Generated by configdata.pm from " ++ .join(", ", @{$config{build_file_templates}}), ++ "via $buildfile_template" ++ ); ++ my %gendata = ( ++ config => \%config, ++ target => \%target, ++ disabled => \%disabled, ++ withargs => \%withargs, ++ unified_info => \%unified_info, ++ autowarntext => \@autowarntext, ++ ); ++ ++ use lib '.'; ++ use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++ use gentemplate; ++ ++ open my $buildfile_template_fh, ">$buildfile_template" ++ or die "Trying to create $buildfile_template: $!"; ++ foreach (@{$config{build_file_templates}}) { ++ copy($_, $buildfile_template_fh) ++ or die "Trying to copy $_ into $buildfile_template: $!"; ++ } ++ gentemplate(output => $buildfile_template_fh, %gendata); ++ close $buildfile_template_fh; ++ print 'Created ',$buildfile_template,"\n"; ++ ++ use OpenSSL::Template; ++ ++ my $prepend = <<'_____'; ++use File::Spec::Functions; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/util/perl'; ++use lib '/home/rafaelgss/repos/os/node/deps/openssl/openssl/Configurations'; ++use lib '.'; ++use platform; ++_____ ++ ++ my $tmpl; ++ open BUILDFILE, ">$buildfile.new" ++ or die "Trying to create $buildfile.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $buildfile_template); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*BUILDFILE, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close BUILDFILE; ++ rename("$buildfile.new", $buildfile) ++ or die "Trying to rename $buildfile.new to $buildfile: $!"; ++ print 'Created ',$buildfile,"\n"; ++ ++ my $configuration_h = ++ catfile('include', 'openssl', 'configuration.h'); ++ my $configuration_h_in = ++ catfile($config{sourcedir}, 'include', 'openssl', 'configuration.h.in'); ++ open CONFIGURATION_H, ">${configuration_h}.new" ++ or die "Trying to create ${configuration_h}.new: $!"; ++ $tmpl = OpenSSL::Template->new(TYPE => 'FILE', ++ SOURCE => $configuration_h_in); ++ $tmpl->fill_in(FILENAME => $_, ++ OUTPUT => \*CONFIGURATION_H, ++ HASH => \%gendata, ++ PREPEND => $prepend, ++ # To ensure that global variables and functions ++ # defined in one template stick around for the ++ # next, making them combinable ++ PACKAGE => 'OpenSSL::safe') ++ or die $Text::Template::ERROR; ++ close CONFIGURATION_H; ++ ++ # When using stat() on Windows, we can get it to perform better by ++ # avoid some data. This doesn't affect the mtime field, so we're not ++ # losing anything... ++ ${^WIN32_SLOPPY_STAT} = 1; ++ ++ my $update_configuration_h = 0; ++ if (-f $configuration_h) { ++ my $configuration_h_mtime = (stat($configuration_h))[9]; ++ my $configuration_h_in_mtime = (stat($configuration_h_in))[9]; ++ ++ # If configuration.h.in was updated after the last configuration.h, ++ # or if configuration.h.new differs configuration.h, we update ++ # configuration.h ++ if ($configuration_h_mtime < $configuration_h_in_mtime ++ || compare_text("${configuration_h}.new", $configuration_h) != 0) { ++ $update_configuration_h = 1; ++ } else { ++ # If nothing has changed, let's just drop the new one and ++ # pretend like nothing happened ++ unlink "${configuration_h}.new" ++ } ++ } else { ++ $update_configuration_h = 1; ++ } ++ ++ if ($update_configuration_h) { ++ rename("${configuration_h}.new", $configuration_h) ++ or die "Trying to rename ${configuration_h}.new to $configuration_h: $!"; ++ print 'Created ',$configuration_h,"\n"; ++ } ++ ++ exit(0); ++ } ++ ++ my $dump = undef; ++ my $cmdline = undef; ++ my $options = undef; ++ my $target = undef; ++ my $envvars = undef; ++ my $makevars = undef; ++ my $buildparams = undef; ++ my $reconf = undef; ++ my $verbose = undef; ++ my $query = undef; ++ my $help = undef; ++ my $man = undef; ++ GetOptions('dump|d' => \$dump, ++ 'command-line|c' => \$cmdline, ++ 'options|o' => \$options, ++ 'target|t' => \$target, ++ 'environment|e' => \$envvars, ++ 'make-variables|m' => \$makevars, ++ 'build-parameters|b' => \$buildparams, ++ 'reconfigure|reconf|r' => \$reconf, ++ 'verbose|v' => \$verbose, ++ 'query|q=s' => \$query, ++ 'help' => \$help, ++ 'man' => \$man) ++ or die "Errors in command line arguments\n"; ++ ++ # We allow extra arguments with --query. That allows constructs like ++ # this: ++ # ./configdata.pm --query 'get_sources(@ARGV)' file1 file2 file3 ++ if (!$query && scalar @ARGV > 0) { ++ print STDERR <<"_____"; ++Unrecognised arguments. ++For more information, do '$0 --help' ++_____ ++ exit(2); ++ } ++ ++ if ($help) { ++ pod2usage(-exitval => 0, ++ -verbose => 1); ++ } ++ if ($man) { ++ pod2usage(-exitval => 0, ++ -verbose => 2); ++ } ++ if ($dump || $cmdline) { ++ print "\nCommand line (with current working directory = $here):\n\n"; ++ print ' ',join(' ', ++ $config{PERL}, ++ catfile($config{sourcedir}, 'Configure'), ++ @{$config{perlargv}}), "\n"; ++ print "\nPerl information:\n\n"; ++ print ' ',$config{perl_cmd},"\n"; ++ print ' ',$config{perl_version},' for ',$config{perl_archname},"\n"; ++ } ++ if ($dump || $options) { ++ my $longest = 0; ++ my $longest2 = 0; ++ foreach my $what (@disablables) { ++ $longest = length($what) if $longest < length($what); ++ $longest2 = length($disabled{$what}) ++ if $disabled{$what} && $longest2 < length($disabled{$what}); ++ } ++ print "\nEnabled features:\n\n"; ++ foreach my $what (@disablables) { ++ print " $what\n" unless $disabled{$what}; ++ } ++ print "\nDisabled features:\n\n"; ++ foreach my $what (@disablables) { ++ if ($disabled{$what}) { ++ print " $what", ' ' x ($longest - length($what) + 1), ++ "[$disabled{$what}]", ' ' x ($longest2 - length($disabled{$what}) + 1); ++ print $disabled_info{$what}->{macro} ++ if $disabled_info{$what}->{macro}; ++ print ' (skip ', ++ join(', ', @{$disabled_info{$what}->{skipped}}), ++ ')' ++ if $disabled_info{$what}->{skipped}; ++ print "\n"; ++ } ++ } ++ } ++ if ($dump || $target) { ++ print "\nConfig target attributes:\n\n"; ++ foreach (sort keys %target) { ++ next if $_ =~ m|^_| || $_ eq 'template'; ++ my $quotify = sub { ++ map { ++ if (defined $_) { ++ (my $x = $_) =~ s|([\\\$\@"])|\\$1|g; "\"$x\"" ++ } else { ++ "undef"; ++ } ++ } @_; ++ }; ++ print ' ', $_, ' => '; ++ if (ref($target{$_}) eq "ARRAY") { ++ print '[ ', join(', ', $quotify->(@{$target{$_}})), " ],\n"; ++ } else { ++ print $quotify->($target{$_}), ",\n" ++ } ++ } ++ } ++ if ($dump || $envvars) { ++ print "\nRecorded environment:\n\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ''),"\n"; ++ } ++ } ++ if ($dump || $makevars) { ++ print "\nMakevars:\n\n"; ++ foreach my $var (@makevars) { ++ my $prefix = ''; ++ $prefix = $config{CROSS_COMPILE} ++ if grep { $var eq $_ } @user_crossable; ++ $prefix //= ''; ++ print ' ',$var,' ' x (16 - length $var),'= ', ++ (ref $config{$var} eq 'ARRAY' ++ ? join(' ', @{$config{$var}}) ++ : $prefix.$config{$var}), ++ "\n" ++ if defined $config{$var}; ++ } ++ ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ my $buildfile = canonpath(catdir(@buildfile)); ++ print <<"_____"; ++ ++NOTE: These variables only represent the configuration view. The build file ++template may have processed these variables further, please have a look at the ++build file for more exact data: ++ $buildfile ++_____ ++ } ++ if ($dump || $buildparams) { ++ my @buildfile = ($config{builddir}, $config{build_file}); ++ unshift @buildfile, $here ++ unless file_name_is_absolute($config{builddir}); ++ print "\nbuild file:\n\n"; ++ print " ", canonpath(catfile(@buildfile)),"\n"; ++ ++ print "\nbuild file templates:\n\n"; ++ foreach (@{$config{build_file_templates}}) { ++ my @tmpl = ($_); ++ unshift @tmpl, $here ++ unless file_name_is_absolute($config{sourcedir}); ++ print ' ',canonpath(catfile(@tmpl)),"\n"; ++ } ++ } ++ if ($reconf) { ++ if ($verbose) { ++ print 'Reconfiguring with: ', join(' ',@{$config{perlargv}}), "\n"; ++ foreach (sort keys %{$config{perlenv}}) { ++ print ' ',$_,' = ',($config{perlenv}->{$_} || ""),"\n"; ++ } ++ } ++ ++ chdir $here; ++ exec $^X,catfile($config{sourcedir}, 'Configure'),'reconf'; ++ } ++ if ($query) { ++ use OpenSSL::Config::Query; ++ ++ my $confquery = OpenSSL::Config::Query->new(info => \%unified_info, ++ config => \%config); ++ my $result = eval "\$confquery->$query"; ++ ++ # We may need a result class with a printing function at some point. ++ # Until then, we assume that we get a scalar, or a list or a hash table ++ # with scalar values and simply print them in some orderly fashion. ++ if (ref $result eq 'ARRAY') { ++ print "$_\n" foreach @$result; ++ } elsif (ref $result eq 'HASH') { ++ print "$_ : \\\n ", join(" \\\n ", @{$result->{$_}}), "\n" ++ foreach sort keys %$result; ++ } elsif (ref $result eq 'SCALAR') { ++ print "$$result\n"; ++ } ++ } ++} ++ ++1; ++ ++__END__ ++ ++=head1 NAME ++ ++configdata.pm - configuration data for OpenSSL builds ++ ++=head1 SYNOPSIS ++ ++Interactive: ++ ++ perl configdata.pm [options] ++ ++As data bank module: ++ ++ use configdata; ++ ++=head1 DESCRIPTION ++ ++This module can be used in two modes, interactively and as a module containing ++all the data recorded by OpenSSL's Configure script. ++ ++When used interactively, simply run it as any perl script. ++If run with no arguments, it will rebuild the build file (Makefile or ++corresponding). ++With at least one option, it will instead get the information you ask for, or ++re-run the configuration process. ++See L below for more information. ++ ++When loaded as a module, you get a few databanks with useful information to ++perform build related tasks. The databanks are: ++ ++ %config Configured things. ++ %target The OpenSSL config target with all inheritances ++ resolved. ++ %disabled The features that are disabled. ++ @disablables The list of features that can be disabled. ++ %withargs All data given through --with-THING options. ++ %unified_info All information that was computed from the build.info ++ files. ++ ++=head1 OPTIONS ++ ++=over 4 ++ ++=item B<--help> ++ ++Print a brief help message and exit. ++ ++=item B<--man> ++ ++Print the manual page and exit. ++ ++=item B<--dump> | B<-d> ++ ++Print all relevant configuration data. This is equivalent to B<--command-line> ++B<--options> B<--target> B<--environment> B<--make-variables> ++B<--build-parameters>. ++ ++=item B<--command-line> | B<-c> ++ ++Print the current configuration command line. ++ ++=item B<--options> | B<-o> ++ ++Print the features, both enabled and disabled, and display defined macro and ++skipped directories where applicable. ++ ++=item B<--target> | B<-t> ++ ++Print the config attributes for this config target. ++ ++=item B<--environment> | B<-e> ++ ++Print the environment variables and their values at the time of configuration. ++ ++=item B<--make-variables> | B<-m> ++ ++Print the main make variables generated in the current configuration ++ ++=item B<--build-parameters> | B<-b> ++ ++Print the build parameters, i.e. build file and build file templates. ++ ++=item B<--reconfigure> | B<--reconf> | B<-r> ++ ++Re-run the configuration process. ++ ++=item B<--verbose> | B<-v> ++ ++Verbose output. ++ ++=back ++ ++=cut ++ ++EOF +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/buildinf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/buildinf.h +new file mode 100755 +index 00000000..72328692 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/buildinf.h +@@ -0,0 +1,28 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by util/mkbuildinf.pl ++ * ++ * Copyright 2014-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 ++ */ ++ ++#define PLATFORM "platform: linux-sw_64" ++#define DATE "built on: Thu Apr 25 21:37:24 2019 UTC" ++ ++/* ++ * Generate compiler_flags as an array of individual characters. This is a ++ * workaround for the situation where CFLAGS gets too long for a C90 string ++ * literal ++ */ ++static const char compiler_flags[] = { ++ 'c','o','m','p','i','l','e','r',':',' ','g','c','c',' ','-','f', ++ 'P','I','C',' ','-','p','t','h','r','e','a','d',' ','-','W','a', ++ 'l','l',' ','-','O','3',' ','-','D','O','P','E','N','S','S','L', ++ '_','U','S','E','_','N','O','D','E','L','E','T','E',' ','-','D', ++ 'O','P','E','N','S','S','L','_','P','I','C',' ','-','D','N','D', ++ 'E','B','U','G','\0' ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/bn_conf.h +new file mode 100755 +index 00000000..34bd8b78 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/bn_conf.h +@@ -0,0 +1,28 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/bn_conf.h.in */ ++/* ++ * 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 HEADER_BN_CONF_H ++# define HEADER_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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/dso_conf.h +new file mode 100755 +index 00000000..18f6ac3b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/crypto/include/internal/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from crypto/include/internal/dso_conf.h.in */ ++/* ++ * 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_DSO_CONF_H ++# define HEADER_DSO_CONF_H ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/bn_conf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/bn_conf.h +new file mode 100644 +index 00000000..0347a6dd +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/bn_conf.h +@@ -0,0 +1,29 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/bn_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++/* ++ * 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 */ ++#define SIXTY_FOUR_BIT_LONG ++#undef SIXTY_FOUR_BIT ++#undef THIRTY_TWO_BIT ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/dso_conf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/dso_conf.h +new file mode 100644 +index 00000000..795dfa0f +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/crypto/dso_conf.h +@@ -0,0 +1,19 @@ ++/* WARNING: do not edit! */ ++/* Generated by Makefile from include/crypto/dso_conf.h.in */ ++/* ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++# pragma once ++ ++# define DSO_DLFCN ++# define HAVE_DLFCN_H ++# define DSO_EXTENSION ".so" ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1.h +new file mode 100644 +index 00000000..21ff58e3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1.h +@@ -0,0 +1,1128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1_H ++# define OPENSSL_ASN1_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# include ++# include ++ ++# 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 ++ ++/* Stacks for types not otherwise defined in this header */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ALGOR, X509_ALGOR, X509_ALGOR) ++#define sk_X509_ALGOR_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_value(sk, idx) ((X509_ALGOR *)OPENSSL_sk_value(ossl_check_const_X509_ALGOR_sk_type(sk), (idx))) ++#define sk_X509_ALGOR_new(cmp) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new(ossl_check_X509_ALGOR_compfunc_type(cmp))) ++#define sk_X509_ALGOR_new_null() ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_null()) ++#define sk_X509_ALGOR_new_reserve(cmp, n) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_new_reserve(ossl_check_X509_ALGOR_compfunc_type(cmp), (n))) ++#define sk_X509_ALGOR_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ALGOR_sk_type(sk), (n)) ++#define sk_X509_ALGOR_free(sk) OPENSSL_sk_free(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_delete(sk, i) ((X509_ALGOR *)OPENSSL_sk_delete(ossl_check_X509_ALGOR_sk_type(sk), (i))) ++#define sk_X509_ALGOR_delete_ptr(sk, ptr) ((X509_ALGOR *)OPENSSL_sk_delete_ptr(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_pop(sk) ((X509_ALGOR *)OPENSSL_sk_pop(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_shift(sk) ((X509_ALGOR *)OPENSSL_sk_shift(ossl_check_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ALGOR_sk_type(sk),ossl_check_X509_ALGOR_freefunc_type(freefunc)) ++#define sk_X509_ALGOR_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), (idx)) ++#define sk_X509_ALGOR_set(sk, idx, ptr) ((X509_ALGOR *)OPENSSL_sk_set(ossl_check_X509_ALGOR_sk_type(sk), (idx), ossl_check_X509_ALGOR_type(ptr))) ++#define sk_X509_ALGOR_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr)) ++#define sk_X509_ALGOR_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_type(ptr), pnum) ++#define sk_X509_ALGOR_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ALGOR_sk_type(sk)) ++#define sk_X509_ALGOR_dup(sk) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_dup(ossl_check_const_X509_ALGOR_sk_type(sk))) ++#define sk_X509_ALGOR_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ALGOR) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_copyfunc_type(copyfunc), ossl_check_X509_ALGOR_freefunc_type(freefunc))) ++#define sk_X509_ALGOR_set_cmp_func(sk, cmp) ((sk_X509_ALGOR_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ALGOR_sk_type(sk), ossl_check_X509_ALGOR_compfunc_type(cmp))) ++ ++ ++ ++# 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) ++ ++struct asn1_string_table_st { ++ int nid; ++ long minsize; ++ long maxsize; ++ unsigned long mask; ++ unsigned long flags; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING_TABLE, ASN1_STRING_TABLE, ASN1_STRING_TABLE) ++#define sk_ASN1_STRING_TABLE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_value(sk, idx) ((ASN1_STRING_TABLE *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_TABLE_new(cmp) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++#define sk_ASN1_STRING_TABLE_new_null() ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_TABLE_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_TABLE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (n)) ++#define sk_ASN1_STRING_TABLE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_delete(sk, i) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (i))) ++#define sk_ASN1_STRING_TABLE_delete_ptr(sk, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_pop(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_shift(sk) ((ASN1_STRING_TABLE *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_TABLE_sk_type(sk),ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_TABLE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), (idx)) ++#define sk_ASN1_STRING_TABLE_set(sk, idx, ptr) ((ASN1_STRING_TABLE *)OPENSSL_sk_set(ossl_check_ASN1_STRING_TABLE_sk_type(sk), (idx), ossl_check_ASN1_STRING_TABLE_type(ptr))) ++#define sk_ASN1_STRING_TABLE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr)) ++#define sk_ASN1_STRING_TABLE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_type(ptr), pnum) ++#define sk_ASN1_STRING_TABLE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk)) ++#define sk_ASN1_STRING_TABLE_dup(sk) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk))) ++#define sk_ASN1_STRING_TABLE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING_TABLE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_TABLE_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_TABLE_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_TABLE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_TABLE_sk_type(sk), ossl_check_ASN1_STRING_TABLE_compfunc_type(cmp))) ++ ++ ++/* 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 */ ++ ++/* ++ * The mysterious 'extern' that's passed to some macros is innocuous, ++ * and is there to quiet pre-C99 compilers that may complain about empty ++ * arguments in macro calls. ++ */ ++ ++# define DECLARE_ASN1_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_FUNCTIONS(type) \ ++ DECLARE_ASN1_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_attr(attr, type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, type) ++# define DECLARE_ASN1_ALLOC_FUNCTIONS(type) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_attr(extern, type) ++ ++# define DECLARE_ASN1_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) ++# define DECLARE_ASN1_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ DECLARE_ASN1_ITEM_attr(attr, itname) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(extern, type, itname, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(attr, type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_attr(attr, type, name, name) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(attr, type, name) \ ++ attr type *d2i_##name(type **a, const unsigned char **in, long len); \ ++ attr int i2d_##name(const type *a, unsigned char **out); ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_only(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(extern, type, name) ++ ++# define DECLARE_ASN1_NDEF_FUNCTION_attr(attr, name) \ ++ attr int i2d_##name##_NDEF(const name *a, unsigned char **out); ++# define DECLARE_ASN1_NDEF_FUNCTION(name) \ ++ DECLARE_ASN1_NDEF_FUNCTION_attr(extern, name) ++ ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(attr, type, name) \ ++ attr type *name##_new(void); \ ++ attr void name##_free(type *a); ++# define DECLARE_ASN1_ALLOC_FUNCTIONS_name(type, name) \ ++ DECLARE_ASN1_ALLOC_FUNCTIONS_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_attr(attr, type) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, type) ++# define DECLARE_ASN1_DUP_FUNCTION(type) \ ++ DECLARE_ASN1_DUP_FUNCTION_attr(extern, type) ++ ++# define DECLARE_ASN1_DUP_FUNCTION_name_attr(attr, type, name) \ ++ attr type *name##_dup(const type *a); ++# define DECLARE_ASN1_DUP_FUNCTION_name(type, name) \ ++ DECLARE_ASN1_DUP_FUNCTION_name_attr(extern, type, name) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_attr(attr, stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, stname) ++# define DECLARE_ASN1_PRINT_FUNCTION(stname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_attr(extern, stname) ++ ++# define DECLARE_ASN1_PRINT_FUNCTION_fname_attr(attr, stname, fname) \ ++ attr int fname##_print_ctx(BIO *out, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx); ++# define DECLARE_ASN1_PRINT_FUNCTION_fname(stname, fname) \ ++ DECLARE_ASN1_PRINT_FUNCTION_fname_attr(extern, stname, fname) ++ ++# define D2I_OF(type) type *(*)(type **,const unsigned char **,long) ++# define I2D_OF(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(const type *,unsigned char **) ++# define TYPEDEF_D2I2D_OF(type) TYPEDEF_D2I_OF(type); TYPEDEF_I2D_OF(type) ++ ++typedef void *d2i_of_void(void **, const unsigned char **, long); ++typedef int i2d_of_void(const void *, unsigned char **); ++ ++/*- ++ * 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. ++ * ++ */ ++ ++ ++/* ++ * 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_attr(attr, name) \ ++ attr const ASN1_ITEM * name##_it(void); ++# define DECLARE_ASN1_ITEM(name) \ ++ DECLARE_ASN1_ITEM_attr(extern, name) ++ ++/* 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 ++ ++/* Lower 8 bits are reserved as an output type specifier */ ++# define ASN1_DTFLGS_TYPE_MASK 0x0FUL ++# define ASN1_DTFLGS_RFC822 0x00UL ++# define ASN1_DTFLGS_ISO8601 0x01UL ++ ++/* ++ * 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) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_TYPE, ASN1_TYPE, ASN1_TYPE) ++#define sk_ASN1_TYPE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_value(sk, idx) ((ASN1_TYPE *)OPENSSL_sk_value(ossl_check_const_ASN1_TYPE_sk_type(sk), (idx))) ++#define sk_ASN1_TYPE_new(cmp) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new(ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++#define sk_ASN1_TYPE_new_null() ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_TYPE_new_reserve(cmp, n) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_TYPE_compfunc_type(cmp), (n))) ++#define sk_ASN1_TYPE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_TYPE_sk_type(sk), (n)) ++#define sk_ASN1_TYPE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_delete(sk, i) ((ASN1_TYPE *)OPENSSL_sk_delete(ossl_check_ASN1_TYPE_sk_type(sk), (i))) ++#define sk_ASN1_TYPE_delete_ptr(sk, ptr) ((ASN1_TYPE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_pop(sk) ((ASN1_TYPE *)OPENSSL_sk_pop(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_shift(sk) ((ASN1_TYPE *)OPENSSL_sk_shift(ossl_check_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_TYPE_sk_type(sk),ossl_check_ASN1_TYPE_freefunc_type(freefunc)) ++#define sk_ASN1_TYPE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), (idx)) ++#define sk_ASN1_TYPE_set(sk, idx, ptr) ((ASN1_TYPE *)OPENSSL_sk_set(ossl_check_ASN1_TYPE_sk_type(sk), (idx), ossl_check_ASN1_TYPE_type(ptr))) ++#define sk_ASN1_TYPE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr)) ++#define sk_ASN1_TYPE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_type(ptr), pnum) ++#define sk_ASN1_TYPE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_TYPE_sk_type(sk)) ++#define sk_ASN1_TYPE_dup(sk) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_TYPE_sk_type(sk))) ++#define sk_ASN1_TYPE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_TYPE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_copyfunc_type(copyfunc), ossl_check_ASN1_TYPE_freefunc_type(freefunc))) ++#define sk_ASN1_TYPE_set_cmp_func(sk, cmp) ((sk_ASN1_TYPE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_TYPE_sk_type(sk), ossl_check_ASN1_TYPE_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASN1_TYPE) ASN1_SEQUENCE_ANY; ++ ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(ASN1_SEQUENCE_ANY, ASN1_SEQUENCE_ANY) ++DECLARE_ASN1_ENCODE_FUNCTIONS_name(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_ALLOC_FUNCTIONS_name(ASN1_TYPE, ASN1_TYPE) ++DECLARE_ASN1_ENCODE_FUNCTIONS(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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_OBJECT, ASN1_OBJECT, ASN1_OBJECT) ++#define sk_ASN1_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_value(sk, idx) ((ASN1_OBJECT *)OPENSSL_sk_value(ossl_check_const_ASN1_OBJECT_sk_type(sk), (idx))) ++#define sk_ASN1_OBJECT_new(cmp) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new(ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++#define sk_ASN1_OBJECT_new_null() ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_OBJECT_new_reserve(cmp, n) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_OBJECT_compfunc_type(cmp), (n))) ++#define sk_ASN1_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_OBJECT_sk_type(sk), (n)) ++#define sk_ASN1_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_delete(sk, i) ((ASN1_OBJECT *)OPENSSL_sk_delete(ossl_check_ASN1_OBJECT_sk_type(sk), (i))) ++#define sk_ASN1_OBJECT_delete_ptr(sk, ptr) ((ASN1_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_pop(sk) ((ASN1_OBJECT *)OPENSSL_sk_pop(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_shift(sk) ((ASN1_OBJECT *)OPENSSL_sk_shift(ossl_check_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_OBJECT_sk_type(sk),ossl_check_ASN1_OBJECT_freefunc_type(freefunc)) ++#define sk_ASN1_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), (idx)) ++#define sk_ASN1_OBJECT_set(sk, idx, ptr) ((ASN1_OBJECT *)OPENSSL_sk_set(ossl_check_ASN1_OBJECT_sk_type(sk), (idx), ossl_check_ASN1_OBJECT_type(ptr))) ++#define sk_ASN1_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr)) ++#define sk_ASN1_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_type(ptr), pnum) ++#define sk_ASN1_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_OBJECT_sk_type(sk)) ++#define sk_ASN1_OBJECT_dup(sk) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_ASN1_OBJECT_sk_type(sk))) ++#define sk_ASN1_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_copyfunc_type(copyfunc), ossl_check_ASN1_OBJECT_freefunc_type(freefunc))) ++#define sk_ASN1_OBJECT_set_cmp_func(sk, cmp) ((sk_ASN1_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_OBJECT_sk_type(sk), ossl_check_ASN1_OBJECT_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(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); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_STRING) ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void ASN1_STRING_length_set(ASN1_STRING *x, int n); ++# endif ++int ASN1_STRING_type(const ASN1_STRING *x); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 unsigned char *ASN1_STRING_data(ASN1_STRING *x); ++# endif ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_INTEGER, ASN1_INTEGER, ASN1_INTEGER) ++#define sk_ASN1_INTEGER_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_value(sk, idx) ((ASN1_INTEGER *)OPENSSL_sk_value(ossl_check_const_ASN1_INTEGER_sk_type(sk), (idx))) ++#define sk_ASN1_INTEGER_new(cmp) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new(ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++#define sk_ASN1_INTEGER_new_null() ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_INTEGER_new_reserve(cmp, n) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_INTEGER_compfunc_type(cmp), (n))) ++#define sk_ASN1_INTEGER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_INTEGER_sk_type(sk), (n)) ++#define sk_ASN1_INTEGER_free(sk) OPENSSL_sk_free(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_delete(sk, i) ((ASN1_INTEGER *)OPENSSL_sk_delete(ossl_check_ASN1_INTEGER_sk_type(sk), (i))) ++#define sk_ASN1_INTEGER_delete_ptr(sk, ptr) ((ASN1_INTEGER *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_pop(sk) ((ASN1_INTEGER *)OPENSSL_sk_pop(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_shift(sk) ((ASN1_INTEGER *)OPENSSL_sk_shift(ossl_check_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_INTEGER_sk_type(sk),ossl_check_ASN1_INTEGER_freefunc_type(freefunc)) ++#define sk_ASN1_INTEGER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), (idx)) ++#define sk_ASN1_INTEGER_set(sk, idx, ptr) ((ASN1_INTEGER *)OPENSSL_sk_set(ossl_check_ASN1_INTEGER_sk_type(sk), (idx), ossl_check_ASN1_INTEGER_type(ptr))) ++#define sk_ASN1_INTEGER_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr)) ++#define sk_ASN1_INTEGER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_type(ptr), pnum) ++#define sk_ASN1_INTEGER_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_INTEGER_sk_type(sk)) ++#define sk_ASN1_INTEGER_dup(sk) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_dup(ossl_check_const_ASN1_INTEGER_sk_type(sk))) ++#define sk_ASN1_INTEGER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_INTEGER) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_copyfunc_type(copyfunc), ossl_check_ASN1_INTEGER_freefunc_type(freefunc))) ++#define sk_ASN1_INTEGER_set_cmp_func(sk, cmp) ((sk_ASN1_INTEGER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_INTEGER_sk_type(sk), ossl_check_ASN1_INTEGER_compfunc_type(cmp))) ++ ++ ++ ++DECLARE_ASN1_FUNCTIONS(ASN1_INTEGER) ++ASN1_INTEGER *d2i_ASN1_UINTEGER(ASN1_INTEGER **a, const unsigned char **pp, ++ long length); ++DECLARE_ASN1_DUP_FUNCTION(ASN1_INTEGER) ++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) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_OCTET_STRING) ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_UTF8STRING, ASN1_UTF8STRING, ASN1_UTF8STRING) ++#define sk_ASN1_UTF8STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_value(sk, idx) ((ASN1_UTF8STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), (idx))) ++#define sk_ASN1_UTF8STRING_new(cmp) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++#define sk_ASN1_UTF8STRING_new_null() ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_UTF8STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_UTF8STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_UTF8STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_UTF8STRING_sk_type(sk), (n)) ++#define sk_ASN1_UTF8STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_delete(sk, i) ((ASN1_UTF8STRING *)OPENSSL_sk_delete(ossl_check_ASN1_UTF8STRING_sk_type(sk), (i))) ++#define sk_ASN1_UTF8STRING_delete_ptr(sk, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_pop(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_pop(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_shift(sk) ((ASN1_UTF8STRING *)OPENSSL_sk_shift(ossl_check_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_UTF8STRING_sk_type(sk),ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc)) ++#define sk_ASN1_UTF8STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), (idx)) ++#define sk_ASN1_UTF8STRING_set(sk, idx, ptr) ((ASN1_UTF8STRING *)OPENSSL_sk_set(ossl_check_ASN1_UTF8STRING_sk_type(sk), (idx), ossl_check_ASN1_UTF8STRING_type(ptr))) ++#define sk_ASN1_UTF8STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr)) ++#define sk_ASN1_UTF8STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_type(ptr), pnum) ++#define sk_ASN1_UTF8STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_UTF8STRING_sk_type(sk)) ++#define sk_ASN1_UTF8STRING_dup(sk) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_UTF8STRING_sk_type(sk))) ++#define sk_ASN1_UTF8STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_UTF8STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_copyfunc_type(copyfunc), ossl_check_ASN1_UTF8STRING_freefunc_type(freefunc))) ++#define sk_ASN1_UTF8STRING_set_cmp_func(sk, cmp) ((sk_ASN1_UTF8STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_UTF8STRING_sk_type(sk), ossl_check_ASN1_UTF8STRING_compfunc_type(cmp))) ++ ++ ++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); ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_GENERALSTRING, ASN1_GENERALSTRING, ASN1_GENERALSTRING) ++#define sk_ASN1_GENERALSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_value(sk, idx) ((ASN1_GENERALSTRING *)OPENSSL_sk_value(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), (idx))) ++#define sk_ASN1_GENERALSTRING_new(cmp) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++#define sk_ASN1_GENERALSTRING_new_null() ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_GENERALSTRING_new_reserve(cmp, n) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_GENERALSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (n)) ++#define sk_ASN1_GENERALSTRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_delete(sk, i) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (i))) ++#define sk_ASN1_GENERALSTRING_delete_ptr(sk, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_pop(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_pop(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_shift(sk) ((ASN1_GENERALSTRING *)OPENSSL_sk_shift(ossl_check_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_GENERALSTRING_sk_type(sk),ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc)) ++#define sk_ASN1_GENERALSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), (idx)) ++#define sk_ASN1_GENERALSTRING_set(sk, idx, ptr) ((ASN1_GENERALSTRING *)OPENSSL_sk_set(ossl_check_ASN1_GENERALSTRING_sk_type(sk), (idx), ossl_check_ASN1_GENERALSTRING_type(ptr))) ++#define sk_ASN1_GENERALSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr)) ++#define sk_ASN1_GENERALSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_type(ptr), pnum) ++#define sk_ASN1_GENERALSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk)) ++#define sk_ASN1_GENERALSTRING_dup(sk) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk))) ++#define sk_ASN1_GENERALSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_GENERALSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_copyfunc_type(copyfunc), ossl_check_ASN1_GENERALSTRING_freefunc_type(freefunc))) ++#define sk_ASN1_GENERALSTRING_set_cmp_func(sk, cmp) ((sk_ASN1_GENERALSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_GENERALSTRING_sk_type(sk), ossl_check_ASN1_GENERALSTRING_compfunc_type(cmp))) ++ ++ ++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_DUP_FUNCTION(ASN1_TIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_UTCTIME) ++DECLARE_ASN1_DUP_FUNCTION(ASN1_GENERALIZEDTIME) ++ ++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, const 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(const type, x))) ++ ++void *ASN1_item_dup(const ASN1_ITEM *it, const void *x); ++int ASN1_item_sign_ex(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, const ASN1_OCTET_STRING *id, ++ EVP_PKEY *pkey, const EVP_MD *md, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int ASN1_item_verify_ex(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ const ASN1_OCTET_STRING *id, EVP_PKEY *pkey, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* 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_ex(const ASN1_ITEM *it, FILE *in, void *x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x); ++int ASN1_i2d_fp(i2d_of_void *i2d, FILE *out, const void *x); ++ ++# define ASN1_i2d_fp_of(type,i2d,out,x) \ ++ (ASN1_i2d_fp(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_fp(const ASN1_ITEM *it, FILE *out, const 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_ex(const ASN1_ITEM *it, BIO *in, void *pval, ++ OSSL_LIB_CTX *libctx, const char *propq); ++void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *pval); ++int ASN1_i2d_bio(i2d_of_void *i2d, BIO *out, const void *x); ++ ++# define ASN1_i2d_bio_of(type,i2d,out,x) \ ++ (ASN1_i2d_bio(CHECKED_I2D_OF(type, i2d), \ ++ out, \ ++ CHECKED_PTR_OF(const type, x))) ++ ++int ASN1_item_i2d_bio(const ASN1_ITEM *it, BIO *out, const void *x); ++BIO *ASN1_item_i2d_mem_bio(const ASN1_ITEM *it, const ASN1_VALUE *val); ++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 *bp, const ASN1_TIME *tm); ++int ASN1_TIME_print_ex(BIO *bp, const ASN1_TIME *tm, unsigned long flags); ++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); ++ASN1_VALUE *ASN1_item_new_ex(const ASN1_ITEM *it, OSSL_LIB_CTX *libctx, ++ const char *propq); ++void ASN1_item_free(ASN1_VALUE *val, const ASN1_ITEM *it); ++ASN1_VALUE *ASN1_item_d2i_ex(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *ASN1_item_d2i(ASN1_VALUE **val, const unsigned char **in, ++ long len, const ASN1_ITEM *it); ++int ASN1_item_i2d(const ASN1_VALUE *val, unsigned char **out, const ASN1_ITEM *it); ++int ASN1_item_ndef_i2d(const 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, const 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); ++ ++/* cannot constify val because of CMS_stream() */ ++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); ++/* cannot constify val because of CMS_dataFinal() */ ++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); ++int SMIME_write_ASN1_ex(BIO *bio, ASN1_VALUE *val, BIO *data, int flags, ++ int ctype_nid, int econt_nid, ++ STACK_OF(X509_ALGOR) *mdalgs, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ASN1_VALUE *SMIME_read_ASN1(BIO *bio, BIO **bcont, const ASN1_ITEM *it); ++ASN1_VALUE *SMIME_read_ASN1_ex(BIO *bio, int flags, BIO **bcont, ++ const ASN1_ITEM *it, ASN1_VALUE **x, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++ ++/* Legacy compatibility */ ++# 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_FUNCTIONS_const(type) DECLARE_ASN1_FUNCTIONS(type) ++# define DECLARE_ASN1_ENCODE_FUNCTIONS_const(type, name) \ ++ DECLARE_ASN1_ENCODE_FUNCTIONS(type, name) ++# define I2D_OF_const(type) I2D_OF(type) ++# define ASN1_dup_of_const(type,i2d,d2i,x) ASN1_dup_of(type,i2d,d2i,x) ++# define ASN1_i2d_fp_of_const(type,i2d,out,x) ASN1_i2d_fp_of(type,i2d,out,x) ++# define ASN1_i2d_bio_of_const(type,i2d,out,x) ASN1_i2d_bio_of(type,i2d,out,x) ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1t.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1t.h +new file mode 100644 +index 00000000..74ba47d0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/asn1t.h +@@ -0,0 +1,946 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/asn1t.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ASN1T_H ++# define OPENSSL_ASN1T_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ASN1T_H ++# endif ++ ++# 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 ++ ++/*- ++ * These are the possible values for the itype field of the ++ * ASN1_ITEM structure and determine how it 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 ++ * data and 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 ++/* unused value 0x3 */ ++# define ASN1_ITYPE_EXTERN 0x4 ++# define ASN1_ITYPE_MSTRING 0x5 ++# define ASN1_ITYPE_NDEF_SEQUENCE 0x6 ++ ++/* 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; \ ++ } ++ ++/* 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, NULL}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_const_cb(tname, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \ ++ ASN1_SEQUENCE(tname) ++ ++# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \ ++ static const ASN1_AUX tname##_aux = \ ++ {NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \ ++ 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, NULL}; \ ++ 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), NULL}; \ ++ 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_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, NULL}; \ ++ 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 */ ++ ++# 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 } ++ ++/* 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[] ++ ++# 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) ++ ++# 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; /* further data and type-specific functions */ ++ /* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */ ++ long size; /* Structure size (usually) */ ++ const char *sname; /* Structure name */ ++}; ++ ++/* ++ * 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_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len, ++ const ASN1_ITEM *it, int tag, int aclass, char opt, ++ ASN1_TLC *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int ASN1_ex_i2d(const 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 int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it, ++ OSSL_LIB_CTX *libctx, const char *propq); ++typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it); ++ ++typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval, ++ int indent, const char *fname, ++ const ASN1_PCTX *pctx); ++ ++typedef int ASN1_primitive_i2c(const 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, const 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_ex_new_ex_func *asn1_ex_new_ex; ++ ASN1_ex_d2i_ex *asn1_ex_d2i_ex; ++} 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. ++ * For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and ++ * ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter ++ * 'in' is provided to make clear statically that its input is not modified. If ++ * and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set. ++ */ ++ ++typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it, ++ void *exarg); ++typedef int ASN1_aux_const_cb(int operation, const 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; /* Offset of lock value */ ++ ASN1_aux_cb *asn1_cb; ++ int enc_offset; /* Offset of ASN1_ENCODING structure */ ++ ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */ ++} 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 ++/* Use the new asn1_const_cb */ ++# define ASN1_AFLG_CONST_CB 8 ++ ++/* 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 ++# define ASN1_OP_DUP_PRE 14 ++# define ASN1_OP_DUP_POST 15 ++# define ASN1_OP_GET0_LIBCTX 16 ++# define ASN1_OP_GET0_PROPQ 17 ++ ++/* 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\ ++ } ++ ++# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \ ++ int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_ndef_i2d((const 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(const stname *a, unsigned char **out) \ ++ { \ ++ return ASN1_item_i2d((const ASN1_VALUE *)a, out, \ ++ ASN1_ITEM_rptr(stname)); \ ++ } ++ ++# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \ ++ stname * stname##_dup(const 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, const stname *x, int indent, \ ++ const ASN1_PCTX *pctx) \ ++ { \ ++ return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \ ++ ASN1_ITEM_rptr(itname), pctx); \ ++ } ++ ++/* 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* ++ * 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE) ++#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx))) ++#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n))) ++#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n)) ++#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i))) ++#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc)) ++#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx)) ++#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr))) ++#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)) ++#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum) ++#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk)) ++#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk))) ++#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc))) ++#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp))) ++ ++ ++ ++/* 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(const ASN1_VALUE **pval, unsigned char **out, ++ const ASN1_ITEM *it, int tag, int aclass); ++ ++/* Legacy compatibility */ ++# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name) ++# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \ ++ IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) ++ ++#ifdef __cplusplus ++} ++#endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/bio.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/bio.h +new file mode 100644 +index 00000000..7e527184 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/bio.h +@@ -0,0 +1,886 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/bio.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_BIO_H ++# define OPENSSL_BIO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_BIO_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++# include ++ ++# 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_CORE_TO_PROV (25|BIO_TYPE_SOURCE_SINK) ++ ++#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 timed 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 ++ ++/* ++ * internal BIO: ++ * # define BIO_CTRL_SET_KTLS_SEND 72 ++ * # define BIO_CTRL_SET_KTLS_SEND_CTRL_MSG 74 ++ * # define BIO_CTRL_CLEAR_KTLS_CTRL_MSG 75 ++ */ ++ ++# define BIO_CTRL_GET_KTLS_SEND 73 ++# define BIO_CTRL_GET_KTLS_RECV 76 ++ ++# define BIO_CTRL_DGRAM_SCTP_WAIT_FOR_DRY 77 ++# define BIO_CTRL_DGRAM_SCTP_MSG_WAITING 78 ++ ++/* BIO_f_prefix controls */ ++# define BIO_CTRL_SET_PREFIX 79 ++# define BIO_CTRL_SET_INDENT 80 ++# define BIO_CTRL_GET_INDENT 81 ++ ++# ifndef OPENSSL_NO_KTLS ++# define BIO_get_ktls_send(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_SEND, 0, NULL) > 0) ++# define BIO_get_ktls_recv(b) \ ++ (BIO_ctrl(b, BIO_CTRL_GET_KTLS_RECV, 0, NULL) > 0) ++# else ++# define BIO_get_ktls_send(b) (0) ++# define BIO_get_ktls_recv(b) (0) ++# endif ++ ++/* modifiers */ ++# define BIO_FP_READ 0x02 ++# define BIO_FP_WRITE 0x04 ++# define BIO_FP_APPEND 0x08 ++# define BIO_FP_TEXT 0x10 ++ ++# define BIO_FLAGS_READ 0x01 ++# define BIO_FLAGS_WRITE 0x02 ++# define BIO_FLAGS_IO_SPECIAL 0x04 ++# define BIO_FLAGS_RWS (BIO_FLAGS_READ|BIO_FLAGS_WRITE|BIO_FLAGS_IO_SPECIAL) ++# define BIO_FLAGS_SHOULD_RETRY 0x08 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* This #define was replaced by an internal constant and should not be used. */ ++# 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 ++ ++/* the BIO FLAGS values 0x1000 to 0x4000 are reserved for internal KTLS flags */ ++ ++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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef long (*BIO_callback_fn)(BIO *b, int oper, const char *argp, int argi, ++ long argl, long ret); ++OSSL_DEPRECATEDIN_3_0 BIO_callback_fn BIO_get_callback(const BIO *b); ++OSSL_DEPRECATEDIN_3_0 void BIO_set_callback(BIO *b, BIO_callback_fn callback); ++OSSL_DEPRECATEDIN_3_0 long BIO_debug_callback(BIO *bio, int cmd, ++ const char *argp, int argi, ++ long argl, long ret); ++# endif ++ ++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_ex BIO_get_callback_ex(const BIO *b); ++void BIO_set_callback_ex(BIO *b, BIO_callback_fn_ex callback); ++long BIO_debug_callback_ex(BIO *bio, int oper, const char *argp, size_t len, ++ int argi, long argl, int ret, size_t *processed); ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(BIO, BIO, BIO) ++#define sk_BIO_num(sk) OPENSSL_sk_num(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_value(sk, idx) ((BIO *)OPENSSL_sk_value(ossl_check_const_BIO_sk_type(sk), (idx))) ++#define sk_BIO_new(cmp) ((STACK_OF(BIO) *)OPENSSL_sk_new(ossl_check_BIO_compfunc_type(cmp))) ++#define sk_BIO_new_null() ((STACK_OF(BIO) *)OPENSSL_sk_new_null()) ++#define sk_BIO_new_reserve(cmp, n) ((STACK_OF(BIO) *)OPENSSL_sk_new_reserve(ossl_check_BIO_compfunc_type(cmp), (n))) ++#define sk_BIO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_BIO_sk_type(sk), (n)) ++#define sk_BIO_free(sk) OPENSSL_sk_free(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_zero(sk) OPENSSL_sk_zero(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_delete(sk, i) ((BIO *)OPENSSL_sk_delete(ossl_check_BIO_sk_type(sk), (i))) ++#define sk_BIO_delete_ptr(sk, ptr) ((BIO *)OPENSSL_sk_delete_ptr(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr))) ++#define sk_BIO_push(sk, ptr) OPENSSL_sk_push(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_pop(sk) ((BIO *)OPENSSL_sk_pop(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_shift(sk) ((BIO *)OPENSSL_sk_shift(ossl_check_BIO_sk_type(sk))) ++#define sk_BIO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_BIO_sk_type(sk),ossl_check_BIO_freefunc_type(freefunc)) ++#define sk_BIO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), (idx)) ++#define sk_BIO_set(sk, idx, ptr) ((BIO *)OPENSSL_sk_set(ossl_check_BIO_sk_type(sk), (idx), ossl_check_BIO_type(ptr))) ++#define sk_BIO_find(sk, ptr) OPENSSL_sk_find(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr)) ++#define sk_BIO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_BIO_sk_type(sk), ossl_check_BIO_type(ptr), pnum) ++#define sk_BIO_sort(sk) OPENSSL_sk_sort(ossl_check_BIO_sk_type(sk)) ++#define sk_BIO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_BIO_sk_type(sk)) ++#define sk_BIO_dup(sk) ((STACK_OF(BIO) *)OPENSSL_sk_dup(ossl_check_const_BIO_sk_type(sk))) ++#define sk_BIO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(BIO) *)OPENSSL_sk_deep_copy(ossl_check_const_BIO_sk_type(sk), ossl_check_BIO_copyfunc_type(copyfunc), ossl_check_BIO_freefunc_type(freefunc))) ++#define sk_BIO_set_cmp_func(sk, cmp) ((sk_BIO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_BIO_sk_type(sk), ossl_check_BIO_compfunc_type(cmp))) ++ ++ ++ ++/* Prefix and suffix callback in ASN1 BIO */ ++typedef int asn1_ps_func (BIO *b, unsigned char **pbuf, int *plen, ++ void *parg); ++ ++typedef void (*BIO_dgram_sctp_notification_handler_fn) (BIO *b, ++ void *context, ++ void *buf); ++# 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) ++# endif /* OPENSSL_NO_SOCK */ ++ ++# define BIO_do_connect(b) BIO_do_handshake(b) ++# define BIO_do_accept(b) BIO_do_handshake(b) ++ ++# define BIO_do_handshake(b) BIO_ctrl(b,BIO_C_DO_STATE_MACHINE,0,NULL) ++ ++/* BIO_s_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) ++ ++/* ctrl macros for BIO_f_prefix */ ++# define BIO_set_prefix(b,p) BIO_ctrl((b), BIO_CTRL_SET_PREFIX, 0, (void *)(p)) ++# define BIO_set_indent(b,i) BIO_ctrl((b), BIO_CTRL_SET_INDENT, (i), NULL) ++# define BIO_get_indent(b) BIO_ctrl((b), BIO_CTRL_GET_INDENT, 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(const 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); ++BIO *BIO_new_from_core_bio(OSSL_LIB_CTX *libctx, OSSL_CORE_BIO *corebio); ++# ifndef OPENSSL_NO_STDIO ++BIO *BIO_new_fp(FILE *stream, int close_flag); ++# endif ++BIO *BIO_new_ex(OSSL_LIB_CTX *libctx, const BIO_METHOD *method); ++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_get_line(BIO *bio, 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); ++ ++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_readbuffer(void); ++const BIO_METHOD *BIO_f_linebuffer(void); ++const BIO_METHOD *BIO_f_nbio_test(void); ++const BIO_METHOD *BIO_f_prefix(void); ++const BIO_METHOD *BIO_s_core(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, ++ BIO_dgram_sctp_notification_handler_fn handle_notifications, ++ 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); ++int BIO_socket_wait(int fd, int for_read, time_t max_time); ++# endif ++int BIO_wait(BIO *bio, time_t max_time, unsigned int nap_milliseconds); ++int BIO_do_connect_retry(BIO *bio, int timeout, int nap_milliseconds); ++ ++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 void *s, int len); ++int BIO_dump_indent_cb(int (*cb) (const void *data, size_t len, void *u), ++ void *u, const void *s, int len, int indent); ++int BIO_dump(BIO *b, const void *bytes, int len); ++int BIO_dump_indent(BIO *b, const void *bytes, int len, int indent); ++# ifndef OPENSSL_NO_STDIO ++int BIO_dump_fp(FILE *fp, const void *s, int len); ++int BIO_dump_indent_fp(FILE *fp, const void *s, int len, int indent); ++# endif ++int BIO_hex_string(BIO *out, int indent, int width, const void *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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define BIO_sock_cleanup() while(0) continue ++# endif ++int BIO_set_tcp_ndelay(int sock, int turn_on); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 struct hostent *BIO_gethostbyname(const char *name); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_port(const char *str, unsigned short *port_ptr); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_host_ip(const char *str, unsigned char *ip); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_get_accept_socket(char *host_port, int mode); ++OSSL_DEPRECATEDIN_1_1_0 int BIO_accept(int sock, char **ip_port); ++# endif ++ ++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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cmp.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cmp.h +new file mode 100644 +index 00000000..0d184394 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cmp.h +@@ -0,0 +1,592 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cmp.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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_CMP_H ++# define OPENSSL_CMP_H ++ ++# include ++# ifndef OPENSSL_NO_CMP ++ ++# include ++# include ++# include ++# include ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CMP_PVNO 2 ++ ++/*- ++ * PKIFailureInfo ::= BIT STRING { ++ * -- since we can fail in more than one way! ++ * -- More codes may be added in the future if/when required. ++ * badAlg (0), ++ * -- unrecognized or unsupported Algorithm Identifier ++ * badMessageCheck (1), ++ * -- integrity check failed (e.g., signature did not verify) ++ * badRequest (2), ++ * -- transaction not permitted or supported ++ * badTime (3), ++ * -- messageTime was not sufficiently close to the system time, ++ * -- as defined by local policy ++ * badCertId (4), ++ * -- no certificate could be found matching the provided criteria ++ * badDataFormat (5), ++ * -- the data submitted has the wrong format ++ * wrongAuthority (6), ++ * -- the authority indicated in the request is different from the ++ * -- one creating the response token ++ * incorrectData (7), ++ * -- the requester's data is incorrect (for notary services) ++ * missingTimeStamp (8), ++ * -- when the timestamp is missing but should be there ++ * -- (by policy) ++ * badPOP (9), ++ * -- the proof-of-possession failed ++ * certRevoked (10), ++ * -- the certificate has already been revoked ++ * certConfirmed (11), ++ * -- the certificate has already been confirmed ++ * wrongIntegrity (12), ++ * -- invalid integrity, password based instead of signature or ++ * -- vice versa ++ * badRecipientNonce (13), ++ * -- invalid recipient nonce, either missing or wrong value ++ * timeNotAvailable (14), ++ * -- the TSA's time source is not available ++ * unacceptedPolicy (15), ++ * -- the requested TSA policy is not supported by the TSA. ++ * unacceptedExtension (16), ++ * -- the requested extension is not supported by the TSA. ++ * addInfoNotAvailable (17), ++ * -- the additional information requested could not be ++ * -- understood or is not available ++ * badSenderNonce (18), ++ * -- invalid sender nonce, either missing or wrong size ++ * badCertTemplate (19), ++ * -- invalid cert. template or missing mandatory information ++ * signerNotTrusted (20), ++ * -- signer of the message unknown or not trusted ++ * transactionIdInUse (21), ++ * -- the transaction identifier is already in use ++ * unsupportedVersion (22), ++ * -- the version of the message is not supported ++ * notAuthorized (23), ++ * -- the sender was not authorized to make the preceding ++ * -- request or perform the preceding action ++ * systemUnavail (24), ++ * -- the request cannot be handled due to system unavailability ++ * systemFailure (25), ++ * -- the request cannot be handled due to system failure ++ * duplicateCertReq (26) ++ * -- certificate cannot be issued because a duplicate ++ * -- certificate already exists ++ * } ++ */ ++# define OSSL_CMP_PKIFAILUREINFO_badAlg 0 ++# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1 ++# define OSSL_CMP_PKIFAILUREINFO_badRequest 2 ++# define OSSL_CMP_PKIFAILUREINFO_badTime 3 ++# define OSSL_CMP_PKIFAILUREINFO_badCertId 4 ++# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5 ++# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6 ++# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7 ++# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8 ++# define OSSL_CMP_PKIFAILUREINFO_badPOP 9 ++# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10 ++# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11 ++# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12 ++# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13 ++# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15 ++# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16 ++# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17 ++# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18 ++# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19 ++# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20 ++# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21 ++# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22 ++# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23 ++# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24 ++# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25 ++# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX 26 ++# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \ ++ ((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1) ++# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX ++# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int ++# endif ++ ++typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO; ++ ++# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0) ++# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1) ++# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2) ++# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3) ++# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4) ++# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5) ++# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6) ++# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7) ++# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8) ++# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9) ++# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10) ++# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11) ++# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12) ++# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13) ++# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15) ++# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16) ++# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17) ++# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18) ++# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19) ++# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20) ++# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21) ++# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22) ++# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23) ++# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24) ++# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25) ++# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26) ++ ++/*- ++ * PKIStatus ::= INTEGER { ++ * accepted (0), ++ * -- you got exactly what you asked for ++ * grantedWithMods (1), ++ * -- you got something like what you asked for; the ++ * -- requester is responsible for ascertaining the differences ++ * rejection (2), ++ * -- you don't get it, more information elsewhere in the message ++ * waiting (3), ++ * -- the request body part has not yet been processed; expect to ++ * -- hear more later (note: proper handling of this status ++ * -- response MAY use the polling req/rep PKIMessages specified ++ * -- in Section 5.3.22; alternatively, polling in the underlying ++ * -- transport layer MAY have some utility in this regard) ++ * revocationWarning (4), ++ * -- this message contains a warning that a revocation is ++ * -- imminent ++ * revocationNotification (5), ++ * -- notification that a revocation has occurred ++ * keyUpdateWarning (6) ++ * -- update already done for the oldCertId specified in ++ * -- CertReqMsg ++ * } ++ */ ++# define OSSL_CMP_PKISTATUS_accepted 0 ++# define OSSL_CMP_PKISTATUS_grantedWithMods 1 ++# define OSSL_CMP_PKISTATUS_rejection 2 ++# define OSSL_CMP_PKISTATUS_waiting 3 ++# define OSSL_CMP_PKISTATUS_revocationWarning 4 ++# define OSSL_CMP_PKISTATUS_revocationNotification 5 ++# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6 ++ ++typedef ASN1_INTEGER OSSL_CMP_PKISTATUS; ++DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS) ++ ++# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0 ++# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1 ++ ++/* data type declarations */ ++typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX; ++typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER) ++typedef struct ossl_cmp_msg_st OSSL_CMP_MSG; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG) ++DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG) ++typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS) ++#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))) ++#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)) ++#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)) ++#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))) ++#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV; ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV) ++#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n)) ++#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i))) ++#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx)) ++#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr))) ++#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)) ++#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum) ++#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)) ++#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))) ++#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT; ++typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI; ++DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI) ++#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n)) ++#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i))) ++#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx)) ++#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr))) ++#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)) ++#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum) ++#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)) ++#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))) ++#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE) ++#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp))) ++ ++typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP; ++typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT; ++typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE; ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE) ++#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx))) ++#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n))) ++#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n)) ++#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i))) ++#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)) ++#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx)) ++#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))) ++#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)) ++#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum) ++#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)) ++#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))) ++#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))) ++#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp))) ++ ++typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT; ++ ++/* ++ * function DECLARATIONS ++ */ ++ ++/* from cmp_asn.c */ ++OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value); ++void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type, ++ ASN1_TYPE *value); ++ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav); ++ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav); ++int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p, ++ OSSL_CMP_ITAV *itav); ++void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav); ++void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg); ++ ++/* from cmp_ctx.c */ ++OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx); ++/* CMP general options: */ ++# define OSSL_CMP_OPT_LOG_VERBOSITY 0 ++/* CMP transfer options: */ ++# define OSSL_CMP_OPT_KEEP_ALIVE 10 ++# define OSSL_CMP_OPT_MSG_TIMEOUT 11 ++# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12 ++/* CMP request options: */ ++# define OSSL_CMP_OPT_VALIDITY_DAYS 20 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21 ++# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22 ++# define OSSL_CMP_OPT_POLICIES_CRITICAL 23 ++# define OSSL_CMP_OPT_POPO_METHOD 24 ++# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25 ++# define OSSL_CMP_OPT_DISABLE_CONFIRM 26 ++# define OSSL_CMP_OPT_REVOCATION_REASON 27 ++/* CMP protection options: */ ++# define OSSL_CMP_OPT_UNPROTECTED_SEND 30 ++# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31 ++# define OSSL_CMP_OPT_OWF_ALGNID 32 ++# define OSSL_CMP_OPT_MAC_ALGNID 33 ++# define OSSL_CMP_OPT_DIGEST_ALGNID 34 ++# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35 ++# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36 ++int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val); ++int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt); ++/* CMP-specific callback for logging and outputting the error queue: */ ++int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb); ++# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \ ++ OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level) ++void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx); ++/* message transfer: */ ++int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path); ++int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address); ++int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port); ++int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name); ++int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names); ++int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb); ++int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx); ++typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb); ++int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx); ++/* server authentication: */ ++int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store); ++X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs); ++STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx); ++/* client authentication: */ ++int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted, ++ STACK_OF(X509) *candidates); ++int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey); ++int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx, ++ const unsigned char *ref, int len); ++int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx, const unsigned char *sec, ++ const int len); ++/* CMP message header and extra certificates: */ ++int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx, ++ STACK_OF(X509) *extraCertsOut); ++/* certificate template: */ ++int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey); ++EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv); ++int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name); ++int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx, ++ const GENERAL_NAME *name); ++int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts); ++int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo); ++int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert); ++int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr); ++/* misc body contents: */ ++int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav); ++/* certificate confirmation: */ ++typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert, ++ int fail_info, const char **txt); ++int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info, ++ const char **text); ++int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb); ++int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg); ++void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx); ++/* result fetching: */ ++int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx); ++OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx); ++# define OSSL_CMP_PKISI_BUFLEN 1024 ++X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx); ++STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx); ++int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *id); ++int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx, ++ const ASN1_OCTET_STRING *nonce); ++ ++/* from cmp_status.c */ ++char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf, ++ size_t bufsize); ++char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo, ++ char *buf, size_t bufsize); ++OSSL_CMP_PKISI * ++OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text); ++ ++/* from cmp_hdr.c */ ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const ++ OSSL_CMP_PKIHEADER *hdr); ++ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr); ++ ++/* from cmp_msg.c */ ++OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg); ++int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg); ++OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid); ++OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg); ++OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg); ++int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg); ++ ++/* from cmp_vfy.c */ ++int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg); ++int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx, ++ X509_STORE *trusted_store, X509 *cert); ++ ++/* from cmp_http.c */ ++OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx, ++ const OSSL_CMP_MSG *req); ++ ++/* from cmp_server.c */ ++typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX; ++OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx, ++ const OSSL_CMP_MSG *req); ++OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq); ++void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t) ++ (OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId, ++ const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr, ++ X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs); ++typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const STACK_OF(OSSL_CMP_ITAV) *in, ++ STACK_OF(OSSL_CMP_ITAV) **out); ++typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ const OSSL_CMP_PKISI *statusInfo, ++ const ASN1_INTEGER *errorCode, ++ const OSSL_CMP_PKIFREETEXT *errDetails); ++typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, ++ int certReqId, ++ const ASN1_OCTET_STRING *certHash, ++ const OSSL_CMP_PKISI *si); ++typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx, ++ const OSSL_CMP_MSG *req, int certReqId, ++ OSSL_CMP_MSG **certReq, ++ int64_t *check_after); ++int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx, ++ OSSL_CMP_SRV_cert_request_cb_t process_cert_request, ++ OSSL_CMP_SRV_rr_cb_t process_rr, ++ OSSL_CMP_SRV_genm_cb_t process_genm, ++ OSSL_CMP_SRV_error_cb_t process_error, ++ OSSL_CMP_SRV_certConf_cb_t process_certConf, ++ OSSL_CMP_SRV_pollReq_cb_t process_pollReq); ++OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx); ++int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val); ++int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx, ++ int val); ++ ++/* from cmp_client.c */ ++X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm); ++# define OSSL_CMP_IR 0 ++# define OSSL_CMP_CR 2 ++# define OSSL_CMP_P10CR 4 ++# define OSSL_CMP_KUR 7 ++# define OSSL_CMP_exec_IR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL) ++# define OSSL_CMP_exec_CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL) ++# define OSSL_CMP_exec_P10CR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL) ++# define OSSL_CMP_exec_KUR_ses(ctx) \ ++ OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL) ++int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type, ++ const OSSL_CRMF_MSG *crm, int *checkAfter); ++int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx); ++STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CMP) */ ++#endif /* !defined(OPENSSL_CMP_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cms.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cms.h +new file mode 100644 +index 00000000..3b453e6a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/cms.h +@@ -0,0 +1,493 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/cms.h.in ++ * ++ * Copyright 2008-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CMS_H ++# define OPENSSL_CMS_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CMS_H ++# endif ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo) ++#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx))) ++#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n)) ++#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i))) ++#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc)) ++#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx)) ++#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr))) ++#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)) ++#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum) ++#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk)) ++#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk))) ++#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc))) ++#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey) ++#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx))) ++#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n)) ++#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i))) ++#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)) ++#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx)) ++#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr))) ++#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)) ++#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum) ++#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)) ++#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))) ++#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))) ++#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo) ++#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx))) ++#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n))) ++#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n)) ++#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i))) ++#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)) ++#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx)) ++#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr))) ++#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)) ++#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum) ++#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk)) ++#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk))) ++#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))) ++#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice) ++#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx))) ++#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null()) ++#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n))) ++#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n)) ++#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i))) ++#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)) ++#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx)) ++#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr))) ++#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)) ++#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum) ++#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)) ++#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))) ++#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))) ++#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo) ++DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest) ++DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo) ++ ++CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++# 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 ++# define CMS_CADES 0x100000 ++# define CMS_USE_ORIGINATOR_KEYID 0x200000 ++ ++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 OPENSSL_PEM_H ++DECLARE_PEM_rw(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); ++CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci); ++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_ex(X509 *signcert, EVP_PKEY *pkey, ++ STACK_OF(X509) *certs, BIO *data, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md, ++ unsigned int flags, OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, ++ const unsigned char *key, ++ size_t keylen, unsigned int flags, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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); ++CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, unsigned int flags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk, ++ X509 *cert, X509 *peer); ++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_AuthEnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo * ++CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *ctx, ++ const char *propq); ++CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher); ++CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms, ++ X509 *recip, unsigned int flags); ++CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip, ++ EVP_PKEY *originatorPrivKey, X509 * originator, 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(const 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(const 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); ++CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex( ++ unsigned char *id, int idlen, int allorfirst, ++ STACK_OF(GENERAL_NAMES) *receiptList, ++ STACK_OF(GENERAL_NAMES) *receiptsTo, ++ OSSL_LIB_CTX *ctx); ++ ++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); ++int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer); ++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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/conf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/conf.h +new file mode 100644 +index 00000000..44989929 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/conf.h +@@ -0,0 +1,211 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/conf.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONF_H ++# define OPENSSL_CONF_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CONF_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct { ++ char *section; ++ char *name; ++ char *value; ++} CONF_VALUE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE) ++#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx))) ++#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp))) ++#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null()) ++#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n))) ++#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n)) ++#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i))) ++#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc)) ++#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx)) ++#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr))) ++#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)) ++#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum) ++#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk)) ++#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk))) ++#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc))) ++#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp))) ++DEFINE_LHASH_OF_INTERNAL(CONF_VALUE); ++#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp))) ++#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr))) ++#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out) ++#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh)) ++#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl) ++#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn)) ++ ++ ++struct conf_st; ++struct conf_method_st; ++typedef struct conf_method_st CONF_METHOD; ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include ++# endif ++ ++/* Module definitions */ ++typedef struct conf_imodule_st CONF_IMODULE; ++typedef struct conf_module_st CONF_MODULE; ++ ++STACK_OF(CONF_MODULE); ++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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name); ++#endif ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ */ ++ ++CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth); ++OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf); ++CONF *NCONF_new(CONF_METHOD *meth); ++CONF_METHOD *NCONF_default(void); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void); ++#endif ++void NCONF_free(CONF *conf); ++void NCONF_free_data(CONF *conf); ++ ++int NCONF_load(CONF *conf, const char *file, long *eline); ++# ifndef OPENSSL_NO_STDIO ++int NCONF_load_fp(CONF *conf, FILE *fp, long *eline); ++# endif ++int NCONF_load_bio(CONF *conf, BIO *bp, long *eline); ++STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf); ++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_ex(OSSL_LIB_CTX *libctx, const char *filename, ++ 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/configuration.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/configuration.h +new file mode 100644 +index 00000000..51a28478 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/configuration.h +@@ -0,0 +1,137 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl ++ * via Makefile.in ++ * ++ * Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CONFIGURATION_H ++# define OPENSSL_CONFIGURATION_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifdef OPENSSL_ALGORITHM_DEFINES ++# error OPENSSL_ALGORITHM_DEFINES no longer supported ++# endif ++ ++/* ++ * OpenSSL was configured with the following options: ++ */ ++ ++# define OPENSSL_CONFIGURED_API 30000 ++# ifndef OPENSSL_RAND_SEED_OS ++# define OPENSSL_RAND_SEED_OS ++# endif ++# ifndef OPENSSL_THREADS ++# define OPENSSL_THREADS ++# endif ++# ifndef OPENSSL_NO_AFALGENG ++# define OPENSSL_NO_AFALGENG ++# endif ++# ifndef OPENSSL_NO_ASAN ++# define OPENSSL_NO_ASAN ++# endif ++# ifndef OPENSSL_NO_ASM ++# define OPENSSL_NO_ASM ++# endif ++# ifndef OPENSSL_NO_COMP ++# define OPENSSL_NO_COMP ++# 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_KTLS ++# define OPENSSL_NO_KTLS ++# endif ++# ifndef OPENSSL_NO_LOADERENG ++# define OPENSSL_NO_LOADERENG ++# endif ++# ifndef OPENSSL_NO_MD2 ++# define OPENSSL_NO_MD2 ++# endif ++# ifndef OPENSSL_NO_MSAN ++# define OPENSSL_NO_MSAN ++# endif ++# ifndef OPENSSL_NO_RC5 ++# define OPENSSL_NO_RC5 ++# endif ++# ifndef OPENSSL_NO_SCTP ++# define OPENSSL_NO_SCTP ++# endif ++# ifndef OPENSSL_NO_SSL3 ++# define OPENSSL_NO_SSL3 ++# endif ++# ifndef OPENSSL_NO_SSL3_METHOD ++# define OPENSSL_NO_SSL3_METHOD ++# endif ++# ifndef OPENSSL_NO_TRACE ++# define OPENSSL_NO_TRACE ++# endif ++# ifndef OPENSSL_NO_UBSAN ++# define OPENSSL_NO_UBSAN ++# endif ++# ifndef OPENSSL_NO_UNIT_TEST ++# define OPENSSL_NO_UNIT_TEST ++# endif ++# ifndef OPENSSL_NO_UPLINK ++# define OPENSSL_NO_UPLINK ++# endif ++# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS ++# define OPENSSL_NO_WEAK_SSL_CIPHERS ++# endif ++# ifndef OPENSSL_NO_DYNAMIC_ENGINE ++# define OPENSSL_NO_DYNAMIC_ENGINE ++# endif ++ ++ ++/* Generate 80386 code? */ ++# undef I386_ONLY ++ ++/* ++ * 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 char ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif /* OPENSSL_CONFIGURATION_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crmf.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crmf.h +new file mode 100644 +index 00000000..71b747ed +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crmf.h +@@ -0,0 +1,227 @@ ++/*- ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crmf.h.in ++ * ++ * Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright Nokia 2007-2019 ++ * Copyright Siemens AG 2015-2019 ++ * ++ * Licensed under the Apache License 2.0 (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 ++ * ++ * CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb. ++ */ ++ ++ ++ ++#ifndef OPENSSL_CRMF_H ++# define OPENSSL_CRMF_H ++ ++# include ++ ++# ifndef OPENSSL_NO_CRMF ++# include ++# include ++# include ++# include /* for GENERAL_NAME etc. */ ++ ++/* explicit #includes not strictly needed since implied by the above: */ ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0 ++# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1 ++# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2 ++# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3 ++# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4 ++ ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0 ++# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1 ++ ++typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE) ++typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG) ++#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx)) ++#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr))) ++#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)) ++#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum) ++#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)) ++#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))) ++#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp))) ++ ++typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE; ++typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER) ++typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY; ++typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST; ++typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID) ++DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID) ++SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID) ++#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx))) ++#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n))) ++#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n)) ++#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i))) ++#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)) ++#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx)) ++#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr))) ++#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)) ++#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum) ++#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)) ++#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))) ++#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))) ++#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp))) ++ ++ ++typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO) ++typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO) ++typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE) ++typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS; ++DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS) ++ ++typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY; ++ ++/* crmf_pbm.c */ ++OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen, ++ int owfnid, size_t itercnt, ++ int macnid); ++int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq, ++ const OSSL_CRMF_PBMPARAMETER *pbmp, ++ const unsigned char *msg, size_t msglen, ++ const unsigned char *sec, size_t seclen, ++ unsigned char **mac, size_t *maclen); ++ ++/* crmf_lib.c */ ++int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *tok); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *auth); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg); ++int ++OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ OSSL_CRMF_SINGLEPUBINFO *spi); ++# define OSSL_CRMF_PUB_METHOD_DONTCARE 0 ++# define OSSL_CRMF_PUB_METHOD_X500 1 ++# define OSSL_CRMF_PUB_METHOD_WEB 2 ++# define OSSL_CRMF_PUB_METHOD_LDAP 3 ++int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi, ++ int method, GENERAL_NAME *nm); ++# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0 ++# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1 ++int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi, ++ int action); ++int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_PKIPUBLICATIONINFO *pi); ++OSSL_CRMF_PKIPUBLICATIONINFO ++*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg, ++ const X509_PUBKEY *pubkey); ++X509_PUBKEY ++*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTID *cid); ++OSSL_CRMF_CERTID ++*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg); ++OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++ ++int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg, ++ const ASN1_UTF8STRING *utf8pairs); ++ASN1_UTF8STRING ++*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg); ++int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg, ++ const OSSL_CRMF_CERTREQUEST *cr); ++OSSL_CRMF_CERTREQUEST ++*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg); ++ ++int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm, ++ ASN1_TIME *notBefore, ASN1_TIME *notAfter); ++int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid); ++int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm); ++int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts); ++ ++int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext); ++# define OSSL_CRMF_POPO_NONE -1 ++# define OSSL_CRMF_POPO_RAVERIFIED 0 ++# define OSSL_CRMF_POPO_SIGNATURE 1 ++# define OSSL_CRMF_POPO_KEYENC 2 ++# define OSSL_CRMF_POPO_KEYAGREE 3 ++int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm, ++ EVP_PKEY *pkey, const EVP_MD *digest, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs, ++ int rid, int acceptRAVerified, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++X509_EXTENSIONS ++*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl); ++const X509_NAME ++*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid); ++const ASN1_INTEGER ++*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid); ++int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl, ++ EVP_PKEY *pubkey, ++ const X509_NAME *subject, ++ const X509_NAME *issuer, ++ const ASN1_INTEGER *serial); ++X509 ++*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert, ++ OSSL_LIB_CTX *libctx, const char *propq, ++ EVP_PKEY *pkey); ++ ++# ifdef __cplusplus ++} ++# endif ++# endif /* !defined(OPENSSL_NO_CRMF) */ ++#endif /* !defined(OPENSSL_CRMF_H) */ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crypto.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crypto.h +new file mode 100644 +index 00000000..3f40be6d +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/crypto.h +@@ -0,0 +1,558 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/crypto.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_CRYPTO_H ++# define OPENSSL_CRYPTO_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CRYPTO_H ++# endif ++ ++# include ++# include ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# endif ++ ++# include ++# 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void CRYPTO_RWLOCK; ++ ++CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void); ++__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock); ++__owur 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); ++int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret, ++ CRYPTO_RWLOCK *lock); ++int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock); ++ ++/* No longer needed, so this is a no-op */ ++#define OPENSSL_malloc_init() while(0) continue ++ ++# 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); ++int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength, ++ const unsigned char *buf, size_t buflen, ++ const char sep); ++char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen); ++int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen, ++ const char *str, const char sep); ++unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen); ++int OPENSSL_hexchar2int(unsigned char c); ++int OPENSSL_strcasecmp(const char *s1, const char *s2); ++int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n); ++ ++# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type)) ++ ++/* ++ * These functions return the values of OPENSSL_VERSION_MAJOR, ++ * OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE ++ * and OPENSSL_VERSION_BUILD_METADATA, respectively. ++ */ ++unsigned int OPENSSL_version_major(void); ++unsigned int OPENSSL_version_minor(void); ++unsigned int OPENSSL_version_patch(void); ++const char *OPENSSL_version_pre_release(void); ++const char *OPENSSL_version_build_metadata(void); ++ ++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 ++# define OPENSSL_VERSION_STRING 6 ++# define OPENSSL_FULL_VERSION_STRING 7 ++# define OPENSSL_MODULES_DIR 8 ++# define OPENSSL_CPU_INFO 9 ++ ++const char *OPENSSL_info(int type); ++/* ++ * The series starts at 1001 to avoid confusion with the OpenSSL_version ++ * types. ++ */ ++# define OPENSSL_INFO_CONFIG_DIR 1001 ++# define OPENSSL_INFO_ENGINES_DIR 1002 ++# define OPENSSL_INFO_MODULES_DIR 1003 ++# define OPENSSL_INFO_DSO_EXTENSION 1004 ++# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005 ++# define OPENSSL_INFO_LIST_SEPARATOR 1006 ++# define OPENSSL_INFO_SEED_SOURCE 1007 ++# define OPENSSL_INFO_CPU_SETTINGS 1008 ++ ++int OPENSSL_issetugid(void); ++ ++struct crypto_ex_data_st { ++ OSSL_LIB_CTX *ctx; ++ STACK_OF(void) *sk; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(void, void, void) ++#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk)) ++#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx))) ++#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp))) ++#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null()) ++#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n))) ++#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n)) ++#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk)) ++#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk)) ++#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i))) ++#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))) ++#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk))) ++#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk))) ++#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc)) ++#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx)) ++#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr))) ++#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)) ++#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum) ++#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk)) ++#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk)) ++#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk))) ++#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc))) ++#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp))) ++ ++ ++ ++/* ++ * 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_RAND_DRBG 15 ++# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG ++# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16 ++# define CRYPTO_EX_INDEX_EVP_PKEY 17 ++# define CRYPTO_EX_INDEX__COUNT 18 ++ ++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); ++ ++/* Allocate a single item in the CRYPTO_EX_DATA variable */ ++int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad, ++ int idx); ++ ++/* ++ * 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* ++ * 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) ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++# define CRYPTO_set_id_callback(func) ++# define CRYPTO_get_id_callback() (NULL) ++# define CRYPTO_thread_id() (0UL) ++# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */ ++ ++# 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_NO_DEPRECATED_1_1_0 */ ++ ++typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line); ++typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file, ++ int line); ++typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line); ++int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn, ++ CRYPTO_realloc_fn realloc_fn, ++ CRYPTO_free_fn free_fn); ++void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn, ++ CRYPTO_realloc_fn *realloc_fn, ++ CRYPTO_free_fn *free_fn); ++ ++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, size_t 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 ++/* ++ * 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 */ ++ ++void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define OPENSSL_mem_debug_push(info) \ ++ CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE) ++# define OPENSSL_mem_debug_pop() \ ++ CRYPTO_mem_debug_pop() ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num, ++ int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2, ++ size_t num, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag, ++ const char *file, int line); ++OSSL_DEPRECATEDIN_3_0 ++int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u), ++ void *u); ++# endif ++# ifndef OPENSSL_NO_STDIO ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio); ++# endif ++# endif /* OPENSSL_NO_CRYPTO_MDEBUG */ ++ ++/* die if we have to */ ++ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++void OPENSSL_init(void); ++# ifdef OPENSSL_SYS_UNIX ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void); ++OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void); ++# endif ++# 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 ++/* FREE: 0x00010000L */ ++# define OPENSSL_INIT_ATFORK 0x00020000L ++/* OPENSSL_INIT_BASE_ONLY 0x00040000L */ ++# define OPENSSL_INIT_NO_ATEXIT 0x00080000L ++/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */ ++/* FREE: 0x04000000L */ ++/* FREE: 0x08000000L */ ++/* FREE: 0x10000000L */ ++/* FREE: 0x20000000L */ ++/* FREE: 0x40000000L */ ++/* FREE: 0x80000000L */ ++/* 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); ++void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx); ++ ++/* 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 ++# if defined(__TANDEM) && defined(_SPT_MODEL_) ++# define SPT_THREAD_SIGNAL 1 ++# define SPT_THREAD_AWARE 1 ++# include ++# else ++# include ++# endif ++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); ++ ++OSSL_LIB_CTX *OSSL_LIB_CTX_new(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle, ++ const OSSL_DISPATCH *in); ++int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file); ++void OSSL_LIB_CTX_free(OSSL_LIB_CTX *); ++OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void); ++OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ct.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ct.h +new file mode 100644 +index 00000000..b6dd8c35 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ct.h +@@ -0,0 +1,573 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ct.h.in ++ * ++ * Copyright 2016-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_CT_H ++# define OPENSSL_CT_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_CT_H ++# endif ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SCT, SCT, SCT) ++#define sk_SCT_num(sk) OPENSSL_sk_num(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_value(sk, idx) ((SCT *)OPENSSL_sk_value(ossl_check_const_SCT_sk_type(sk), (idx))) ++#define sk_SCT_new(cmp) ((STACK_OF(SCT) *)OPENSSL_sk_new(ossl_check_SCT_compfunc_type(cmp))) ++#define sk_SCT_new_null() ((STACK_OF(SCT) *)OPENSSL_sk_new_null()) ++#define sk_SCT_new_reserve(cmp, n) ((STACK_OF(SCT) *)OPENSSL_sk_new_reserve(ossl_check_SCT_compfunc_type(cmp), (n))) ++#define sk_SCT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SCT_sk_type(sk), (n)) ++#define sk_SCT_free(sk) OPENSSL_sk_free(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_zero(sk) OPENSSL_sk_zero(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_delete(sk, i) ((SCT *)OPENSSL_sk_delete(ossl_check_SCT_sk_type(sk), (i))) ++#define sk_SCT_delete_ptr(sk, ptr) ((SCT *)OPENSSL_sk_delete_ptr(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr))) ++#define sk_SCT_push(sk, ptr) OPENSSL_sk_push(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_pop(sk) ((SCT *)OPENSSL_sk_pop(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_shift(sk) ((SCT *)OPENSSL_sk_shift(ossl_check_SCT_sk_type(sk))) ++#define sk_SCT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SCT_sk_type(sk),ossl_check_SCT_freefunc_type(freefunc)) ++#define sk_SCT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), (idx)) ++#define sk_SCT_set(sk, idx, ptr) ((SCT *)OPENSSL_sk_set(ossl_check_SCT_sk_type(sk), (idx), ossl_check_SCT_type(ptr))) ++#define sk_SCT_find(sk, ptr) OPENSSL_sk_find(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr)) ++#define sk_SCT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SCT_sk_type(sk), ossl_check_SCT_type(ptr), pnum) ++#define sk_SCT_sort(sk) OPENSSL_sk_sort(ossl_check_SCT_sk_type(sk)) ++#define sk_SCT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SCT_sk_type(sk)) ++#define sk_SCT_dup(sk) ((STACK_OF(SCT) *)OPENSSL_sk_dup(ossl_check_const_SCT_sk_type(sk))) ++#define sk_SCT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SCT) *)OPENSSL_sk_deep_copy(ossl_check_const_SCT_sk_type(sk), ossl_check_SCT_copyfunc_type(copyfunc), ossl_check_SCT_freefunc_type(freefunc))) ++#define sk_SCT_set_cmp_func(sk, cmp) ((sk_SCT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SCT_sk_type(sk), ossl_check_SCT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(CTLOG, CTLOG, CTLOG) ++#define sk_CTLOG_num(sk) OPENSSL_sk_num(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_value(sk, idx) ((CTLOG *)OPENSSL_sk_value(ossl_check_const_CTLOG_sk_type(sk), (idx))) ++#define sk_CTLOG_new(cmp) ((STACK_OF(CTLOG) *)OPENSSL_sk_new(ossl_check_CTLOG_compfunc_type(cmp))) ++#define sk_CTLOG_new_null() ((STACK_OF(CTLOG) *)OPENSSL_sk_new_null()) ++#define sk_CTLOG_new_reserve(cmp, n) ((STACK_OF(CTLOG) *)OPENSSL_sk_new_reserve(ossl_check_CTLOG_compfunc_type(cmp), (n))) ++#define sk_CTLOG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CTLOG_sk_type(sk), (n)) ++#define sk_CTLOG_free(sk) OPENSSL_sk_free(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_zero(sk) OPENSSL_sk_zero(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_delete(sk, i) ((CTLOG *)OPENSSL_sk_delete(ossl_check_CTLOG_sk_type(sk), (i))) ++#define sk_CTLOG_delete_ptr(sk, ptr) ((CTLOG *)OPENSSL_sk_delete_ptr(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_push(sk, ptr) OPENSSL_sk_push(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_pop(sk) ((CTLOG *)OPENSSL_sk_pop(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_shift(sk) ((CTLOG *)OPENSSL_sk_shift(ossl_check_CTLOG_sk_type(sk))) ++#define sk_CTLOG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CTLOG_sk_type(sk),ossl_check_CTLOG_freefunc_type(freefunc)) ++#define sk_CTLOG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), (idx)) ++#define sk_CTLOG_set(sk, idx, ptr) ((CTLOG *)OPENSSL_sk_set(ossl_check_CTLOG_sk_type(sk), (idx), ossl_check_CTLOG_type(ptr))) ++#define sk_CTLOG_find(sk, ptr) OPENSSL_sk_find(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr)) ++#define sk_CTLOG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_type(ptr), pnum) ++#define sk_CTLOG_sort(sk) OPENSSL_sk_sort(ossl_check_CTLOG_sk_type(sk)) ++#define sk_CTLOG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CTLOG_sk_type(sk)) ++#define sk_CTLOG_dup(sk) ((STACK_OF(CTLOG) *)OPENSSL_sk_dup(ossl_check_const_CTLOG_sk_type(sk))) ++#define sk_CTLOG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CTLOG) *)OPENSSL_sk_deep_copy(ossl_check_const_CTLOG_sk_type(sk), ossl_check_CTLOG_copyfunc_type(copyfunc), ossl_check_CTLOG_freefunc_type(freefunc))) ++#define sk_CTLOG_set_cmp_func(sk, cmp) ((sk_CTLOG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CTLOG_sk_type(sk), ossl_check_CTLOG_compfunc_type(cmp))) ++ ++ ++ ++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; ++ ++/****************************************** ++ * CT policy evaluation context functions * ++ ******************************************/ ++ ++/* ++ * Creates a new, empty policy evaluation context associated with the given ++ * library context and property query string. ++ * 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_ex(OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CT_POLICY_EVAL_CTX_new_ex() but the default library ++ * context and property query string is used. ++ */ ++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 serialization * ++ *********************************/ ++ ++/* ++ * 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| and ++ * associates it with the give library context |libctx| and property query ++ * string |propq|. ++ * 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_ex(EVP_PKEY *public_key, const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_ex except that the default library context and ++ * property query string are used. ++ */ ++CTLOG *CTLOG_new(EVP_PKEY *public_key, const char *name); ++ ++/* ++ * Creates a new CTLOG instance with the base64-encoded SubjectPublicKeyInfo DER ++ * in |pkey_base64| and associated with the given library context |libctx| and ++ * property query string |propq|. 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_ex(CTLOG **ct_log, const char *pkey_base64, ++ const char *name, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++/* ++ * The same as CTLOG_new_from_base64_ex() except that the default ++ * library context and property query string are used. ++ * Returns 1 on success, 0 on failure. ++ */ ++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 and associates it with the given libctx and ++ * property query string. ++ * Should be deleted by the caller using CTLOG_STORE_free when no longer needed. ++ */ ++CTLOG_STORE *CTLOG_STORE_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++/* ++ * Same as CTLOG_STORE_new_ex except that the default libctx and ++ * property query string are used. ++ * 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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/err.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/err.h +new file mode 100644 +index 00000000..3c7299db +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/err.h +@@ -0,0 +1,492 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ERR_H ++# define OPENSSL_ERR_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_ERR_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_STDIO ++# include ++# include ++# endif ++ ++# include ++# include ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_FILENAMES ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,fn,ln) ++# else ++# define ERR_PUT_error(l,f,r,fn,ln) ERR_put_error(l,f,r,NULL,0) ++# endif ++# endif ++ ++# include ++# include ++ ++# define ERR_TXT_MALLOCED 0x01 ++# define ERR_TXT_STRING 0x02 ++ ++# if !defined(OPENSSL_NO_DEPRECATED_3_0) || defined(OSSL_FORCE_ERR_STATE) ++# define ERR_FLAG_MARK 0x01 ++# define ERR_FLAG_CLEAR 0x02 ++ ++# define ERR_NUM_ERRORS 16 ++struct err_state_st { ++ int err_flags[ERR_NUM_ERRORS]; ++ int err_marks[ERR_NUM_ERRORS]; ++ unsigned long err_buffer[ERR_NUM_ERRORS]; ++ char *err_data[ERR_NUM_ERRORS]; ++ size_t err_data_size[ERR_NUM_ERRORS]; ++ int err_data_flags[ERR_NUM_ERRORS]; ++ char *err_file[ERR_NUM_ERRORS]; ++ int err_line[ERR_NUM_ERRORS]; ++ char *err_func[ERR_NUM_ERRORS]; ++ int top, bottom; ++}; ++# endif ++ ++/* 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_ESS 54 ++# define ERR_LIB_PROP 55 ++# define ERR_LIB_CRMF 56 ++# define ERR_LIB_PROV 57 ++# define ERR_LIB_CMP 58 ++# define ERR_LIB_OSSL_ENCODER 59 ++# define ERR_LIB_OSSL_DECODER 60 ++# define ERR_LIB_HTTP 61 ++ ++# define ERR_LIB_USER 128 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define ASN1err(f, r) ERR_raise_data(ERR_LIB_ASN1, (r), NULL) ++# define ASYNCerr(f, r) ERR_raise_data(ERR_LIB_ASYNC, (r), NULL) ++# define BIOerr(f, r) ERR_raise_data(ERR_LIB_BIO, (r), NULL) ++# define BNerr(f, r) ERR_raise_data(ERR_LIB_BN, (r), NULL) ++# define BUFerr(f, r) ERR_raise_data(ERR_LIB_BUF, (r), NULL) ++# define CMPerr(f, r) ERR_raise_data(ERR_LIB_CMP, (r), NULL) ++# define CMSerr(f, r) ERR_raise_data(ERR_LIB_CMS, (r), NULL) ++# define COMPerr(f, r) ERR_raise_data(ERR_LIB_COMP, (r), NULL) ++# define CONFerr(f, r) ERR_raise_data(ERR_LIB_CONF, (r), NULL) ++# define CRMFerr(f, r) ERR_raise_data(ERR_LIB_CRMF, (r), NULL) ++# define CRYPTOerr(f, r) ERR_raise_data(ERR_LIB_CRYPTO, (r), NULL) ++# define CTerr(f, r) ERR_raise_data(ERR_LIB_CT, (r), NULL) ++# define DHerr(f, r) ERR_raise_data(ERR_LIB_DH, (r), NULL) ++# define DSAerr(f, r) ERR_raise_data(ERR_LIB_DSA, (r), NULL) ++# define DSOerr(f, r) ERR_raise_data(ERR_LIB_DSO, (r), NULL) ++# define ECDHerr(f, r) ERR_raise_data(ERR_LIB_ECDH, (r), NULL) ++# define ECDSAerr(f, r) ERR_raise_data(ERR_LIB_ECDSA, (r), NULL) ++# define ECerr(f, r) ERR_raise_data(ERR_LIB_EC, (r), NULL) ++# define ENGINEerr(f, r) ERR_raise_data(ERR_LIB_ENGINE, (r), NULL) ++# define ESSerr(f, r) ERR_raise_data(ERR_LIB_ESS, (r), NULL) ++# define EVPerr(f, r) ERR_raise_data(ERR_LIB_EVP, (r), NULL) ++# define FIPSerr(f, r) ERR_raise_data(ERR_LIB_FIPS, (r), NULL) ++# define HMACerr(f, r) ERR_raise_data(ERR_LIB_HMAC, (r), NULL) ++# define HTTPerr(f, r) ERR_raise_data(ERR_LIB_HTTP, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define OBJerr(f, r) ERR_raise_data(ERR_LIB_OBJ, (r), NULL) ++# define OCSPerr(f, r) ERR_raise_data(ERR_LIB_OCSP, (r), NULL) ++# define OSSL_STOREerr(f, r) ERR_raise_data(ERR_LIB_OSSL_STORE, (r), NULL) ++# define PEMerr(f, r) ERR_raise_data(ERR_LIB_PEM, (r), NULL) ++# define PKCS12err(f, r) ERR_raise_data(ERR_LIB_PKCS12, (r), NULL) ++# define PKCS7err(f, r) ERR_raise_data(ERR_LIB_PKCS7, (r), NULL) ++# define PROPerr(f, r) ERR_raise_data(ERR_LIB_PROP, (r), NULL) ++# define PROVerr(f, r) ERR_raise_data(ERR_LIB_PROV, (r), NULL) ++# define RANDerr(f, r) ERR_raise_data(ERR_LIB_RAND, (r), NULL) ++# define RSAerr(f, r) ERR_raise_data(ERR_LIB_RSA, (r), NULL) ++# define KDFerr(f, r) ERR_raise_data(ERR_LIB_KDF, (r), NULL) ++# define SM2err(f, r) ERR_raise_data(ERR_LIB_SM2, (r), NULL) ++# define SSLerr(f, r) ERR_raise_data(ERR_LIB_SSL, (r), NULL) ++# define SYSerr(f, r) ERR_raise_data(ERR_LIB_SYS, (r), NULL) ++# define TSerr(f, r) ERR_raise_data(ERR_LIB_TS, (r), NULL) ++# define UIerr(f, r) ERR_raise_data(ERR_LIB_UI, (r), NULL) ++# define X509V3err(f, r) ERR_raise_data(ERR_LIB_X509V3, (r), NULL) ++# define X509err(f, r) ERR_raise_data(ERR_LIB_X509, (r), NULL) ++# endif ++ ++/*- ++ * The error code packs differently depending on if it records a system ++ * error or an OpenSSL error. ++ * ++ * A system error packs like this (we follow POSIX and only allow positive ++ * numbers that fit in an |int|): ++ * ++ * +-+-------------------------------------------------------------+ ++ * |1| system error number | ++ * +-+-------------------------------------------------------------+ ++ * ++ * An OpenSSL error packs like this: ++ * ++ * <---------------------------- 32 bits --------------------------> ++ * <--- 8 bits ---><------------------ 23 bits -----------------> ++ * +-+---------------+---------------------------------------------+ ++ * |0| library | reason | ++ * +-+---------------+---------------------------------------------+ ++ * ++ * A few of the reason bits are reserved as flags with special meaning: ++ * ++ * <5 bits-<>--------- 19 bits -----------------> ++ * +-------+-+-----------------------------------+ ++ * | rflags| | reason | ++ * +-------+-+-----------------------------------+ ++ * ^ ++ * | ++ * ERR_RFLAG_FATAL = ERR_R_FATAL ++ * ++ * The reason flags are part of the overall reason code for practical ++ * reasons, as they provide an easy way to place different types of ++ * reason codes in different numeric ranges. ++ * ++ * The currently known reason flags are: ++ * ++ * ERR_RFLAG_FATAL Flags that the reason code is considered fatal. ++ * For backward compatibility reasons, this flag ++ * is also the code for ERR_R_FATAL (that reason ++ * code served the dual purpose of flag and reason ++ * code in one in pre-3.0 OpenSSL). ++ * ERR_RFLAG_COMMON Flags that the reason code is common to all ++ * libraries. All ERR_R_ macros must use this flag, ++ * and no other _R_ macro is allowed to use it. ++ */ ++ ++/* Macros to help decode recorded system errors */ ++# define ERR_SYSTEM_FLAG ((unsigned int)INT_MAX + 1) ++# define ERR_SYSTEM_MASK ((unsigned int)INT_MAX) ++ ++/* ++ * Macros to help decode recorded OpenSSL errors ++ * As expressed above, RFLAGS and REASON overlap by one bit to allow ++ * ERR_R_FATAL to use ERR_RFLAG_FATAL as its reason code. ++ */ ++# define ERR_LIB_OFFSET 23L ++# define ERR_LIB_MASK 0xFF ++# define ERR_RFLAGS_OFFSET 18L ++# define ERR_RFLAGS_MASK 0x1F ++# define ERR_REASON_MASK 0X7FFFFF ++ ++/* ++ * Reason flags are defined pre-shifted to easily combine with the reason ++ * number. ++ */ ++# define ERR_RFLAG_FATAL (0x1 << ERR_RFLAGS_OFFSET) ++# define ERR_RFLAG_COMMON (0x2 << ERR_RFLAGS_OFFSET) ++ ++# define ERR_SYSTEM_ERROR(errcode) (((errcode) & ERR_SYSTEM_FLAG) != 0) ++ ++static ossl_unused ossl_inline int ERR_GET_LIB(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return ERR_LIB_SYS; ++ return (errcode >> ERR_LIB_OFFSET) & ERR_LIB_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_GET_RFLAGS(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return 0; ++ return errcode & (ERR_RFLAGS_MASK << ERR_RFLAGS_OFFSET); ++} ++ ++static ossl_unused ossl_inline int ERR_GET_REASON(unsigned long errcode) ++{ ++ if (ERR_SYSTEM_ERROR(errcode)) ++ return errcode & ERR_SYSTEM_MASK; ++ return errcode & ERR_REASON_MASK; ++} ++ ++static ossl_unused ossl_inline int ERR_FATAL_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_FATAL) != 0; ++} ++ ++static ossl_unused ossl_inline int ERR_COMMON_ERROR(unsigned long errcode) ++{ ++ return (ERR_GET_RFLAGS(errcode) & ERR_RFLAG_COMMON) != 0; ++} ++ ++/* ++ * ERR_PACK is a helper macro to properly pack OpenSSL error codes and may ++ * only be used for that purpose. System errors are packed internally. ++ * ERR_PACK takes reason flags and reason code combined in |reason|. ++ * ERR_PACK ignores |func|, that parameter is just legacy from pre-3.0 OpenSSL. ++ */ ++# define ERR_PACK(lib,func,reason) \ ++ ( (((unsigned long)(lib) & ERR_LIB_MASK ) << ERR_LIB_OFFSET) | \ ++ (((unsigned long)(reason) & ERR_REASON_MASK)) ) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SYS_F_FOPEN 0 ++# define SYS_F_CONNECT 0 ++# define SYS_F_GETSERVBYNAME 0 ++# define SYS_F_SOCKET 0 ++# define SYS_F_IOCTLSOCKET 0 ++# define SYS_F_BIND 0 ++# define SYS_F_LISTEN 0 ++# define SYS_F_ACCEPT 0 ++# define SYS_F_WSASTARTUP 0 ++# define SYS_F_OPENDIR 0 ++# define SYS_F_FREAD 0 ++# define SYS_F_GETADDRINFO 0 ++# define SYS_F_GETNAMEINFO 0 ++# define SYS_F_SETSOCKOPT 0 ++# define SYS_F_GETSOCKOPT 0 ++# define SYS_F_GETSOCKNAME 0 ++# define SYS_F_GETHOSTBYNAME 0 ++# define SYS_F_FFLUSH 0 ++# define SYS_F_OPEN 0 ++# define SYS_F_CLOSE 0 ++# define SYS_F_IOCTL 0 ++# define SYS_F_STAT 0 ++# define SYS_F_FCNTL 0 ++# define SYS_F_FSTAT 0 ++# define SYS_F_SENDFILE 0 ++# endif ++ ++/* ++ * All ERR_R_ codes must be combined with ERR_RFLAG_COMMON. ++ */ ++ ++/* "we came from here" global reason codes, range 1..255 */ ++# define ERR_R_SYS_LIB (ERR_LIB_SYS/* 2 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BN_LIB (ERR_LIB_BN/* 3 */ | ERR_RFLAG_COMMON) ++# define ERR_R_RSA_LIB (ERR_LIB_RSA/* 4 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DH_LIB (ERR_LIB_DH/* 5 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EVP_LIB (ERR_LIB_EVP/* 6 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BUF_LIB (ERR_LIB_BUF/* 7 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OBJ_LIB (ERR_LIB_OBJ/* 8 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PEM_LIB (ERR_LIB_PEM/* 9 */ | ERR_RFLAG_COMMON) ++# define ERR_R_DSA_LIB (ERR_LIB_DSA/* 10 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509_LIB (ERR_LIB_X509/* 11 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ASN1_LIB (ERR_LIB_ASN1/* 13 */ | ERR_RFLAG_COMMON) ++# define ERR_R_CRYPTO_LIB (ERR_LIB_CRYPTO/* 15 */ | ERR_RFLAG_COMMON) ++# define ERR_R_EC_LIB (ERR_LIB_EC/* 16 */ | ERR_RFLAG_COMMON) ++# define ERR_R_BIO_LIB (ERR_LIB_BIO/* 32 */ | ERR_RFLAG_COMMON) ++# define ERR_R_PKCS7_LIB (ERR_LIB_PKCS7/* 33 */ | ERR_RFLAG_COMMON) ++# define ERR_R_X509V3_LIB (ERR_LIB_X509V3/* 34 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ENGINE_LIB (ERR_LIB_ENGINE/* 38 */ | ERR_RFLAG_COMMON) ++# define ERR_R_UI_LIB (ERR_LIB_UI/* 40 */ | ERR_RFLAG_COMMON) ++# define ERR_R_ECDSA_LIB (ERR_LIB_ECDSA/* 42 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_STORE_LIB (ERR_LIB_OSSL_STORE/* 44 */ | ERR_RFLAG_COMMON) ++# define ERR_R_OSSL_DECODER_LIB (ERR_LIB_OSSL_DECODER/* 60 */ | ERR_RFLAG_COMMON) ++ ++/* Other common error codes, range 256..2^ERR_RFLAGS_OFFSET-1 */ ++# define ERR_R_FATAL (ERR_RFLAG_FATAL|ERR_RFLAG_COMMON) ++# define ERR_R_MALLOC_FAILURE (256|ERR_R_FATAL) ++# define ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED (257|ERR_R_FATAL) ++# define ERR_R_PASSED_NULL_PARAMETER (258|ERR_R_FATAL) ++# define ERR_R_INTERNAL_ERROR (259|ERR_R_FATAL) ++# define ERR_R_DISABLED (260|ERR_R_FATAL) ++# define ERR_R_INIT_FAIL (261|ERR_R_FATAL) ++# define ERR_R_PASSED_INVALID_ARGUMENT (262|ERR_RFLAG_COMMON) ++# define ERR_R_OPERATION_FAIL (263|ERR_R_FATAL) ++# define ERR_R_INVALID_PROVIDER_FUNCTIONS (264|ERR_R_FATAL) ++# define ERR_R_INTERRUPTED_OR_CANCELLED (265|ERR_RFLAG_COMMON) ++# define ERR_R_NESTED_ASN1_ERROR (266|ERR_RFLAG_COMMON) ++# define ERR_R_MISSING_ASN1_EOS (267|ERR_RFLAG_COMMON) ++# define ERR_R_UNSUPPORTED (268|ERR_RFLAG_COMMON) ++# define ERR_R_FETCH_FAILED (269|ERR_RFLAG_COMMON) ++# define ERR_R_INVALID_PROPERTY_DEFINITION (270|ERR_RFLAG_COMMON) ++# define ERR_R_UNABLE_TO_GET_READ_LOCK (271|ERR_R_FATAL) ++# define ERR_R_UNABLE_TO_GET_WRITE_LOCK (272|ERR_R_FATAL) ++ ++typedef struct ERR_string_data_st { ++ unsigned long error; ++ const char *string; ++} ERR_STRING_DATA; ++ ++DEFINE_LHASH_OF_INTERNAL(ERR_STRING_DATA); ++#define lh_ERR_STRING_DATA_new(hfn, cmp) ((LHASH_OF(ERR_STRING_DATA) *)OPENSSL_LH_new(ossl_check_ERR_STRING_DATA_lh_hashfunc_type(hfn), ossl_check_ERR_STRING_DATA_lh_compfunc_type(cmp))) ++#define lh_ERR_STRING_DATA_free(lh) OPENSSL_LH_free(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_flush(lh) OPENSSL_LH_flush(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_insert(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_insert(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_delete(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_delete(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_retrieve(lh, ptr) ((ERR_STRING_DATA *)OPENSSL_LH_retrieve(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_const_ERR_STRING_DATA_lh_plain_type(ptr))) ++#define lh_ERR_STRING_DATA_error(lh) OPENSSL_LH_error(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_num_items(lh) OPENSSL_LH_num_items(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_ERR_STRING_DATA_lh_type(lh), out) ++#define lh_ERR_STRING_DATA_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh)) ++#define lh_ERR_STRING_DATA_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_ERR_STRING_DATA_lh_type(lh), dl) ++#define lh_ERR_STRING_DATA_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_ERR_STRING_DATA_lh_type(lh), ossl_check_ERR_STRING_DATA_lh_doallfunc_type(dfn)) ++ ++ ++/* 12 lines and some on an 80 column terminal */ ++#define ERR_MAX_DATA_SIZE 1024 ++ ++/* Building blocks */ ++void ERR_new(void); ++void ERR_set_debug(const char *file, int line, const char *func); ++void ERR_set_error(int lib, int reason, const char *fmt, ...); ++void ERR_vset_error(int lib, int reason, const char *fmt, va_list args); ++ ++/* Main error raising functions */ ++# define ERR_raise(lib, reason) ERR_raise_data((lib),(reason),NULL) ++# define ERR_raise_data \ ++ (ERR_new(), \ ++ ERR_set_debug(OPENSSL_FILE,OPENSSL_LINE,OPENSSL_FUNC), \ ++ ERR_set_error) ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* Backward compatibility */ ++# define ERR_put_error(lib, func, reason, file, line) \ ++ (ERR_new(), \ ++ ERR_set_debug((file), (line), OPENSSL_FUNC), \ ++ ERR_set_error((lib), (reason), NULL)) ++# endif ++ ++void ERR_set_error_data(char *data, int flags); ++ ++unsigned long ERR_get_error(void); ++unsigned long ERR_get_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line(const char **file, int *line); ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_get_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++#endif ++unsigned long ERR_peek_error(void); ++unsigned long ERR_peek_error_line(const char **file, int *line); ++unsigned long ERR_peek_error_func(const char **func); ++unsigned long ERR_peek_error_data(const char **data, int *flags); ++unsigned long ERR_peek_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++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_func(const char **func); ++unsigned long ERR_peek_last_error_data(const char **data, int *flags); ++unsigned long ERR_peek_last_error_all(const char **file, int *line, ++ const char **func, ++ const char **data, int *flags); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++unsigned long ERR_peek_last_error_line_data(const char **file, int *line, ++ const char **data, int *flags); ++# endif ++ ++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); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 const char *ERR_func_error_string(unsigned long e); ++# endif ++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); ++void ERR_add_error_txt(const char *sepr, const char *txt); ++void ERR_add_error_mem_bio(const char *sep, BIO *bio); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# define ERR_load_crypto_strings() \ ++ OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CRYPTO_STRINGS, NULL) ++# define ERR_free_strings() while(0) continue ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void ERR_remove_thread_state(void *); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_1_0_0 ++OSSL_DEPRECATEDIN_1_0_0 void ERR_remove_state(unsigned long pid); ++#endif ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ERR_STATE *ERR_get_state(void); ++#endif ++ ++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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ess.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ess.h +new file mode 100644 +index 00000000..4055bebb +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ess.h +@@ -0,0 +1,128 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ess.h.in ++ * ++ * Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_ESS_H ++# define OPENSSL_ESS_H ++# pragma once ++ ++# include ++ ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++ ++typedef struct ESS_issuer_serial ESS_ISSUER_SERIAL; ++typedef struct ESS_cert_id ESS_CERT_ID; ++typedef struct ESS_signing_cert ESS_SIGNING_CERT; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID, ESS_CERT_ID, ESS_CERT_ID) ++#define sk_ESS_CERT_ID_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_value(sk, idx) ((ESS_CERT_ID *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_new(cmp) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_new_null() ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_delete(sk, i) ((ESS_CERT_ID *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_delete_ptr(sk, ptr) ((ESS_CERT_ID *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_pop(sk) ((ESS_CERT_ID *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_shift(sk) ((ESS_CERT_ID *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_sk_type(sk),ossl_check_ESS_CERT_ID_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_set(sk, idx, ptr) ((ESS_CERT_ID *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_type(ptr))) ++#define sk_ESS_CERT_ID_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr)) ++#define sk_ESS_CERT_ID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_type(ptr), pnum) ++#define sk_ESS_CERT_ID_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_sk_type(sk)) ++#define sk_ESS_CERT_ID_dup(sk) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_sk_type(sk))) ++#define sk_ESS_CERT_ID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_sk_type(sk), ossl_check_ESS_CERT_ID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct ESS_signing_cert_v2_st ESS_SIGNING_CERT_V2; ++typedef struct ESS_cert_id_v2_st ESS_CERT_ID_V2; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ESS_CERT_ID_V2, ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++#define sk_ESS_CERT_ID_V2_num(sk) OPENSSL_sk_num(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_value(sk, idx) ((ESS_CERT_ID_V2 *)OPENSSL_sk_value(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), (idx))) ++#define sk_ESS_CERT_ID_V2_new(cmp) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++#define sk_ESS_CERT_ID_V2_new_null() ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_null()) ++#define sk_ESS_CERT_ID_V2_new_reserve(cmp, n) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_new_reserve(ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp), (n))) ++#define sk_ESS_CERT_ID_V2_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (n)) ++#define sk_ESS_CERT_ID_V2_free(sk) OPENSSL_sk_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_zero(sk) OPENSSL_sk_zero(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_delete(sk, i) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (i))) ++#define sk_ESS_CERT_ID_V2_delete_ptr(sk, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_delete_ptr(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_push(sk, ptr) OPENSSL_sk_push(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_pop(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_pop(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_shift(sk) ((ESS_CERT_ID_V2 *)OPENSSL_sk_shift(ossl_check_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ESS_CERT_ID_V2_sk_type(sk),ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc)) ++#define sk_ESS_CERT_ID_V2_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), (idx)) ++#define sk_ESS_CERT_ID_V2_set(sk, idx, ptr) ((ESS_CERT_ID_V2 *)OPENSSL_sk_set(ossl_check_ESS_CERT_ID_V2_sk_type(sk), (idx), ossl_check_ESS_CERT_ID_V2_type(ptr))) ++#define sk_ESS_CERT_ID_V2_find(sk, ptr) OPENSSL_sk_find(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr)) ++#define sk_ESS_CERT_ID_V2_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_type(ptr), pnum) ++#define sk_ESS_CERT_ID_V2_sort(sk) OPENSSL_sk_sort(ossl_check_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk)) ++#define sk_ESS_CERT_ID_V2_dup(sk) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_dup(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk))) ++#define sk_ESS_CERT_ID_V2_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ESS_CERT_ID_V2) *)OPENSSL_sk_deep_copy(ossl_check_const_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_copyfunc_type(copyfunc), ossl_check_ESS_CERT_ID_V2_freefunc_type(freefunc))) ++#define sk_ESS_CERT_ID_V2_set_cmp_func(sk, cmp) ((sk_ESS_CERT_ID_V2_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ESS_CERT_ID_V2_sk_type(sk), ossl_check_ESS_CERT_ID_V2_compfunc_type(cmp))) ++ ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_ISSUER_SERIAL) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_ISSUER_SERIAL, ESS_ISSUER_SERIAL) ++DECLARE_ASN1_DUP_FUNCTION(ESS_ISSUER_SERIAL) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID, ESS_CERT_ID) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT) ++ ++DECLARE_ASN1_ALLOC_FUNCTIONS(ESS_CERT_ID_V2) ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(ESS_CERT_ID_V2, ESS_CERT_ID_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_CERT_ID_V2) ++ ++DECLARE_ASN1_FUNCTIONS(ESS_SIGNING_CERT_V2) ++DECLARE_ASN1_DUP_FUNCTION(ESS_SIGNING_CERT_V2) ++ ++ESS_SIGNING_CERT *OSSL_ESS_signing_cert_new_init(const X509 *signcert, ++ const STACK_OF(X509) *certs, ++ int set_issuer_serial); ++ESS_SIGNING_CERT_V2 *OSSL_ESS_signing_cert_v2_new_init(const EVP_MD *hash_alg, ++ const X509 *signcert, ++ const ++ STACK_OF(X509) *certs, ++ int set_issuer_serial); ++int OSSL_ESS_check_signing_certs(const ESS_SIGNING_CERT *ss, ++ const ESS_SIGNING_CERT_V2 *ssv2, ++ const STACK_OF(X509) *chain, ++ int require_signing_cert); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/fipskey.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/fipskey.h +new file mode 100644 +index 00000000..42ba014b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/fipskey.h +@@ -0,0 +1,36 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/fipskey.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_FIPSKEY_H ++# define OPENSSL_FIPSKEY_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * The FIPS validation HMAC key, usable as an array initializer. ++ */ ++#define FIPS_KEY_ELEMENTS \ ++ 0xf4, 0x55, 0x66, 0x50, 0xac, 0x31, 0xd3, 0x54, 0x61, 0x61, 0x0b, 0xac, 0x4e, 0xd8, 0x1b, 0x1a, 0x18, 0x1b, 0x2d, 0x8a, 0x43, 0xea, 0x28, 0x54, 0xcb, 0xae, 0x22, 0xca, 0x74, 0x56, 0x08, 0x13 ++ ++/* ++ * The FIPS validation key, as a string. ++ */ ++#define FIPS_KEY_STRING "f4556650ac31d35461610bac4ed81b1a181b2d8a43ea2854cbae22ca74560813" ++ ++# ifdef __cplusplus ++} ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/lhash.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/lhash.h +new file mode 100644 +index 00000000..39dd6254 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/lhash.h +@@ -0,0 +1,288 @@ ++/* ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_LHASH_H ++# define OPENSSL_LHASH_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_LHASH_H ++# endif ++ ++# 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_flush(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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 ++ ++/* Helper macro for internal use */ ++# define DEFINE_LHASH_OF_INTERNAL(type) \ ++ LHASH_OF(type) { union lh_##type##_dummy { void* d1; unsigned long d2; int d3; } dummy; }; \ ++ typedef int (*lh_##type##_compfunc)(const type *a, const type *b); \ ++ typedef unsigned long (*lh_##type##_hashfunc)(const type *a); \ ++ typedef void (*lh_##type##_doallfunc)(type *a); \ ++ static ossl_unused ossl_inline type *ossl_check_##type##_lh_plain_type(type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const type *ossl_check_const_##type##_lh_plain_type(const type *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_LHASH *ossl_check_const_##type##_lh_type(const LHASH_OF(type) *lh) \ ++ { \ ++ return (const OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LHASH *ossl_check_##type##_lh_type(LHASH_OF(type) *lh) \ ++ { \ ++ return (OPENSSL_LHASH *)lh; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_COMPFUNC ossl_check_##type##_lh_compfunc_type(lh_##type##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_LH_COMPFUNC)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_HASHFUNC ossl_check_##type##_lh_hashfunc_type(lh_##type##_hashfunc hfn) \ ++ { \ ++ return (OPENSSL_LH_HASHFUNC)hfn; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_LH_DOALL_FUNC ossl_check_##type##_lh_doallfunc_type(lh_##type##_doallfunc dfn) \ ++ { \ ++ return (OPENSSL_LH_DOALL_FUNC)dfn; \ ++ } \ ++ LHASH_OF(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 void lh_##type##_flush(LHASH_OF(type) *lh) \ ++ { \ ++ OPENSSL_LH_flush((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); \ ++ } \ ++ static ossl_unused ossl_inline void lh_##type##_doall_arg(LHASH_OF(type) *lh, \ ++ void (*doallarg)(type *, void *), \ ++ void *arg) \ ++ { \ ++ OPENSSL_LH_doall_arg((OPENSSL_LHASH *)lh, \ ++ (OPENSSL_LH_DOALL_FUNCARG)doallarg, arg); \ ++ } \ ++ 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_INTERNAL(OPENSSL_STRING); ++#define lh_OPENSSL_STRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_STRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_STRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_STRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_STRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_insert(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_delete(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_retrieve(lh, ptr) ((OPENSSL_STRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_const_OPENSSL_STRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_STRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_STRING_lh_type(lh), out) ++#define lh_OPENSSL_STRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_STRING_lh_type(lh)) ++#define lh_OPENSSL_STRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_STRING_lh_type(lh), dl) ++#define lh_OPENSSL_STRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_STRING_lh_type(lh), ossl_check_OPENSSL_STRING_lh_doallfunc_type(dfn)) ++DEFINE_LHASH_OF_INTERNAL(OPENSSL_CSTRING); ++#define lh_OPENSSL_CSTRING_new(hfn, cmp) ((LHASH_OF(OPENSSL_CSTRING) *)OPENSSL_LH_new(ossl_check_OPENSSL_CSTRING_lh_hashfunc_type(hfn), ossl_check_OPENSSL_CSTRING_lh_compfunc_type(cmp))) ++#define lh_OPENSSL_CSTRING_free(lh) OPENSSL_LH_free(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_flush(lh) OPENSSL_LH_flush(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_insert(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_insert(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_delete(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_delete(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_retrieve(lh, ptr) ((OPENSSL_CSTRING *)OPENSSL_LH_retrieve(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_const_OPENSSL_CSTRING_lh_plain_type(ptr))) ++#define lh_OPENSSL_CSTRING_error(lh) OPENSSL_LH_error(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_num_items(lh) OPENSSL_LH_num_items(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_OPENSSL_CSTRING_lh_type(lh), out) ++#define lh_OPENSSL_CSTRING_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh)) ++#define lh_OPENSSL_CSTRING_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_OPENSSL_CSTRING_lh_type(lh), dl) ++#define lh_OPENSSL_CSTRING_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_OPENSSL_CSTRING_lh_type(lh), ossl_check_OPENSSL_CSTRING_lh_doallfunc_type(dfn)) ++ ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ocsp.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ocsp.h +new file mode 100644 +index 00000000..142b1831 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ocsp.h +@@ -0,0 +1,483 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ocsp.h.in ++ * ++ * Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OCSP_H ++# define OPENSSL_OCSP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OCSP_H ++# endif ++ ++# include ++# include ++# 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), ++ * -- value 7 is not used ++ * removeFromCRL (8), ++ * privilegeWithdrawn (9), ++ * aACompromise (10) } ++ */ ++# 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 ++# define OCSP_REVOKED_STATUS_PRIVILEGEWITHDRAWN 9 ++# define OCSP_REVOKED_STATUS_AACOMPROMISE 10 ++ ++ ++# ifndef OPENSSL_NO_OCSP ++ ++# 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 ++# define OCSP_PARTIAL_CHAIN 0x1000 ++ ++typedef struct ocsp_cert_id_st OCSP_CERTID; ++typedef struct ocsp_one_request_st OCSP_ONEREQ; ++typedef struct ocsp_req_info_st OCSP_REQINFO; ++typedef struct ocsp_signature_st OCSP_SIGNATURE; ++typedef struct ocsp_request_st OCSP_REQUEST; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_CERTID, OCSP_CERTID, OCSP_CERTID) ++#define sk_OCSP_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_value(sk, idx) ((OCSP_CERTID *)OPENSSL_sk_value(ossl_check_const_OCSP_CERTID_sk_type(sk), (idx))) ++#define sk_OCSP_CERTID_new(cmp) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new(ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++#define sk_OCSP_CERTID_new_null() ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_CERTID_new_reserve(cmp, n) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_CERTID_compfunc_type(cmp), (n))) ++#define sk_OCSP_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_CERTID_sk_type(sk), (n)) ++#define sk_OCSP_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_delete(sk, i) ((OCSP_CERTID *)OPENSSL_sk_delete(ossl_check_OCSP_CERTID_sk_type(sk), (i))) ++#define sk_OCSP_CERTID_delete_ptr(sk, ptr) ((OCSP_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_pop(sk) ((OCSP_CERTID *)OPENSSL_sk_pop(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_shift(sk) ((OCSP_CERTID *)OPENSSL_sk_shift(ossl_check_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_CERTID_sk_type(sk),ossl_check_OCSP_CERTID_freefunc_type(freefunc)) ++#define sk_OCSP_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), (idx)) ++#define sk_OCSP_CERTID_set(sk, idx, ptr) ((OCSP_CERTID *)OPENSSL_sk_set(ossl_check_OCSP_CERTID_sk_type(sk), (idx), ossl_check_OCSP_CERTID_type(ptr))) ++#define sk_OCSP_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr)) ++#define sk_OCSP_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_type(ptr), pnum) ++#define sk_OCSP_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_CERTID_sk_type(sk)) ++#define sk_OCSP_CERTID_dup(sk) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_CERTID_sk_type(sk))) ++#define sk_OCSP_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_copyfunc_type(copyfunc), ossl_check_OCSP_CERTID_freefunc_type(freefunc))) ++#define sk_OCSP_CERTID_set_cmp_func(sk, cmp) ((sk_OCSP_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_CERTID_sk_type(sk), ossl_check_OCSP_CERTID_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_ONEREQ, OCSP_ONEREQ, OCSP_ONEREQ) ++#define sk_OCSP_ONEREQ_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_value(sk, idx) ((OCSP_ONEREQ *)OPENSSL_sk_value(ossl_check_const_OCSP_ONEREQ_sk_type(sk), (idx))) ++#define sk_OCSP_ONEREQ_new(cmp) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new(ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++#define sk_OCSP_ONEREQ_new_null() ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_ONEREQ_new_reserve(cmp, n) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_ONEREQ_compfunc_type(cmp), (n))) ++#define sk_OCSP_ONEREQ_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_ONEREQ_sk_type(sk), (n)) ++#define sk_OCSP_ONEREQ_free(sk) OPENSSL_sk_free(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_delete(sk, i) ((OCSP_ONEREQ *)OPENSSL_sk_delete(ossl_check_OCSP_ONEREQ_sk_type(sk), (i))) ++#define sk_OCSP_ONEREQ_delete_ptr(sk, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_pop(sk) ((OCSP_ONEREQ *)OPENSSL_sk_pop(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_shift(sk) ((OCSP_ONEREQ *)OPENSSL_sk_shift(ossl_check_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_ONEREQ_sk_type(sk),ossl_check_OCSP_ONEREQ_freefunc_type(freefunc)) ++#define sk_OCSP_ONEREQ_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), (idx)) ++#define sk_OCSP_ONEREQ_set(sk, idx, ptr) ((OCSP_ONEREQ *)OPENSSL_sk_set(ossl_check_OCSP_ONEREQ_sk_type(sk), (idx), ossl_check_OCSP_ONEREQ_type(ptr))) ++#define sk_OCSP_ONEREQ_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr)) ++#define sk_OCSP_ONEREQ_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_type(ptr), pnum) ++#define sk_OCSP_ONEREQ_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_ONEREQ_sk_type(sk)) ++#define sk_OCSP_ONEREQ_dup(sk) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_dup(ossl_check_const_OCSP_ONEREQ_sk_type(sk))) ++#define sk_OCSP_ONEREQ_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_ONEREQ) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_copyfunc_type(copyfunc), ossl_check_OCSP_ONEREQ_freefunc_type(freefunc))) ++#define sk_OCSP_ONEREQ_set_cmp_func(sk, cmp) ((sk_OCSP_ONEREQ_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_ONEREQ_sk_type(sk), ossl_check_OCSP_ONEREQ_compfunc_type(cmp))) ++ ++ ++# 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 ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_RESPID, OCSP_RESPID, OCSP_RESPID) ++#define sk_OCSP_RESPID_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_value(sk, idx) ((OCSP_RESPID *)OPENSSL_sk_value(ossl_check_const_OCSP_RESPID_sk_type(sk), (idx))) ++#define sk_OCSP_RESPID_new(cmp) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new(ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++#define sk_OCSP_RESPID_new_null() ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_RESPID_new_reserve(cmp, n) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_RESPID_compfunc_type(cmp), (n))) ++#define sk_OCSP_RESPID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_RESPID_sk_type(sk), (n)) ++#define sk_OCSP_RESPID_free(sk) OPENSSL_sk_free(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_delete(sk, i) ((OCSP_RESPID *)OPENSSL_sk_delete(ossl_check_OCSP_RESPID_sk_type(sk), (i))) ++#define sk_OCSP_RESPID_delete_ptr(sk, ptr) ((OCSP_RESPID *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_pop(sk) ((OCSP_RESPID *)OPENSSL_sk_pop(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_shift(sk) ((OCSP_RESPID *)OPENSSL_sk_shift(ossl_check_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_RESPID_sk_type(sk),ossl_check_OCSP_RESPID_freefunc_type(freefunc)) ++#define sk_OCSP_RESPID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), (idx)) ++#define sk_OCSP_RESPID_set(sk, idx, ptr) ((OCSP_RESPID *)OPENSSL_sk_set(ossl_check_OCSP_RESPID_sk_type(sk), (idx), ossl_check_OCSP_RESPID_type(ptr))) ++#define sk_OCSP_RESPID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr)) ++#define sk_OCSP_RESPID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_type(ptr), pnum) ++#define sk_OCSP_RESPID_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_RESPID_sk_type(sk)) ++#define sk_OCSP_RESPID_dup(sk) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_dup(ossl_check_const_OCSP_RESPID_sk_type(sk))) ++#define sk_OCSP_RESPID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_RESPID) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_copyfunc_type(copyfunc), ossl_check_OCSP_RESPID_freefunc_type(freefunc))) ++#define sk_OCSP_RESPID_set_cmp_func(sk, cmp) ((sk_OCSP_RESPID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_RESPID_sk_type(sk), ossl_check_OCSP_RESPID_compfunc_type(cmp))) ++ ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(OCSP_SINGLERESP, OCSP_SINGLERESP, OCSP_SINGLERESP) ++#define sk_OCSP_SINGLERESP_num(sk) OPENSSL_sk_num(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_value(sk, idx) ((OCSP_SINGLERESP *)OPENSSL_sk_value(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), (idx))) ++#define sk_OCSP_SINGLERESP_new(cmp) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++#define sk_OCSP_SINGLERESP_new_null() ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_null()) ++#define sk_OCSP_SINGLERESP_new_reserve(cmp, n) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_new_reserve(ossl_check_OCSP_SINGLERESP_compfunc_type(cmp), (n))) ++#define sk_OCSP_SINGLERESP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OCSP_SINGLERESP_sk_type(sk), (n)) ++#define sk_OCSP_SINGLERESP_free(sk) OPENSSL_sk_free(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_zero(sk) OPENSSL_sk_zero(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_delete(sk, i) ((OCSP_SINGLERESP *)OPENSSL_sk_delete(ossl_check_OCSP_SINGLERESP_sk_type(sk), (i))) ++#define sk_OCSP_SINGLERESP_delete_ptr(sk, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_delete_ptr(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_push(sk, ptr) OPENSSL_sk_push(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_pop(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_pop(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_shift(sk) ((OCSP_SINGLERESP *)OPENSSL_sk_shift(ossl_check_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OCSP_SINGLERESP_sk_type(sk),ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc)) ++#define sk_OCSP_SINGLERESP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), (idx)) ++#define sk_OCSP_SINGLERESP_set(sk, idx, ptr) ((OCSP_SINGLERESP *)OPENSSL_sk_set(ossl_check_OCSP_SINGLERESP_sk_type(sk), (idx), ossl_check_OCSP_SINGLERESP_type(ptr))) ++#define sk_OCSP_SINGLERESP_find(sk, ptr) OPENSSL_sk_find(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr)) ++#define sk_OCSP_SINGLERESP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_type(ptr), pnum) ++#define sk_OCSP_SINGLERESP_sort(sk) OPENSSL_sk_sort(ossl_check_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OCSP_SINGLERESP_sk_type(sk)) ++#define sk_OCSP_SINGLERESP_dup(sk) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_dup(ossl_check_const_OCSP_SINGLERESP_sk_type(sk))) ++#define sk_OCSP_SINGLERESP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OCSP_SINGLERESP) *)OPENSSL_sk_deep_copy(ossl_check_const_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_copyfunc_type(copyfunc), ossl_check_OCSP_SINGLERESP_freefunc_type(freefunc))) ++#define sk_OCSP_SINGLERESP_set_cmp_func(sk, cmp) ((sk_OCSP_SINGLERESP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OCSP_SINGLERESP_sk_type(sk), ossl_check_OCSP_SINGLERESP_compfunc_type(cmp))) ++ ++ ++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((i2d_of_void *)i2d_OCSP_CERTSTATUS,\ ++ (d2i_of_void *)d2i_OCSP_CERTSTATUS,(char *)(cs)) ++ ++DECLARE_ASN1_DUP_FUNCTION(OCSP_CERTID) ++ ++OSSL_HTTP_REQ_CTX *OCSP_sendreq_new(BIO *io, const char *path, ++ const OCSP_REQUEST *req, int buf_size); ++OCSP_RESPONSE *OCSP_sendreq_bio(BIO *b, const char *path, OCSP_REQUEST *req); ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++typedef OSSL_HTTP_REQ_CTX OCSP_REQ_CTX; ++# define OCSP_REQ_CTX_new(io, buf_size) \ ++ OSSL_HTTP_REQ_CTX_new(io, io, buf_size) ++# define OCSP_REQ_CTX_free OSSL_HTTP_REQ_CTX_free ++# define OCSP_REQ_CTX_http(rctx, op, path) \ ++ (OSSL_HTTP_REQ_CTX_set_expected(rctx, NULL, 1 /* asn1 */, 0, 0) && \ ++ OSSL_HTTP_REQ_CTX_set_request_line(rctx, strcmp(op, "POST") == 0, \ ++ NULL, NULL, path)) ++# define OCSP_REQ_CTX_add1_header OSSL_HTTP_REQ_CTX_add1_header ++# define OCSP_REQ_CTX_i2d(r, it, req) \ ++ OSSL_HTTP_REQ_CTX_set1_req(r, "application/ocsp-request", it, req) ++# define OCSP_REQ_CTX_set1_req(r, req) \ ++ OCSP_REQ_CTX_i2d(r, ASN1_ITEM_rptr(OCSP_REQUEST), (ASN1_VALUE *)(req)) ++# define OCSP_REQ_CTX_nbio OSSL_HTTP_REQ_CTX_nbio ++# define OCSP_REQ_CTX_nbio_d2i OSSL_HTTP_REQ_CTX_nbio_d2i ++# define OCSP_sendreq_nbio(p, r) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(r, (ASN1_VALUE **)(p), \ ++ ASN1_ITEM_rptr(OCSP_RESPONSE)) ++# define OCSP_REQ_CTX_get0_mem_bio OSSL_HTTP_REQ_CTX_get0_mem_bio ++# define OCSP_set_max_response_length OSSL_HTTP_REQ_CTX_set_max_response_length ++# endif ++ ++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, const 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); ++ ++# define OCSP_parse_url(url, host, port, path, ssl) \ ++ OSSL_HTTP_parse_url(url, ssl, NULL, host, port, NULL, path, NULL, NULL) ++ ++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_ex(OCSP_RESPID *respid, X509 *cert, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int OCSP_RESPID_set_by_key(OCSP_RESPID *respid, X509 *cert); ++int OCSP_RESPID_match_ex(OCSP_RESPID *respid, X509 *cert, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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(const 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 /* !defined(OPENSSL_NO_OCSP) */ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/opensslv.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/opensslv.h +new file mode 100644 +index 00000000..4af88bb2 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/opensslv.h +@@ -0,0 +1,114 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/opensslv.h.in ++ * ++ * Copyright 1999-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_OPENSSLV_H ++# define OPENSSL_OPENSSLV_H ++# pragma once ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++/* ++ * SECTION 1: VERSION DATA. These will change for each release ++ */ ++ ++/* ++ * Base version macros ++ * ++ * These macros express version number MAJOR.MINOR.PATCH exactly ++ */ ++# define OPENSSL_VERSION_MAJOR 3 ++# define OPENSSL_VERSION_MINOR 0 ++# define OPENSSL_VERSION_PATCH 5 ++ ++/* ++ * Additional version information ++ * ++ * These are also part of the new version scheme, but aren't part ++ * of the version number itself. ++ */ ++ ++/* Could be: #define OPENSSL_VERSION_PRE_RELEASE "-alpha.1" */ ++# define OPENSSL_VERSION_PRE_RELEASE "" ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+fips" */ ++/* Could be: #define OPENSSL_VERSION_BUILD_METADATA "+vendor.1" */ ++# define OPENSSL_VERSION_BUILD_METADATA "+quic" ++ ++/* ++ * Note: The OpenSSL Project will never define OPENSSL_VERSION_BUILD_METADATA ++ * to be anything but the empty string. Its use is entirely reserved for ++ * others ++ */ ++ ++/* ++ * Shared library version ++ * ++ * This is strictly to express ABI version, which may or may not ++ * be related to the API version expressed with the macros above. ++ * This is defined in free form. ++ */ ++# define OPENSSL_SHLIB_VERSION 81.3 ++ ++/* ++ * SECTION 2: USEFUL MACROS ++ */ ++ ++/* For checking general API compatibility when preprocessing */ ++# define OPENSSL_VERSION_PREREQ(maj,min) \ ++ ((OPENSSL_VERSION_MAJOR << 16) + OPENSSL_VERSION_MINOR >= ((maj) << 16) + (min)) ++ ++/* ++ * Macros to get the version in easily digested string form, both the short ++ * "MAJOR.MINOR.PATCH" variant (where MAJOR, MINOR and PATCH are replaced ++ * with the values from the corresponding OPENSSL_VERSION_ macros) and the ++ * longer variant with OPENSSL_VERSION_PRE_RELEASE_STR and ++ * OPENSSL_VERSION_BUILD_METADATA_STR appended. ++ */ ++# define OPENSSL_VERSION_STR "3.0.5" ++# define OPENSSL_FULL_VERSION_STR "3.0.5+quic" ++ ++/* ++ * SECTION 3: ADDITIONAL METADATA ++ * ++ * These strings are defined separately to allow them to be parsable. ++ */ ++# define OPENSSL_RELEASE_DATE "5 Jul 2022" ++ ++/* ++ * SECTION 4: BACKWARD COMPATIBILITY ++ */ ++ ++# define OPENSSL_VERSION_TEXT "OpenSSL 3.0.5+quic 5 Jul 2022" ++ ++/* Synthesize OPENSSL_VERSION_NUMBER with the layout 0xMNN00PPSL */ ++# ifdef OPENSSL_VERSION_PRE_RELEASE ++# define _OPENSSL_VERSION_PRE_RELEASE 0x0L ++# else ++# define _OPENSSL_VERSION_PRE_RELEASE 0xfL ++# endif ++# define OPENSSL_VERSION_NUMBER \ ++ ( (OPENSSL_VERSION_MAJOR<<28) \ ++ |(OPENSSL_VERSION_MINOR<<20) \ ++ |(OPENSSL_VERSION_PATCH<<4) \ ++ |_OPENSSL_VERSION_PRE_RELEASE ) ++ ++# ifdef __cplusplus ++} ++# endif ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_OPENSSLV_H ++# endif ++ ++#endif /* OPENSSL_OPENSSLV_H */ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs12.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs12.h +new file mode 100644 +index 00000000..c5e0cab0 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs12.h +@@ -0,0 +1,350 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs12.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS12_H ++# define OPENSSL_PKCS12_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS12_H ++# endif ++ ++# include ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS12_SAFEBAG, PKCS12_SAFEBAG, PKCS12_SAFEBAG) ++#define sk_PKCS12_SAFEBAG_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_value(sk, idx) ((PKCS12_SAFEBAG *)OPENSSL_sk_value(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), (idx))) ++#define sk_PKCS12_SAFEBAG_new(cmp) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++#define sk_PKCS12_SAFEBAG_new_null() ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_null()) ++#define sk_PKCS12_SAFEBAG_new_reserve(cmp, n) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_new_reserve(ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp), (n))) ++#define sk_PKCS12_SAFEBAG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (n)) ++#define sk_PKCS12_SAFEBAG_free(sk) OPENSSL_sk_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_delete(sk, i) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (i))) ++#define sk_PKCS12_SAFEBAG_delete_ptr(sk, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_delete_ptr(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_pop(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_pop(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_shift(sk) ((PKCS12_SAFEBAG *)OPENSSL_sk_shift(ossl_check_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS12_SAFEBAG_sk_type(sk),ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc)) ++#define sk_PKCS12_SAFEBAG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), (idx)) ++#define sk_PKCS12_SAFEBAG_set(sk, idx, ptr) ((PKCS12_SAFEBAG *)OPENSSL_sk_set(ossl_check_PKCS12_SAFEBAG_sk_type(sk), (idx), ossl_check_PKCS12_SAFEBAG_type(ptr))) ++#define sk_PKCS12_SAFEBAG_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr)) ++#define sk_PKCS12_SAFEBAG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_type(ptr), pnum) ++#define sk_PKCS12_SAFEBAG_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk)) ++#define sk_PKCS12_SAFEBAG_dup(sk) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_dup(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk))) ++#define sk_PKCS12_SAFEBAG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS12_SAFEBAG) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_copyfunc_type(copyfunc), ossl_check_PKCS12_SAFEBAG_freefunc_type(freefunc))) ++#define sk_PKCS12_SAFEBAG_set_cmp_func(sk, cmp) ((sk_PKCS12_SAFEBAG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS12_SAFEBAG_sk_type(sk), ossl_check_PKCS12_SAFEBAG_compfunc_type(cmp))) ++ ++ ++typedef struct pkcs12_bag_st PKCS12_BAGS; ++ ++# define PKCS12_ERROR 0 ++# define PKCS12_OK 1 ++ ++/* Compatibility macros */ ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++ ++# 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 ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TYPE *PKCS12_get_attr(const PKCS12_SAFEBAG *bag, ++ int attr_nid); ++#endif ++ ++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); ++const ASN1_TYPE *PKCS12_SAFEBAG_get0_bag_obj(const PKCS12_SAFEBAG *bag); ++const ASN1_OBJECT *PKCS12_SAFEBAG_get0_bag_type(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_create_secret(int type, int vtype, const unsigned char *value, int len); ++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_SAFEBAG_create_pkcs8_encrypt_ex(int pbe_nid, ++ const char *pass, ++ int passlen, ++ unsigned char *salt, ++ int saltlen, int iter, ++ PKCS8_PRIV_KEY_INFO *p8inf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++ ++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 *PKCS8_decrypt_ex(const X509_SIG *p8, const char *pass, ++ int passlen, OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen); ++PKCS8_PRIV_KEY_INFO *PKCS12_decrypt_skey_ex(const PKCS12_SAFEBAG *bag, ++ const char *pass, int passlen, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++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_encrypt_ex(int pbe_nid, const EVP_CIPHER *cipher, ++ const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int iter, PKCS8_PRIV_KEY_INFO *p8, ++ OSSL_LIB_CTX *ctx, const char *propq); ++X509_SIG *PKCS8_set0_pbe(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe); ++X509_SIG *PKCS8_set0_pbe_ex(const char *pass, int passlen, ++ PKCS8_PRIV_KEY_INFO *p8inf, X509_ALGOR *pbe, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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); ++PKCS7 *PKCS12_pack_p7encdata_ex(int pbe_nid, const char *pass, int passlen, ++ unsigned char *salt, int saltlen, int iter, ++ STACK_OF(PKCS12_SAFEBAG) *bags, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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 PKCS12_add1_attr_by_NID(PKCS12_SAFEBAG *bag, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS12_add1_attr_by_txt(PKCS12_SAFEBAG *bag, const char *attrname, int type, ++ const unsigned char *bytes, int len); ++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); ++unsigned char *PKCS12_pbe_crypt_ex(const X509_ALGOR *algor, ++ const char *pass, int passlen, ++ const unsigned char *in, int inlen, ++ unsigned char **data, int *datalen, ++ int en_de, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++void *PKCS12_item_decrypt_d2i_ex(const X509_ALGOR *algor, const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ const ASN1_OCTET_STRING *oct, int zbuf, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf); ++ASN1_OCTET_STRING *PKCS12_item_i2d_encrypt_ex(X509_ALGOR *algor, ++ const ASN1_ITEM *it, ++ const char *pass, int passlen, ++ void *obj, int zbuf, ++ OSSL_LIB_CTX *ctx, ++ const char *propq); ++PKCS12 *PKCS12_init(int mode); ++PKCS12 *PKCS12_init_ex(int mode, OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_asc_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_uni_ex(unsigned char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++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_key_gen_utf8_ex(const char *pass, int passlen, unsigned char *salt, ++ int saltlen, int id, int iter, int n, ++ unsigned char *out, const EVP_MD *md_type, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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_PBE_keyivgen_ex(EVP_CIPHER_CTX *ctx, const char *pass, int passlen, ++ ASN1_TYPE *param, const EVP_CIPHER *cipher, ++ const EVP_MD *md_type, int en_de, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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 *PKCS12_create_ex(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, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++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); ++PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ EVP_PKEY *key, int key_usage, int iter, ++ int key_nid, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12_SAFEBAG *PKCS12_add_secret(STACK_OF(PKCS12_SAFEBAG) **pbags, ++ int nid_type, const unsigned char *value, int len); ++int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass); ++int PKCS12_add_safe_ex(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags, ++ int safe_nid, int iter, const char *pass, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++PKCS12 *PKCS12_add_safes(STACK_OF(PKCS7) *safes, int p7_nid); ++PKCS12 *PKCS12_add_safes_ex(STACK_OF(PKCS7) *safes, int p7_nid, ++ OSSL_LIB_CTX *ctx, const char *propq); ++ ++int i2d_PKCS12_bio(BIO *bp, const PKCS12 *p12); ++# ifndef OPENSSL_NO_STDIO ++int i2d_PKCS12_fp(FILE *fp, const 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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs7.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs7.h +new file mode 100644 +index 00000000..557a0a72 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/pkcs7.h +@@ -0,0 +1,427 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/pkcs7.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_PKCS7_H ++# define OPENSSL_PKCS7_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_PKCS7_H ++# endif ++ ++# 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_CTX_st { ++ OSSL_LIB_CTX *libctx; ++ char *propq; ++} PKCS7_CTX; ++ ++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; ++ const PKCS7_CTX *ctx; ++} PKCS7_SIGNER_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO, PKCS7_SIGNER_INFO) ++#define sk_PKCS7_SIGNER_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_value(sk, idx) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_SIGNER_INFO_new(cmp) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_SIGNER_INFO_new_null() ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_SIGNER_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_SIGNER_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_SIGNER_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_delete(sk, i) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_SIGNER_INFO_delete_ptr(sk, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_pop(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_shift(sk) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk),ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_SIGNER_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), (idx)) ++#define sk_PKCS7_SIGNER_INFO_set(sk, idx, ptr) ((PKCS7_SIGNER_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), (idx), ossl_check_PKCS7_SIGNER_INFO_type(ptr))) ++#define sk_PKCS7_SIGNER_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr)) ++#define sk_PKCS7_SIGNER_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_type(ptr), pnum) ++#define sk_PKCS7_SIGNER_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk)) ++#define sk_PKCS7_SIGNER_INFO_dup(sk) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk))) ++#define sk_PKCS7_SIGNER_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_SIGNER_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_SIGNER_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_SIGNER_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_SIGNER_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_SIGNER_INFO_sk_type(sk), ossl_check_PKCS7_SIGNER_INFO_compfunc_type(cmp))) ++ ++ ++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 */ ++ const PKCS7_CTX *ctx; ++} PKCS7_RECIP_INFO; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7_RECIP_INFO, PKCS7_RECIP_INFO, PKCS7_RECIP_INFO) ++#define sk_PKCS7_RECIP_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_value(sk, idx) ((PKCS7_RECIP_INFO *)OPENSSL_sk_value(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), (idx))) ++#define sk_PKCS7_RECIP_INFO_new(cmp) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++#define sk_PKCS7_RECIP_INFO_new_null() ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_RECIP_INFO_new_reserve(cmp, n) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp), (n))) ++#define sk_PKCS7_RECIP_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (n)) ++#define sk_PKCS7_RECIP_INFO_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_delete(sk, i) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (i))) ++#define sk_PKCS7_RECIP_INFO_delete_ptr(sk, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_pop(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_pop(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_shift(sk) ((PKCS7_RECIP_INFO *)OPENSSL_sk_shift(ossl_check_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_RECIP_INFO_sk_type(sk),ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc)) ++#define sk_PKCS7_RECIP_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), (idx)) ++#define sk_PKCS7_RECIP_INFO_set(sk, idx, ptr) ((PKCS7_RECIP_INFO *)OPENSSL_sk_set(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), (idx), ossl_check_PKCS7_RECIP_INFO_type(ptr))) ++#define sk_PKCS7_RECIP_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr)) ++#define sk_PKCS7_RECIP_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_type(ptr), pnum) ++#define sk_PKCS7_RECIP_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk)) ++#define sk_PKCS7_RECIP_INFO_dup(sk) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk))) ++#define sk_PKCS7_RECIP_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7_RECIP_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_copyfunc_type(copyfunc), ossl_check_PKCS7_RECIP_INFO_freefunc_type(freefunc))) ++#define sk_PKCS7_RECIP_INFO_set_cmp_func(sk, cmp) ((sk_PKCS7_RECIP_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_RECIP_INFO_sk_type(sk), ossl_check_PKCS7_RECIP_INFO_compfunc_type(cmp))) ++ ++ ++ ++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; ++ const PKCS7_CTX *ctx; ++} 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_CTX ctx; ++} PKCS7; ++SKM_DEFINE_STACK_OF_INTERNAL(PKCS7, PKCS7, PKCS7) ++#define sk_PKCS7_num(sk) OPENSSL_sk_num(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_value(sk, idx) ((PKCS7 *)OPENSSL_sk_value(ossl_check_const_PKCS7_sk_type(sk), (idx))) ++#define sk_PKCS7_new(cmp) ((STACK_OF(PKCS7) *)OPENSSL_sk_new(ossl_check_PKCS7_compfunc_type(cmp))) ++#define sk_PKCS7_new_null() ((STACK_OF(PKCS7) *)OPENSSL_sk_new_null()) ++#define sk_PKCS7_new_reserve(cmp, n) ((STACK_OF(PKCS7) *)OPENSSL_sk_new_reserve(ossl_check_PKCS7_compfunc_type(cmp), (n))) ++#define sk_PKCS7_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PKCS7_sk_type(sk), (n)) ++#define sk_PKCS7_free(sk) OPENSSL_sk_free(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_zero(sk) OPENSSL_sk_zero(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_delete(sk, i) ((PKCS7 *)OPENSSL_sk_delete(ossl_check_PKCS7_sk_type(sk), (i))) ++#define sk_PKCS7_delete_ptr(sk, ptr) ((PKCS7 *)OPENSSL_sk_delete_ptr(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_push(sk, ptr) OPENSSL_sk_push(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_pop(sk) ((PKCS7 *)OPENSSL_sk_pop(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_shift(sk) ((PKCS7 *)OPENSSL_sk_shift(ossl_check_PKCS7_sk_type(sk))) ++#define sk_PKCS7_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PKCS7_sk_type(sk),ossl_check_PKCS7_freefunc_type(freefunc)) ++#define sk_PKCS7_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), (idx)) ++#define sk_PKCS7_set(sk, idx, ptr) ((PKCS7 *)OPENSSL_sk_set(ossl_check_PKCS7_sk_type(sk), (idx), ossl_check_PKCS7_type(ptr))) ++#define sk_PKCS7_find(sk, ptr) OPENSSL_sk_find(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr)) ++#define sk_PKCS7_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_type(ptr), pnum) ++#define sk_PKCS7_sort(sk) OPENSSL_sk_sort(ossl_check_PKCS7_sk_type(sk)) ++#define sk_PKCS7_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PKCS7_sk_type(sk)) ++#define sk_PKCS7_dup(sk) ((STACK_OF(PKCS7) *)OPENSSL_sk_dup(ossl_check_const_PKCS7_sk_type(sk))) ++#define sk_PKCS7_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PKCS7) *)OPENSSL_sk_deep_copy(ossl_check_const_PKCS7_sk_type(sk), ossl_check_PKCS7_copyfunc_type(copyfunc), ossl_check_PKCS7_freefunc_type(freefunc))) ++#define sk_PKCS7_set_cmp_func(sk, cmp) ((sk_PKCS7_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PKCS7_sk_type(sk), ossl_check_PKCS7_compfunc_type(cmp))) ++ ++ ++ ++# 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, const PKCS7 *p7); ++# endif ++DECLARE_ASN1_DUP_FUNCTION(PKCS7) ++PKCS7 *d2i_PKCS7_bio(BIO *bp, PKCS7 **p7); ++int i2d_PKCS7_bio(BIO *bp, const 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) ++PKCS7 *PKCS7_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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_type_is_other(PKCS7 *p7); ++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_get_octet_string(PKCS7 *p7); ++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(const PKCS7_SIGNER_INFO *si, int nid); ++ASN1_TYPE *PKCS7_get_signed_attribute(const 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 *PKCS7_sign_ex(X509 *signcert, EVP_PKEY *pkey, STACK_OF(X509) *certs, ++ BIO *data, int flags, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++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); ++PKCS7 *PKCS7_encrypt_ex(STACK_OF(X509) *certs, BIO *in, ++ const EVP_CIPHER *cipher, int flags, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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_ex(BIO *bio, BIO **bcont, PKCS7 **p7); ++PKCS7 *SMIME_read_PKCS7(BIO *bio, BIO **bcont); ++ ++BIO *BIO_new_PKCS7(BIO *out, PKCS7 *p7); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/safestack.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/safestack.h +new file mode 100644 +index 00000000..0499700b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/safestack.h +@@ -0,0 +1,297 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/safestack.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_SAFESTACK_H ++# define OPENSSL_SAFESTACK_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SAFESTACK_H ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++# define STACK_OF(type) struct stack_st_##type ++ ++/* Helper macro for internal use */ ++# define SKM_DEFINE_STACK_OF_INTERNAL(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 t2 *ossl_check_##t1##_type(t2 *ptr) \ ++ { \ ++ return ptr; \ ++ } \ ++ static ossl_unused ossl_inline const OPENSSL_STACK *ossl_check_const_##t1##_sk_type(const STACK_OF(t1) *sk) \ ++ { \ ++ return (const OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_STACK *ossl_check_##t1##_sk_type(STACK_OF(t1) *sk) \ ++ { \ ++ return (OPENSSL_STACK *)sk; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_compfunc ossl_check_##t1##_compfunc_type(sk_##t1##_compfunc cmp) \ ++ { \ ++ return (OPENSSL_sk_compfunc)cmp; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_copyfunc ossl_check_##t1##_copyfunc_type(sk_##t1##_copyfunc cpy) \ ++ { \ ++ return (OPENSSL_sk_copyfunc)cpy; \ ++ } \ ++ static ossl_unused ossl_inline OPENSSL_sk_freefunc ossl_check_##t1##_freefunc_type(sk_##t1##_freefunc fr) \ ++ { \ ++ return (OPENSSL_sk_freefunc)fr; \ ++ } ++ ++# 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 int sk_##t1##_find_all(STACK_OF(t1) *sk, t2 *ptr, int *pnum) \ ++ { \ ++ return OPENSSL_sk_find_all((OPENSSL_STACK *)sk, (const void *)ptr, pnum); \ ++ } \ ++ 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_STACK_OF(t) SKM_DEFINE_STACK_OF(t, t, t) ++# define DEFINE_STACK_OF_CONST(t) SKM_DEFINE_STACK_OF(t, const t, t) ++# define DEFINE_SPECIAL_STACK_OF(t1, t2) SKM_DEFINE_STACK_OF(t1, t2, t2) ++# define DEFINE_SPECIAL_STACK_OF_CONST(t1, t2) \ ++ SKM_DEFINE_STACK_OF(t1, const t2, t2) ++ ++/*- ++ * 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. ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_STRING, char, char) ++#define sk_OPENSSL_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_value(sk, idx) ((char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_STRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_STRING_new(cmp) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++#define sk_OPENSSL_STRING_new_null() ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_STRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_STRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_STRING_sk_type(sk), (n)) ++#define sk_OPENSSL_STRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_delete(sk, i) ((char *)OPENSSL_sk_delete(ossl_check_OPENSSL_STRING_sk_type(sk), (i))) ++#define sk_OPENSSL_STRING_delete_ptr(sk, ptr) ((char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_pop(sk) ((char *)OPENSSL_sk_pop(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_shift(sk) ((char *)OPENSSL_sk_shift(ossl_check_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_STRING_sk_type(sk),ossl_check_OPENSSL_STRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), (idx)) ++#define sk_OPENSSL_STRING_set(sk, idx, ptr) ((char *)OPENSSL_sk_set(ossl_check_OPENSSL_STRING_sk_type(sk), (idx), ossl_check_OPENSSL_STRING_type(ptr))) ++#define sk_OPENSSL_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr)) ++#define sk_OPENSSL_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_type(ptr), pnum) ++#define sk_OPENSSL_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_STRING_sk_type(sk)) ++#define sk_OPENSSL_STRING_dup(sk) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_STRING_sk_type(sk))) ++#define sk_OPENSSL_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_STRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_STRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_STRING_sk_type(sk), ossl_check_OPENSSL_STRING_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_CSTRING, const char, char) ++#define sk_OPENSSL_CSTRING_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_value(sk, idx) ((const char *)OPENSSL_sk_value(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), (idx))) ++#define sk_OPENSSL_CSTRING_new(cmp) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++#define sk_OPENSSL_CSTRING_new_null() ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_CSTRING_new_reserve(cmp, n) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_CSTRING_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_CSTRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_CSTRING_sk_type(sk), (n)) ++#define sk_OPENSSL_CSTRING_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_delete(sk, i) ((const char *)OPENSSL_sk_delete(ossl_check_OPENSSL_CSTRING_sk_type(sk), (i))) ++#define sk_OPENSSL_CSTRING_delete_ptr(sk, ptr) ((const char *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_pop(sk) ((const char *)OPENSSL_sk_pop(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_shift(sk) ((const char *)OPENSSL_sk_shift(ossl_check_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_CSTRING_sk_type(sk),ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc)) ++#define sk_OPENSSL_CSTRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), (idx)) ++#define sk_OPENSSL_CSTRING_set(sk, idx, ptr) ((const char *)OPENSSL_sk_set(ossl_check_OPENSSL_CSTRING_sk_type(sk), (idx), ossl_check_OPENSSL_CSTRING_type(ptr))) ++#define sk_OPENSSL_CSTRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr)) ++#define sk_OPENSSL_CSTRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_type(ptr), pnum) ++#define sk_OPENSSL_CSTRING_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_CSTRING_sk_type(sk)) ++#define sk_OPENSSL_CSTRING_dup(sk) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_CSTRING_sk_type(sk))) ++#define sk_OPENSSL_CSTRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_CSTRING) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_copyfunc_type(copyfunc), ossl_check_OPENSSL_CSTRING_freefunc_type(freefunc))) ++#define sk_OPENSSL_CSTRING_set_cmp_func(sk, cmp) ((sk_OPENSSL_CSTRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_CSTRING_sk_type(sk), ossl_check_OPENSSL_CSTRING_compfunc_type(cmp))) ++ ++ ++#if !defined(OPENSSL_NO_DEPRECATED_3_0) ++/* ++ * This is not used by OpenSSL. A block of bytes, NOT nul-terminated. ++ * These should also be distinguished from "normal" stacks. ++ */ ++typedef void *OPENSSL_BLOCK; ++SKM_DEFINE_STACK_OF_INTERNAL(OPENSSL_BLOCK, void, void) ++#define sk_OPENSSL_BLOCK_num(sk) OPENSSL_sk_num(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), (idx))) ++#define sk_OPENSSL_BLOCK_new(cmp) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++#define sk_OPENSSL_BLOCK_new_null() ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_null()) ++#define sk_OPENSSL_BLOCK_new_reserve(cmp, n) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_new_reserve(ossl_check_OPENSSL_BLOCK_compfunc_type(cmp), (n))) ++#define sk_OPENSSL_BLOCK_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OPENSSL_BLOCK_sk_type(sk), (n)) ++#define sk_OPENSSL_BLOCK_free(sk) OPENSSL_sk_free(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_zero(sk) OPENSSL_sk_zero(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_OPENSSL_BLOCK_sk_type(sk), (i))) ++#define sk_OPENSSL_BLOCK_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_push(sk, ptr) OPENSSL_sk_push(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OPENSSL_BLOCK_sk_type(sk),ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc)) ++#define sk_OPENSSL_BLOCK_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), (idx)) ++#define sk_OPENSSL_BLOCK_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_OPENSSL_BLOCK_sk_type(sk), (idx), ossl_check_OPENSSL_BLOCK_type(ptr))) ++#define sk_OPENSSL_BLOCK_find(sk, ptr) OPENSSL_sk_find(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr)) ++#define sk_OPENSSL_BLOCK_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_type(ptr), pnum) ++#define sk_OPENSSL_BLOCK_sort(sk) OPENSSL_sk_sort(ossl_check_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OPENSSL_BLOCK_sk_type(sk)) ++#define sk_OPENSSL_BLOCK_dup(sk) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_dup(ossl_check_const_OPENSSL_BLOCK_sk_type(sk))) ++#define sk_OPENSSL_BLOCK_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OPENSSL_BLOCK) *)OPENSSL_sk_deep_copy(ossl_check_const_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_copyfunc_type(copyfunc), ossl_check_OPENSSL_BLOCK_freefunc_type(freefunc))) ++#define sk_OPENSSL_BLOCK_set_cmp_func(sk, cmp) ((sk_OPENSSL_BLOCK_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OPENSSL_BLOCK_sk_type(sk), ossl_check_OPENSSL_BLOCK_compfunc_type(cmp))) ++ ++#endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/srp.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/srp.h +new file mode 100644 +index 00000000..a48766c6 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/srp.h +@@ -0,0 +1,285 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/srp.h.in ++ * ++ * Copyright 2004-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2004, EdelKey Project. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 OPENSSL_SRP_H ++# define OPENSSL_SRP_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SRP_H ++# endif ++ ++#include ++ ++#ifndef OPENSSL_NO_SRP ++# include ++# include ++# include ++# include ++# include ++ ++# ifdef __cplusplus ++extern "C" { ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++ ++typedef struct SRP_gN_cache_st { ++ char *b64_bn; ++ BIGNUM *bn; ++} SRP_gN_cache; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN_cache, SRP_gN_cache, SRP_gN_cache) ++#define sk_SRP_gN_cache_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_value(sk, idx) ((SRP_gN_cache *)OPENSSL_sk_value(ossl_check_const_SRP_gN_cache_sk_type(sk), (idx))) ++#define sk_SRP_gN_cache_new(cmp) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new(ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++#define sk_SRP_gN_cache_new_null() ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_cache_new_reserve(cmp, n) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_cache_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_cache_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_cache_sk_type(sk), (n)) ++#define sk_SRP_gN_cache_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_delete(sk, i) ((SRP_gN_cache *)OPENSSL_sk_delete(ossl_check_SRP_gN_cache_sk_type(sk), (i))) ++#define sk_SRP_gN_cache_delete_ptr(sk, ptr) ((SRP_gN_cache *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_pop(sk) ((SRP_gN_cache *)OPENSSL_sk_pop(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_shift(sk) ((SRP_gN_cache *)OPENSSL_sk_shift(ossl_check_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_cache_sk_type(sk),ossl_check_SRP_gN_cache_freefunc_type(freefunc)) ++#define sk_SRP_gN_cache_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), (idx)) ++#define sk_SRP_gN_cache_set(sk, idx, ptr) ((SRP_gN_cache *)OPENSSL_sk_set(ossl_check_SRP_gN_cache_sk_type(sk), (idx), ossl_check_SRP_gN_cache_type(ptr))) ++#define sk_SRP_gN_cache_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr)) ++#define sk_SRP_gN_cache_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_type(ptr), pnum) ++#define sk_SRP_gN_cache_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_cache_sk_type(sk)) ++#define sk_SRP_gN_cache_dup(sk) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_cache_sk_type(sk))) ++#define sk_SRP_gN_cache_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN_cache) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_copyfunc_type(copyfunc), ossl_check_SRP_gN_cache_freefunc_type(freefunc))) ++#define sk_SRP_gN_cache_set_cmp_func(sk, cmp) ((sk_SRP_gN_cache_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_cache_sk_type(sk), ossl_check_SRP_gN_cache_compfunc_type(cmp))) ++ ++ ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_user_pwd, SRP_user_pwd, SRP_user_pwd) ++#define sk_SRP_user_pwd_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_value(sk, idx) ((SRP_user_pwd *)OPENSSL_sk_value(ossl_check_const_SRP_user_pwd_sk_type(sk), (idx))) ++#define sk_SRP_user_pwd_new(cmp) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new(ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++#define sk_SRP_user_pwd_new_null() ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_null()) ++#define sk_SRP_user_pwd_new_reserve(cmp, n) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_new_reserve(ossl_check_SRP_user_pwd_compfunc_type(cmp), (n))) ++#define sk_SRP_user_pwd_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_user_pwd_sk_type(sk), (n)) ++#define sk_SRP_user_pwd_free(sk) OPENSSL_sk_free(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_delete(sk, i) ((SRP_user_pwd *)OPENSSL_sk_delete(ossl_check_SRP_user_pwd_sk_type(sk), (i))) ++#define sk_SRP_user_pwd_delete_ptr(sk, ptr) ((SRP_user_pwd *)OPENSSL_sk_delete_ptr(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_pop(sk) ((SRP_user_pwd *)OPENSSL_sk_pop(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_shift(sk) ((SRP_user_pwd *)OPENSSL_sk_shift(ossl_check_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_user_pwd_sk_type(sk),ossl_check_SRP_user_pwd_freefunc_type(freefunc)) ++#define sk_SRP_user_pwd_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), (idx)) ++#define sk_SRP_user_pwd_set(sk, idx, ptr) ((SRP_user_pwd *)OPENSSL_sk_set(ossl_check_SRP_user_pwd_sk_type(sk), (idx), ossl_check_SRP_user_pwd_type(ptr))) ++#define sk_SRP_user_pwd_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr)) ++#define sk_SRP_user_pwd_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_type(ptr), pnum) ++#define sk_SRP_user_pwd_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_user_pwd_sk_type(sk)) ++#define sk_SRP_user_pwd_dup(sk) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_dup(ossl_check_const_SRP_user_pwd_sk_type(sk))) ++#define sk_SRP_user_pwd_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_user_pwd) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_copyfunc_type(copyfunc), ossl_check_SRP_user_pwd_freefunc_type(freefunc))) ++#define sk_SRP_user_pwd_set_cmp_func(sk, cmp) ((sk_SRP_user_pwd_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_user_pwd_sk_type(sk), ossl_check_SRP_user_pwd_compfunc_type(cmp))) ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_user_pwd_new(void); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_free(SRP_user_pwd *user_pwd); ++ ++OSSL_DEPRECATEDIN_3_0 ++void SRP_user_pwd_set_gN(SRP_user_pwd *user_pwd, const BIGNUM *g, ++ const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set1_ids(SRP_user_pwd *user_pwd, const char *id, ++ const char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_user_pwd_set0_sv(SRP_user_pwd *user_pwd, BIGNUM *s, BIGNUM *v); ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRP_gN, SRP_gN, SRP_gN) ++#define sk_SRP_gN_num(sk) OPENSSL_sk_num(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_value(sk, idx) ((SRP_gN *)OPENSSL_sk_value(ossl_check_const_SRP_gN_sk_type(sk), (idx))) ++#define sk_SRP_gN_new(cmp) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new(ossl_check_SRP_gN_compfunc_type(cmp))) ++#define sk_SRP_gN_new_null() ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_null()) ++#define sk_SRP_gN_new_reserve(cmp, n) ((STACK_OF(SRP_gN) *)OPENSSL_sk_new_reserve(ossl_check_SRP_gN_compfunc_type(cmp), (n))) ++#define sk_SRP_gN_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRP_gN_sk_type(sk), (n)) ++#define sk_SRP_gN_free(sk) OPENSSL_sk_free(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_zero(sk) OPENSSL_sk_zero(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_delete(sk, i) ((SRP_gN *)OPENSSL_sk_delete(ossl_check_SRP_gN_sk_type(sk), (i))) ++#define sk_SRP_gN_delete_ptr(sk, ptr) ((SRP_gN *)OPENSSL_sk_delete_ptr(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_pop(sk) ((SRP_gN *)OPENSSL_sk_pop(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_shift(sk) ((SRP_gN *)OPENSSL_sk_shift(ossl_check_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRP_gN_sk_type(sk),ossl_check_SRP_gN_freefunc_type(freefunc)) ++#define sk_SRP_gN_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), (idx)) ++#define sk_SRP_gN_set(sk, idx, ptr) ((SRP_gN *)OPENSSL_sk_set(ossl_check_SRP_gN_sk_type(sk), (idx), ossl_check_SRP_gN_type(ptr))) ++#define sk_SRP_gN_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr)) ++#define sk_SRP_gN_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_type(ptr), pnum) ++#define sk_SRP_gN_sort(sk) OPENSSL_sk_sort(ossl_check_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRP_gN_sk_type(sk)) ++#define sk_SRP_gN_dup(sk) ((STACK_OF(SRP_gN) *)OPENSSL_sk_dup(ossl_check_const_SRP_gN_sk_type(sk))) ++#define sk_SRP_gN_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRP_gN) *)OPENSSL_sk_deep_copy(ossl_check_const_SRP_gN_sk_type(sk), ossl_check_SRP_gN_copyfunc_type(copyfunc), ossl_check_SRP_gN_freefunc_type(freefunc))) ++#define sk_SRP_gN_set_cmp_func(sk, cmp) ((sk_SRP_gN_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRP_gN_sk_type(sk), ossl_check_SRP_gN_compfunc_type(cmp))) ++ ++ ++ ++OSSL_DEPRECATEDIN_3_0 ++SRP_VBASE *SRP_VBASE_new(char *seed_key); ++OSSL_DEPRECATEDIN_3_0 ++void SRP_VBASE_free(SRP_VBASE *vb); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_init(SRP_VBASE *vb, char *verifier_file); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_VBASE_add0_user(SRP_VBASE *vb, SRP_user_pwd *user_pwd); ++ ++/* NOTE: unlike in SRP_VBASE_get_by_user, caller owns the returned pointer.*/ ++OSSL_DEPRECATEDIN_3_0 ++SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username); ++ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier_ex(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_create_verifier(const char *user, const char *pass, char **salt, ++ char **verifier, const char *N, const char *g); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_create_verifier_BN_ex(const char *user, const char *pass, BIGNUM **salt, ++ BIGNUM **verifier, const BIGNUM *N, ++ const BIGNUM *g, OSSL_LIB_CTX *libctx, ++ const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++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 */ ++OSSL_DEPRECATEDIN_3_0 ++char *SRP_check_known_gN_param(const BIGNUM *g, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++SRP_gN *SRP_get_default_gN(const char *id); ++ ++/* server side .... */ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_server_key(const BIGNUM *A, const BIGNUM *v, const BIGNUM *u, ++ const BIGNUM *b, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B_ex(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v, OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_B(const BIGNUM *b, const BIGNUM *N, const BIGNUM *g, ++ const BIGNUM *v); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_A_mod_N(const BIGNUM *A, const BIGNUM *N); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u_ex(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N); ++ ++/* client side .... */ ++ ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x_ex(const BIGNUM *s, const char *user, const char *pass, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_A(const BIGNUM *a, const BIGNUM *N, const BIGNUM *g); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key_ex(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u, ++ OSSL_LIB_CTX *libctx, const char *propq); ++OSSL_DEPRECATEDIN_3_0 ++BIGNUM *SRP_Calc_client_key(const BIGNUM *N, const BIGNUM *B, const BIGNUM *g, ++ const BIGNUM *x, const BIGNUM *a, const BIGNUM *u); ++OSSL_DEPRECATEDIN_3_0 ++int SRP_Verify_B_mod_N(const BIGNUM *B, const BIGNUM *N); ++ ++# define SRP_MINIMAL_N 1024 ++ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++/* This method ignores the configured seed and fails for an unknown user. */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ++SRP_user_pwd *SRP_VBASE_get_by_user(SRP_VBASE *vb, char *username); ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++# endif ++ ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ssl.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ssl.h +new file mode 100644 +index 00000000..0f191575 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ssl.h +@@ -0,0 +1,2668 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ssl.h.in ++ * ++ * 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 Apache License 2.0 (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_SSL_H ++# define OPENSSL_SSL_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_SSL_H ++# endif ++ ++# include ++# include ++# include ++# include ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++# include ++# 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 ++/* SSL_MAX_MASTER_KEY_LENGTH is defined in prov_ssl.h */ ++ ++/* 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_kGOST18 "kGOST18" ++# 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_GOST2012_GOST8912_GOST8912 "GOST2012-GOST8912-GOST8912" ++# define SSL_TXT_CBC "CBC" ++ ++# 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. ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_cipher_list() ++ * Update both macro and function simultaneously ++ */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_DEFAULT_CIPHER_LIST "ALL:!COMPLEMENTOFDEFAULT:!eNULL" ++/* ++ * This is the default set of TLSv1.3 ciphersuites ++ * DEPRECATED IN 3.0.0, in favor of OSSL_default_ciphersuites() ++ * Update both macro and function simultaneously ++ */ ++# define TLS_DEFAULT_CIPHERSUITES "TLS_AES_256_GCM_SHA384:" \ ++ "TLS_CHACHA20_POLY1305_SHA256:" \ ++ "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; ++SKM_DEFINE_STACK_OF_INTERNAL(SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE, SRTP_PROTECTION_PROFILE) ++#define sk_SRTP_PROTECTION_PROFILE_num(sk) OPENSSL_sk_num(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_value(sk, idx) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_value(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx))) ++#define sk_SRTP_PROTECTION_PROFILE_new(cmp) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++#define sk_SRTP_PROTECTION_PROFILE_new_null() ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_null()) ++#define sk_SRTP_PROTECTION_PROFILE_new_reserve(cmp, n) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_new_reserve(ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp), (n))) ++#define sk_SRTP_PROTECTION_PROFILE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (n)) ++#define sk_SRTP_PROTECTION_PROFILE_free(sk) OPENSSL_sk_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_zero(sk) OPENSSL_sk_zero(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_delete(sk, i) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (i))) ++#define sk_SRTP_PROTECTION_PROFILE_delete_ptr(sk, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_delete_ptr(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_push(sk, ptr) OPENSSL_sk_push(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_pop(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_pop(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_shift(sk) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_shift(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk),ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc)) ++#define sk_SRTP_PROTECTION_PROFILE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), (idx)) ++#define sk_SRTP_PROTECTION_PROFILE_set(sk, idx, ptr) ((SRTP_PROTECTION_PROFILE *)OPENSSL_sk_set(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), (idx), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr))) ++#define sk_SRTP_PROTECTION_PROFILE_find(sk, ptr) OPENSSL_sk_find(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr)) ++#define sk_SRTP_PROTECTION_PROFILE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_type(ptr), pnum) ++#define sk_SRTP_PROTECTION_PROFILE_sort(sk) OPENSSL_sk_sort(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk)) ++#define sk_SRTP_PROTECTION_PROFILE_dup(sk) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_dup(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk))) ++#define sk_SRTP_PROTECTION_PROFILE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SRTP_PROTECTION_PROFILE) *)OPENSSL_sk_deep_copy(ossl_check_const_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_copyfunc_type(copyfunc), ossl_check_SRTP_PROTECTION_PROFILE_freefunc_type(freefunc))) ++#define sk_SRTP_PROTECTION_PROFILE_set_cmp_func(sk, cmp) ((sk_SRTP_PROTECTION_PROFILE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SRTP_PROTECTION_PROFILE_sk_type(sk), ossl_check_SRTP_PROTECTION_PROFILE_compfunc_type(cmp))) ++ ++ ++ ++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); ++ ++/* Typedef for SSL async callback */ ++typedef int (*SSL_async_callback_fn)(SSL *s, void *arg); ++ ++#define SSL_OP_BIT(n) ((uint64_t)1 << (uint64_t)n) ++ ++/* ++ * SSL/TLS connection options. ++ */ ++ /* Disable Extended master secret */ ++# define SSL_OP_NO_EXTENDED_MASTER_SECRET SSL_OP_BIT(0) ++ /* Cleanse plaintext copies of data delivered to the application */ ++# define SSL_OP_CLEANSE_PLAINTEXT SSL_OP_BIT(1) ++ /* Allow initial connection to servers that don't support RI */ ++# define SSL_OP_LEGACY_SERVER_CONNECT SSL_OP_BIT(2) ++ /* Enable support for Kernel TLS */ ++# define SSL_OP_ENABLE_KTLS SSL_OP_BIT(3) ++# define SSL_OP_TLSEXT_PADDING SSL_OP_BIT(4) ++# define SSL_OP_SAFARI_ECDHE_ECDSA_BUG SSL_OP_BIT(6) ++# define SSL_OP_IGNORE_UNEXPECTED_EOF SSL_OP_BIT(7) ++# define SSL_OP_ALLOW_CLIENT_RENEGOTIATION SSL_OP_BIT(8) ++# define SSL_OP_DISABLE_TLSEXT_CA_NAMES SSL_OP_BIT(9) ++ /* In TLSv1.3 allow a non-(ec)dhe based kex_mode */ ++# define SSL_OP_ALLOW_NO_DHE_KEX SSL_OP_BIT(10) ++ /* ++ * 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 SSL_OP_BIT(11) ++ /* DTLS options */ ++# define SSL_OP_NO_QUERY_MTU SSL_OP_BIT(12) ++ /* Turn on Cookie Exchange (on relevant for servers) */ ++# define SSL_OP_COOKIE_EXCHANGE SSL_OP_BIT(13) ++ /* Don't use RFC4507 ticket extension */ ++# define SSL_OP_NO_TICKET SSL_OP_BIT(14) ++# ifndef OPENSSL_NO_DTLS1_METHOD ++ /* ++ * Use Cisco's version identifier of DTLS_BAD_VER ++ * (only with deprecated DTLSv1_client_method()) ++ */ ++# define SSL_OP_CISCO_ANYCONNECT SSL_OP_BIT(15) ++# endif ++ /* As server, disallow session resumption on renegotiation */ ++# define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION SSL_OP_BIT(16) ++ /* Don't use compression even if supported */ ++# define SSL_OP_NO_COMPRESSION SSL_OP_BIT(17) ++ /* Permit unsafe legacy renegotiation */ ++# define SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION SSL_OP_BIT(18) ++ /* Disable encrypt-then-mac */ ++# define SSL_OP_NO_ENCRYPT_THEN_MAC SSL_OP_BIT(19) ++ /* ++ * 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 SSL_OP_BIT(20) ++ /* ++ * Prioritize Chacha20Poly1305 when client does. ++ * Modifies SSL_OP_CIPHER_SERVER_PREFERENCE ++ */ ++# define SSL_OP_PRIORITIZE_CHACHA SSL_OP_BIT(21) ++ /* ++ * Set on servers to choose the cipher according to server's preferences. ++ */ ++# define SSL_OP_CIPHER_SERVER_PREFERENCE SSL_OP_BIT(22) ++ /* ++ * 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 SSL_OP_BIT(23) ++ /* ++ * 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 SSL_OP_BIT(24) ++# define SSL_OP_NO_SSLv3 SSL_OP_BIT(25) ++# define SSL_OP_NO_TLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_TLSv1_2 SSL_OP_BIT(27) ++# define SSL_OP_NO_TLSv1_1 SSL_OP_BIT(28) ++# define SSL_OP_NO_TLSv1_3 SSL_OP_BIT(29) ++# define SSL_OP_NO_DTLSv1 SSL_OP_BIT(26) ++# define SSL_OP_NO_DTLSv1_2 SSL_OP_BIT(27) ++ /* Disallow all renegotiation */ ++# define SSL_OP_NO_RENEGOTIATION SSL_OP_BIT(30) ++ /* ++ * 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 SSL_OP_BIT(31) ++ ++/* ++ * Option "collections." ++ */ ++# 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 ) ++ ++/* Various bug workarounds that should be rather harmless. */ ++# define SSL_OP_ALL \ ++ ( SSL_OP_CRYPTOPRO_TLSEXT_BUG | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS \ ++ | SSL_OP_TLSEXT_PADDING | SSL_OP_SAFARI_ECDHE_ECDSA_BUG ) ++ ++/* ++ * OBSOLETE OPTIONS retained for compatibility ++ */ ++ ++# define SSL_OP_MICROSOFT_SESS_ID_BUG 0x0 ++# define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x0 ++# define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x0 ++# define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x0 ++# define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x0 ++# define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x0 ++# define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x0 ++# define SSL_OP_TLS_D5_BUG 0x0 ++# define SSL_OP_TLS_BLOCK_PADDING_BUG 0x0 ++# define SSL_OP_SINGLE_ECDH_USE 0x0 ++# define SSL_OP_SINGLE_DH_USE 0x0 ++# define SSL_OP_EPHEMERAL_RSA 0x0 ++# define SSL_OP_NO_SSLv2 0x0 ++# define SSL_OP_PKCS1_CHECK_1 0x0 ++# define SSL_OP_PKCS1_CHECK_2 0x0 ++# define SSL_OP_NETSCAPE_CA_DN_BUG 0x0 ++# 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 ++# define SSL_CONF_TYPE_STORE 0x5 ++ ++/* 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. ++ */ ++ ++uint64_t SSL_CTX_get_options(const SSL_CTX *ctx); ++uint64_t SSL_get_options(const SSL *s); ++uint64_t SSL_CTX_clear_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_clear_options(SSL *s, uint64_t op); ++uint64_t SSL_CTX_set_options(SSL_CTX *ctx, uint64_t op); ++uint64_t SSL_set_options(SSL *s, uint64_t 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) ++ ++# 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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_SRP_CTX_init(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_SRP_CTX_free(SSL *ctx); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_srp_server_param_with_username(SSL *s, ++ int *ad); ++OSSL_DEPRECATEDIN_3_0 __owur int SRP_Calc_A_param(SSL *s); ++# endif ++# 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) ++# define SSL_SESS_CACHE_UPDATE_TIME 0x0400 ++ ++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 256 ++# define PSK_MAX_PSK_LEN 512 ++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 ++# define SSL_RETRY_VERIFY 8 ++ ++/* 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_retry_verify(s) (SSL_want(s) == SSL_RETRY_VERIFY) ++# 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 ++# define SSL_MAC_FLAG_READ_MAC_TLSTREE 4 ++# define SSL_MAC_FLAG_WRITE_MAC_TLSTREE 8 ++ ++/* ++ * 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 ++ */ ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_CIPHER, const SSL_CIPHER, SSL_CIPHER) ++#define sk_SSL_CIPHER_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_value(sk, idx) ((const SSL_CIPHER *)OPENSSL_sk_value(ossl_check_const_SSL_CIPHER_sk_type(sk), (idx))) ++#define sk_SSL_CIPHER_new(cmp) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new(ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++#define sk_SSL_CIPHER_new_null() ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_null()) ++#define sk_SSL_CIPHER_new_reserve(cmp, n) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_new_reserve(ossl_check_SSL_CIPHER_compfunc_type(cmp), (n))) ++#define sk_SSL_CIPHER_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_CIPHER_sk_type(sk), (n)) ++#define sk_SSL_CIPHER_free(sk) OPENSSL_sk_free(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_delete(sk, i) ((const SSL_CIPHER *)OPENSSL_sk_delete(ossl_check_SSL_CIPHER_sk_type(sk), (i))) ++#define sk_SSL_CIPHER_delete_ptr(sk, ptr) ((const SSL_CIPHER *)OPENSSL_sk_delete_ptr(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_pop(sk) ((const SSL_CIPHER *)OPENSSL_sk_pop(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_shift(sk) ((const SSL_CIPHER *)OPENSSL_sk_shift(ossl_check_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_CIPHER_sk_type(sk),ossl_check_SSL_CIPHER_freefunc_type(freefunc)) ++#define sk_SSL_CIPHER_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), (idx)) ++#define sk_SSL_CIPHER_set(sk, idx, ptr) ((const SSL_CIPHER *)OPENSSL_sk_set(ossl_check_SSL_CIPHER_sk_type(sk), (idx), ossl_check_SSL_CIPHER_type(ptr))) ++#define sk_SSL_CIPHER_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr)) ++#define sk_SSL_CIPHER_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_type(ptr), pnum) ++#define sk_SSL_CIPHER_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_CIPHER_sk_type(sk)) ++#define sk_SSL_CIPHER_dup(sk) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_dup(ossl_check_const_SSL_CIPHER_sk_type(sk))) ++#define sk_SSL_CIPHER_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_CIPHER) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_copyfunc_type(copyfunc), ossl_check_SSL_CIPHER_freefunc_type(freefunc))) ++#define sk_SSL_CIPHER_set_cmp_func(sk, cmp) ((sk_SSL_CIPHER_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_CIPHER_sk_type(sk), ossl_check_SSL_CIPHER_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(SSL_COMP, SSL_COMP, SSL_COMP) ++#define sk_SSL_COMP_num(sk) OPENSSL_sk_num(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_value(sk, idx) ((SSL_COMP *)OPENSSL_sk_value(ossl_check_const_SSL_COMP_sk_type(sk), (idx))) ++#define sk_SSL_COMP_new(cmp) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new(ossl_check_SSL_COMP_compfunc_type(cmp))) ++#define sk_SSL_COMP_new_null() ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_null()) ++#define sk_SSL_COMP_new_reserve(cmp, n) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_new_reserve(ossl_check_SSL_COMP_compfunc_type(cmp), (n))) ++#define sk_SSL_COMP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SSL_COMP_sk_type(sk), (n)) ++#define sk_SSL_COMP_free(sk) OPENSSL_sk_free(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_zero(sk) OPENSSL_sk_zero(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_delete(sk, i) ((SSL_COMP *)OPENSSL_sk_delete(ossl_check_SSL_COMP_sk_type(sk), (i))) ++#define sk_SSL_COMP_delete_ptr(sk, ptr) ((SSL_COMP *)OPENSSL_sk_delete_ptr(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_push(sk, ptr) OPENSSL_sk_push(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_pop(sk) ((SSL_COMP *)OPENSSL_sk_pop(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_shift(sk) ((SSL_COMP *)OPENSSL_sk_shift(ossl_check_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SSL_COMP_sk_type(sk),ossl_check_SSL_COMP_freefunc_type(freefunc)) ++#define sk_SSL_COMP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), (idx)) ++#define sk_SSL_COMP_set(sk, idx, ptr) ((SSL_COMP *)OPENSSL_sk_set(ossl_check_SSL_COMP_sk_type(sk), (idx), ossl_check_SSL_COMP_type(ptr))) ++#define sk_SSL_COMP_find(sk, ptr) OPENSSL_sk_find(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr)) ++#define sk_SSL_COMP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_type(ptr), pnum) ++#define sk_SSL_COMP_sort(sk) OPENSSL_sk_sort(ossl_check_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SSL_COMP_sk_type(sk)) ++#define sk_SSL_COMP_dup(sk) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_dup(ossl_check_const_SSL_COMP_sk_type(sk))) ++#define sk_SSL_COMP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SSL_COMP) *)OPENSSL_sk_deep_copy(ossl_check_const_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_copyfunc_type(copyfunc), ossl_check_SSL_COMP_freefunc_type(freefunc))) ++#define sk_SSL_COMP_set_cmp_func(sk, cmp) ((sk_SSL_COMP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SSL_COMP_sk_type(sk), ossl_check_SSL_COMP_compfunc_type(cmp))) ++ ++ ++/* 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))) ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 void SSL_set_debug(SSL *s, int debug); ++# endif ++ ++/* 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 ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_ERROR_WANT_RETRY_VERIFY 12 ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TMP_DH 3 ++# define SSL_CTRL_SET_TMP_ECDH 4 ++# define SSL_CTRL_SET_TMP_DH_CB 6 ++# endif ++ ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 ++# endif ++# 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 ++# 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_NEGOTIATED_GROUP 134 ++# define SSL_CTRL_SET_RETRY_VERIFY 136 ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_dh(ctx,dh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# 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) ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_set_tmp_dh(ssl,dh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_DH,0,(char *)(dh)) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_CTX_set_tmp_ecdh(ctx,ecdh) \ ++ SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# define SSL_set_tmp_ecdh(ssl,ecdh) \ ++ SSL_ctrl(ssl,SSL_CTRL_SET_TMP_ECDH,0,(char *)(ecdh)) ++# endif ++# 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_get_negotiated_group(s) \ ++ SSL_ctrl(s,SSL_CTRL_GET_NEGOTIATED_GROUP,0,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) ++ ++const char *SSL_group_to_name(SSL *s, int id); ++ ++/* 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) ++ ++int SSL_set0_tmp_dh_pkey(SSL *s, EVP_PKEY *dhpkey); ++int SSL_CTX_set0_tmp_dh_pkey(SSL_CTX *ctx, EVP_PKEY *dhpkey); ++ ++/* ++ * 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 ++ ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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); ++__owur SSL_CTX *SSL_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq, ++ 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 __owur int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__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 STACK_OF(X509_NAME) ++*SSL_load_client_CA_file_ex(const char *file, OSSL_LIB_CTX *libctx, ++ const char *propq); ++__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); ++int SSL_add_store_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, ++ const char *uri); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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(const 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(const 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 OPENSSL_X509_H ++__owur X509 *SSL_get0_peer_certificate(const SSL *s); ++__owur X509 *SSL_get1_peer_certificate(const SSL *s); ++/* Deprecated in 3.0.0 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define SSL_get_peer_certificate SSL_get1_peer_certificate ++# endif ++# 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_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 ++__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, const unsigned 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, const unsigned 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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, ++ char *(*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, void *)); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, ++ int (*cb) (SSL *, int *, void *)); ++OSSL_DEPRECATEDIN_3_0 int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); ++ ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, ++ BIGNUM *sa, BIGNUM *v, char *info); ++OSSL_DEPRECATEDIN_3_0 ++int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, ++ const char *grp); ++ ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_g(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur BIGNUM *SSL_get_srp_N(SSL *s); ++ ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_username(SSL *s); ++OSSL_DEPRECATEDIN_3_0 __owur char *SSL_get_srp_userinfo(SSL *s); ++# endif ++# 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); ++__owur int SSL_CTX_set_async_callback(SSL_CTX *ctx, SSL_async_callback_fn callback); ++__owur int SSL_CTX_set_async_callback_arg(SSL_CTX *ctx, void *arg); ++__owur int SSL_set_async_callback(SSL *s, SSL_async_callback_fn callback); ++__owur int SSL_set_async_callback_arg(SSL *s, void *arg); ++__owur int SSL_get_async_status(SSL *s, int *status); ++ ++# 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 ossl_ssize_t SSL_sendfile(SSL *s, int fd, off_t offset, size_t size, ++ int flags); ++__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 */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++__owur int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); ++# endif ++ ++# ifndef OPENSSL_NO_SSL3_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *SSLv3_client_method(void); ++# endif ++# 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 ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_method(void); /* TLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_method(void); /* TLSv1.1 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_TLS1_2_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_method(void); /* TLSv1.2 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *TLSv1_2_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_METHOD ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_method(void); /* DTLSv1.0 */ ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_client_method(void); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DTLS1_2_METHOD ++/* DTLSv1.2 */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_server_method(void); ++OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *DTLSv1_2_client_method(void); ++# endif ++# 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_new_session_ticket(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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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_set_default_verify_store(SSL_CTX *ctx); ++__owur int SSL_CTX_load_verify_file(SSL_CTX *ctx, const char *CAfile); ++__owur int SSL_CTX_load_verify_dir(SSL_CTX *ctx, const char *CApath); ++__owur int SSL_CTX_load_verify_store(SSL_CTX *ctx, const char *CAstore); ++__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) ++# define SSL_set_retry_verify(ssl) \ ++ (SSL_ctrl(ssl,SSL_CTRL_SET_RETRY_VERIFY,0,NULL) > 0) ++ ++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 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++/* NB: the |keylength| is only applicable when is_export is true */ ++OSSL_DEPRECATEDIN_3_0 ++void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++OSSL_DEPRECATEDIN_3_0 ++void SSL_set_tmp_dh_callback(SSL *ssl, ++ DH *(*dh) (SSL *ssl, int is_export, ++ int keylength)); ++# endif ++# 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); ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++int 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++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); ++ ++/* store the default cipher strings inside the library */ ++const char *OSSL_default_cipher_list(void); ++const char *OSSL_default_ciphersuites(void); ++ ++# ifndef OPENSSL_NO_QUIC ++/* ++ * QUIC integration - The QUIC interface matches BoringSSL ++ * ++ * ssl_encryption_level_t represents a specific QUIC encryption level used to ++ * transmit handshake messages. BoringSSL has this as an 'enum'. ++ */ ++#include ++ ++/* Used by Chromium/QUIC - moved from evp.h to avoid breaking FIPS checksums */ ++# define X25519_PRIVATE_KEY_LEN 32 ++# define X25519_PUBLIC_VALUE_LEN 32 ++ ++/* moved from types.h to avoid breaking FIPS checksums */ ++typedef struct ssl_quic_method_st SSL_QUIC_METHOD; ++ ++typedef enum ssl_encryption_level_t { ++ ssl_encryption_initial = 0, ++ ssl_encryption_early_data, ++ ssl_encryption_handshake, ++ ssl_encryption_application ++} OSSL_ENCRYPTION_LEVEL; ++ ++struct ssl_quic_method_st { ++ int (*set_encryption_secrets)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *read_secret, ++ const uint8_t *write_secret, size_t secret_len); ++ int (*add_handshake_data)(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++ int (*flush_flight)(SSL *ssl); ++ int (*send_alert)(SSL *ssl, enum ssl_encryption_level_t level, uint8_t alert); ++}; ++ ++__owur int SSL_CTX_set_quic_method(SSL_CTX *ctx, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_method(SSL *ssl, const SSL_QUIC_METHOD *quic_method); ++__owur int SSL_set_quic_transport_params(SSL *ssl, ++ const uint8_t *params, ++ size_t params_len); ++void SSL_get_peer_quic_transport_params(const SSL *ssl, ++ const uint8_t **out_params, ++ size_t *out_params_len); ++__owur size_t SSL_quic_max_handshake_flight_len(const SSL *ssl, OSSL_ENCRYPTION_LEVEL level); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_read_level(const SSL *ssl); ++__owur OSSL_ENCRYPTION_LEVEL SSL_quic_write_level(const SSL *ssl); ++__owur int SSL_provide_quic_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL level, ++ const uint8_t *data, size_t len); ++__owur int SSL_process_quic_post_handshake(SSL *ssl); ++ ++__owur int SSL_is_quic(SSL *ssl); ++ ++/* BoringSSL API */ ++void SSL_set_quic_use_legacy_codepoint(SSL *ssl, int use_legacy); ++ ++/* ++ * Set an explicit value that you want to use ++ * If 0 (default) the server will use the highest extenstion the client sent ++ * If 0 (default) the client will send both extensions ++ */ ++void SSL_set_quic_transport_version(SSL *ssl, int version); ++__owur int SSL_get_quic_transport_version(const SSL *ssl); ++/* Returns the negotiated version, or -1 on error */ ++__owur int SSL_get_peer_quic_transport_version(const SSL *ssl); ++ ++int SSL_CIPHER_get_prf_nid(const SSL_CIPHER *c); ++ ++void SSL_set_quic_early_data_enabled(SSL *ssl, int enabled); ++ ++# endif ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ui.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ui.h +new file mode 100644 +index 00000000..e64ec3b3 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/ui.h +@@ -0,0 +1,407 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/ui.h.in ++ * ++ * Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_UI_H ++# define OPENSSL_UI_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_UI_H ++# endif ++ ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# endif ++# include ++# include ++# include ++# include ++ ++/* For compatibility reasons, the macro OPENSSL_NO_UI is currently retained */ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# 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. ++ * phrase_desc is a textual short description of the phrase to enter, ++ * for example "pass phrase", and ++ * object_name is the name of the object ++ * (which might be a card name or a file name) or NULL. ++ * 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 {phrase_desc} for {object_name}:" ++ * ++ * So, if phrase_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 *phrase_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(const 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(UI_STRING, UI_STRING, UI_STRING) ++#define sk_UI_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_value(sk, idx) ((UI_STRING *)OPENSSL_sk_value(ossl_check_const_UI_STRING_sk_type(sk), (idx))) ++#define sk_UI_STRING_new(cmp) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new(ossl_check_UI_STRING_compfunc_type(cmp))) ++#define sk_UI_STRING_new_null() ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_null()) ++#define sk_UI_STRING_new_reserve(cmp, n) ((STACK_OF(UI_STRING) *)OPENSSL_sk_new_reserve(ossl_check_UI_STRING_compfunc_type(cmp), (n))) ++#define sk_UI_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_UI_STRING_sk_type(sk), (n)) ++#define sk_UI_STRING_free(sk) OPENSSL_sk_free(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_delete(sk, i) ((UI_STRING *)OPENSSL_sk_delete(ossl_check_UI_STRING_sk_type(sk), (i))) ++#define sk_UI_STRING_delete_ptr(sk, ptr) ((UI_STRING *)OPENSSL_sk_delete_ptr(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_pop(sk) ((UI_STRING *)OPENSSL_sk_pop(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_shift(sk) ((UI_STRING *)OPENSSL_sk_shift(ossl_check_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_UI_STRING_sk_type(sk),ossl_check_UI_STRING_freefunc_type(freefunc)) ++#define sk_UI_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), (idx)) ++#define sk_UI_STRING_set(sk, idx, ptr) ((UI_STRING *)OPENSSL_sk_set(ossl_check_UI_STRING_sk_type(sk), (idx), ossl_check_UI_STRING_type(ptr))) ++#define sk_UI_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr)) ++#define sk_UI_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_type(ptr), pnum) ++#define sk_UI_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_UI_STRING_sk_type(sk)) ++#define sk_UI_STRING_dup(sk) ((STACK_OF(UI_STRING) *)OPENSSL_sk_dup(ossl_check_const_UI_STRING_sk_type(sk))) ++#define sk_UI_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(UI_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_UI_STRING_sk_type(sk), ossl_check_UI_STRING_copyfunc_type(copyfunc), ossl_check_UI_STRING_freefunc_type(freefunc))) ++#define sk_UI_STRING_set_cmp_func(sk, cmp) ((sk_UI_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_UI_STRING_sk_type(sk), ossl_check_UI_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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 ++ *phrase_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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509.h +new file mode 100644 +index 00000000..1f7755e5 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509.h +@@ -0,0 +1,1276 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509.h.in ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved ++ * ++ * Licensed under the Apache License 2.0 (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_X509_H ++# define OPENSSL_X509_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_H ++# endif ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# include ++# include ++# include ++# endif ++ ++# include ++# include ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++/* Needed stacks for types defined in other headers */ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME, X509_NAME, X509_NAME) ++#define sk_X509_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_value(sk, idx) ((X509_NAME *)OPENSSL_sk_value(ossl_check_const_X509_NAME_sk_type(sk), (idx))) ++#define sk_X509_NAME_new(cmp) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new(ossl_check_X509_NAME_compfunc_type(cmp))) ++#define sk_X509_NAME_new_null() ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_new_reserve(cmp, n) ((STACK_OF(X509_NAME) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_sk_type(sk), (n)) ++#define sk_X509_NAME_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_delete(sk, i) ((X509_NAME *)OPENSSL_sk_delete(ossl_check_X509_NAME_sk_type(sk), (i))) ++#define sk_X509_NAME_delete_ptr(sk, ptr) ((X509_NAME *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_pop(sk) ((X509_NAME *)OPENSSL_sk_pop(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_shift(sk) ((X509_NAME *)OPENSSL_sk_shift(ossl_check_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_sk_type(sk),ossl_check_X509_NAME_freefunc_type(freefunc)) ++#define sk_X509_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), (idx)) ++#define sk_X509_NAME_set(sk, idx, ptr) ((X509_NAME *)OPENSSL_sk_set(ossl_check_X509_NAME_sk_type(sk), (idx), ossl_check_X509_NAME_type(ptr))) ++#define sk_X509_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr)) ++#define sk_X509_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_type(ptr), pnum) ++#define sk_X509_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_sk_type(sk)) ++#define sk_X509_NAME_dup(sk) ((STACK_OF(X509_NAME) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_sk_type(sk))) ++#define sk_X509_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_sk_type(sk), ossl_check_X509_NAME_copyfunc_type(copyfunc), ossl_check_X509_NAME_freefunc_type(freefunc))) ++#define sk_X509_NAME_set_cmp_func(sk, cmp) ((sk_X509_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_sk_type(sk), ossl_check_X509_NAME_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509, X509, X509) ++#define sk_X509_num(sk) OPENSSL_sk_num(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_value(sk, idx) ((X509 *)OPENSSL_sk_value(ossl_check_const_X509_sk_type(sk), (idx))) ++#define sk_X509_new(cmp) ((STACK_OF(X509) *)OPENSSL_sk_new(ossl_check_X509_compfunc_type(cmp))) ++#define sk_X509_new_null() ((STACK_OF(X509) *)OPENSSL_sk_new_null()) ++#define sk_X509_new_reserve(cmp, n) ((STACK_OF(X509) *)OPENSSL_sk_new_reserve(ossl_check_X509_compfunc_type(cmp), (n))) ++#define sk_X509_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_sk_type(sk), (n)) ++#define sk_X509_free(sk) OPENSSL_sk_free(ossl_check_X509_sk_type(sk)) ++#define sk_X509_zero(sk) OPENSSL_sk_zero(ossl_check_X509_sk_type(sk)) ++#define sk_X509_delete(sk, i) ((X509 *)OPENSSL_sk_delete(ossl_check_X509_sk_type(sk), (i))) ++#define sk_X509_delete_ptr(sk, ptr) ((X509 *)OPENSSL_sk_delete_ptr(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr))) ++#define sk_X509_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_pop(sk) ((X509 *)OPENSSL_sk_pop(ossl_check_X509_sk_type(sk))) ++#define sk_X509_shift(sk) ((X509 *)OPENSSL_sk_shift(ossl_check_X509_sk_type(sk))) ++#define sk_X509_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_sk_type(sk),ossl_check_X509_freefunc_type(freefunc)) ++#define sk_X509_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), (idx)) ++#define sk_X509_set(sk, idx, ptr) ((X509 *)OPENSSL_sk_set(ossl_check_X509_sk_type(sk), (idx), ossl_check_X509_type(ptr))) ++#define sk_X509_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr)) ++#define sk_X509_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_sk_type(sk), ossl_check_X509_type(ptr), pnum) ++#define sk_X509_sort(sk) OPENSSL_sk_sort(ossl_check_X509_sk_type(sk)) ++#define sk_X509_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_sk_type(sk)) ++#define sk_X509_dup(sk) ((STACK_OF(X509) *)OPENSSL_sk_dup(ossl_check_const_X509_sk_type(sk))) ++#define sk_X509_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_sk_type(sk), ossl_check_X509_copyfunc_type(copyfunc), ossl_check_X509_freefunc_type(freefunc))) ++#define sk_X509_set_cmp_func(sk, cmp) ((sk_X509_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_sk_type(sk), ossl_check_X509_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_REVOKED, X509_REVOKED, X509_REVOKED) ++#define sk_X509_REVOKED_num(sk) OPENSSL_sk_num(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_value(sk, idx) ((X509_REVOKED *)OPENSSL_sk_value(ossl_check_const_X509_REVOKED_sk_type(sk), (idx))) ++#define sk_X509_REVOKED_new(cmp) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new(ossl_check_X509_REVOKED_compfunc_type(cmp))) ++#define sk_X509_REVOKED_new_null() ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_null()) ++#define sk_X509_REVOKED_new_reserve(cmp, n) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_new_reserve(ossl_check_X509_REVOKED_compfunc_type(cmp), (n))) ++#define sk_X509_REVOKED_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_REVOKED_sk_type(sk), (n)) ++#define sk_X509_REVOKED_free(sk) OPENSSL_sk_free(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_zero(sk) OPENSSL_sk_zero(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_delete(sk, i) ((X509_REVOKED *)OPENSSL_sk_delete(ossl_check_X509_REVOKED_sk_type(sk), (i))) ++#define sk_X509_REVOKED_delete_ptr(sk, ptr) ((X509_REVOKED *)OPENSSL_sk_delete_ptr(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_pop(sk) ((X509_REVOKED *)OPENSSL_sk_pop(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_shift(sk) ((X509_REVOKED *)OPENSSL_sk_shift(ossl_check_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_REVOKED_sk_type(sk),ossl_check_X509_REVOKED_freefunc_type(freefunc)) ++#define sk_X509_REVOKED_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), (idx)) ++#define sk_X509_REVOKED_set(sk, idx, ptr) ((X509_REVOKED *)OPENSSL_sk_set(ossl_check_X509_REVOKED_sk_type(sk), (idx), ossl_check_X509_REVOKED_type(ptr))) ++#define sk_X509_REVOKED_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr)) ++#define sk_X509_REVOKED_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_type(ptr), pnum) ++#define sk_X509_REVOKED_sort(sk) OPENSSL_sk_sort(ossl_check_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_REVOKED_sk_type(sk)) ++#define sk_X509_REVOKED_dup(sk) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_dup(ossl_check_const_X509_REVOKED_sk_type(sk))) ++#define sk_X509_REVOKED_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_REVOKED) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_copyfunc_type(copyfunc), ossl_check_X509_REVOKED_freefunc_type(freefunc))) ++#define sk_X509_REVOKED_set_cmp_func(sk, cmp) ((sk_X509_REVOKED_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_REVOKED_sk_type(sk), ossl_check_X509_REVOKED_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_CRL, X509_CRL, X509_CRL) ++#define sk_X509_CRL_num(sk) OPENSSL_sk_num(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_value(sk, idx) ((X509_CRL *)OPENSSL_sk_value(ossl_check_const_X509_CRL_sk_type(sk), (idx))) ++#define sk_X509_CRL_new(cmp) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new(ossl_check_X509_CRL_compfunc_type(cmp))) ++#define sk_X509_CRL_new_null() ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_null()) ++#define sk_X509_CRL_new_reserve(cmp, n) ((STACK_OF(X509_CRL) *)OPENSSL_sk_new_reserve(ossl_check_X509_CRL_compfunc_type(cmp), (n))) ++#define sk_X509_CRL_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_CRL_sk_type(sk), (n)) ++#define sk_X509_CRL_free(sk) OPENSSL_sk_free(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_zero(sk) OPENSSL_sk_zero(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_delete(sk, i) ((X509_CRL *)OPENSSL_sk_delete(ossl_check_X509_CRL_sk_type(sk), (i))) ++#define sk_X509_CRL_delete_ptr(sk, ptr) ((X509_CRL *)OPENSSL_sk_delete_ptr(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_pop(sk) ((X509_CRL *)OPENSSL_sk_pop(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_shift(sk) ((X509_CRL *)OPENSSL_sk_shift(ossl_check_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_CRL_sk_type(sk),ossl_check_X509_CRL_freefunc_type(freefunc)) ++#define sk_X509_CRL_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), (idx)) ++#define sk_X509_CRL_set(sk, idx, ptr) ((X509_CRL *)OPENSSL_sk_set(ossl_check_X509_CRL_sk_type(sk), (idx), ossl_check_X509_CRL_type(ptr))) ++#define sk_X509_CRL_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr)) ++#define sk_X509_CRL_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_type(ptr), pnum) ++#define sk_X509_CRL_sort(sk) OPENSSL_sk_sort(ossl_check_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_CRL_sk_type(sk)) ++#define sk_X509_CRL_dup(sk) ((STACK_OF(X509_CRL) *)OPENSSL_sk_dup(ossl_check_const_X509_CRL_sk_type(sk))) ++#define sk_X509_CRL_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_CRL) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_CRL_sk_type(sk), ossl_check_X509_CRL_copyfunc_type(copyfunc), ossl_check_X509_CRL_freefunc_type(freefunc))) ++#define sk_X509_CRL_set_cmp_func(sk, cmp) ((sk_X509_CRL_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_CRL_sk_type(sk), ossl_check_X509_CRL_compfunc_type(cmp))) ++ ++ ++/* 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_NAME_ENTRY, X509_NAME_ENTRY, X509_NAME_ENTRY) ++#define sk_X509_NAME_ENTRY_num(sk) OPENSSL_sk_num(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_value(sk, idx) ((X509_NAME_ENTRY *)OPENSSL_sk_value(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), (idx))) ++#define sk_X509_NAME_ENTRY_new(cmp) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++#define sk_X509_NAME_ENTRY_new_null() ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_null()) ++#define sk_X509_NAME_ENTRY_new_reserve(cmp, n) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_new_reserve(ossl_check_X509_NAME_ENTRY_compfunc_type(cmp), (n))) ++#define sk_X509_NAME_ENTRY_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_NAME_ENTRY_sk_type(sk), (n)) ++#define sk_X509_NAME_ENTRY_free(sk) OPENSSL_sk_free(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_zero(sk) OPENSSL_sk_zero(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_delete(sk, i) ((X509_NAME_ENTRY *)OPENSSL_sk_delete(ossl_check_X509_NAME_ENTRY_sk_type(sk), (i))) ++#define sk_X509_NAME_ENTRY_delete_ptr(sk, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_delete_ptr(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_pop(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_pop(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_shift(sk) ((X509_NAME_ENTRY *)OPENSSL_sk_shift(ossl_check_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_NAME_ENTRY_sk_type(sk),ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc)) ++#define sk_X509_NAME_ENTRY_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), (idx)) ++#define sk_X509_NAME_ENTRY_set(sk, idx, ptr) ((X509_NAME_ENTRY *)OPENSSL_sk_set(ossl_check_X509_NAME_ENTRY_sk_type(sk), (idx), ossl_check_X509_NAME_ENTRY_type(ptr))) ++#define sk_X509_NAME_ENTRY_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr)) ++#define sk_X509_NAME_ENTRY_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_type(ptr), pnum) ++#define sk_X509_NAME_ENTRY_sort(sk) OPENSSL_sk_sort(ossl_check_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_NAME_ENTRY_sk_type(sk)) ++#define sk_X509_NAME_ENTRY_dup(sk) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_dup(ossl_check_const_X509_NAME_ENTRY_sk_type(sk))) ++#define sk_X509_NAME_ENTRY_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_NAME_ENTRY) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_copyfunc_type(copyfunc), ossl_check_X509_NAME_ENTRY_freefunc_type(freefunc))) ++#define sk_X509_NAME_ENTRY_set_cmp_func(sk, cmp) ((sk_X509_NAME_ENTRY_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_NAME_ENTRY_sk_type(sk), ossl_check_X509_NAME_ENTRY_compfunc_type(cmp))) ++ ++ ++# define X509_EX_V_NETSCAPE_HACK 0x8000 ++# define X509_EX_V_INIT 0x0001 ++typedef struct X509_extension_st X509_EXTENSION; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_EXTENSION, X509_EXTENSION, X509_EXTENSION) ++#define sk_X509_EXTENSION_num(sk) OPENSSL_sk_num(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_value(sk, idx) ((X509_EXTENSION *)OPENSSL_sk_value(ossl_check_const_X509_EXTENSION_sk_type(sk), (idx))) ++#define sk_X509_EXTENSION_new(cmp) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new(ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++#define sk_X509_EXTENSION_new_null() ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_null()) ++#define sk_X509_EXTENSION_new_reserve(cmp, n) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_new_reserve(ossl_check_X509_EXTENSION_compfunc_type(cmp), (n))) ++#define sk_X509_EXTENSION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_EXTENSION_sk_type(sk), (n)) ++#define sk_X509_EXTENSION_free(sk) OPENSSL_sk_free(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_zero(sk) OPENSSL_sk_zero(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_delete(sk, i) ((X509_EXTENSION *)OPENSSL_sk_delete(ossl_check_X509_EXTENSION_sk_type(sk), (i))) ++#define sk_X509_EXTENSION_delete_ptr(sk, ptr) ((X509_EXTENSION *)OPENSSL_sk_delete_ptr(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_pop(sk) ((X509_EXTENSION *)OPENSSL_sk_pop(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_shift(sk) ((X509_EXTENSION *)OPENSSL_sk_shift(ossl_check_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_EXTENSION_sk_type(sk),ossl_check_X509_EXTENSION_freefunc_type(freefunc)) ++#define sk_X509_EXTENSION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), (idx)) ++#define sk_X509_EXTENSION_set(sk, idx, ptr) ((X509_EXTENSION *)OPENSSL_sk_set(ossl_check_X509_EXTENSION_sk_type(sk), (idx), ossl_check_X509_EXTENSION_type(ptr))) ++#define sk_X509_EXTENSION_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr)) ++#define sk_X509_EXTENSION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_type(ptr), pnum) ++#define sk_X509_EXTENSION_sort(sk) OPENSSL_sk_sort(ossl_check_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_EXTENSION_sk_type(sk)) ++#define sk_X509_EXTENSION_dup(sk) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_dup(ossl_check_const_X509_EXTENSION_sk_type(sk))) ++#define sk_X509_EXTENSION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_EXTENSION) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_copyfunc_type(copyfunc), ossl_check_X509_EXTENSION_freefunc_type(freefunc))) ++#define sk_X509_EXTENSION_set_cmp_func(sk, cmp) ((sk_X509_EXTENSION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_EXTENSION_sk_type(sk), ossl_check_X509_EXTENSION_compfunc_type(cmp))) ++ ++typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS; ++typedef struct x509_attributes_st X509_ATTRIBUTE; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_ATTRIBUTE, X509_ATTRIBUTE, X509_ATTRIBUTE) ++#define sk_X509_ATTRIBUTE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_value(sk, idx) ((X509_ATTRIBUTE *)OPENSSL_sk_value(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), (idx))) ++#define sk_X509_ATTRIBUTE_new(cmp) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++#define sk_X509_ATTRIBUTE_new_null() ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_null()) ++#define sk_X509_ATTRIBUTE_new_reserve(cmp, n) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_new_reserve(ossl_check_X509_ATTRIBUTE_compfunc_type(cmp), (n))) ++#define sk_X509_ATTRIBUTE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_ATTRIBUTE_sk_type(sk), (n)) ++#define sk_X509_ATTRIBUTE_free(sk) OPENSSL_sk_free(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_delete(sk, i) ((X509_ATTRIBUTE *)OPENSSL_sk_delete(ossl_check_X509_ATTRIBUTE_sk_type(sk), (i))) ++#define sk_X509_ATTRIBUTE_delete_ptr(sk, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_delete_ptr(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_pop(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_pop(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_shift(sk) ((X509_ATTRIBUTE *)OPENSSL_sk_shift(ossl_check_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_ATTRIBUTE_sk_type(sk),ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc)) ++#define sk_X509_ATTRIBUTE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), (idx)) ++#define sk_X509_ATTRIBUTE_set(sk, idx, ptr) ((X509_ATTRIBUTE *)OPENSSL_sk_set(ossl_check_X509_ATTRIBUTE_sk_type(sk), (idx), ossl_check_X509_ATTRIBUTE_type(ptr))) ++#define sk_X509_ATTRIBUTE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr)) ++#define sk_X509_ATTRIBUTE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_type(ptr), pnum) ++#define sk_X509_ATTRIBUTE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_ATTRIBUTE_sk_type(sk)) ++#define sk_X509_ATTRIBUTE_dup(sk) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_dup(ossl_check_const_X509_ATTRIBUTE_sk_type(sk))) ++#define sk_X509_ATTRIBUTE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_ATTRIBUTE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_copyfunc_type(copyfunc), ossl_check_X509_ATTRIBUTE_freefunc_type(freefunc))) ++#define sk_X509_ATTRIBUTE_set_cmp_func(sk, cmp) ((sk_X509_ATTRIBUTE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_ATTRIBUTE_sk_type(sk), ossl_check_X509_ATTRIBUTE_compfunc_type(cmp))) ++ ++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; ++ ++/* 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) ++# define X509_FLAG_EXTENSIONS_ONLY_KID (1L << 13) ++ ++/* 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) ++ ++typedef struct X509_crl_info_st X509_CRL_INFO; ++ ++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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_INFO, X509_INFO, X509_INFO) ++#define sk_X509_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_value(sk, idx) ((X509_INFO *)OPENSSL_sk_value(ossl_check_const_X509_INFO_sk_type(sk), (idx))) ++#define sk_X509_INFO_new(cmp) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new(ossl_check_X509_INFO_compfunc_type(cmp))) ++#define sk_X509_INFO_new_null() ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_null()) ++#define sk_X509_INFO_new_reserve(cmp, n) ((STACK_OF(X509_INFO) *)OPENSSL_sk_new_reserve(ossl_check_X509_INFO_compfunc_type(cmp), (n))) ++#define sk_X509_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_INFO_sk_type(sk), (n)) ++#define sk_X509_INFO_free(sk) OPENSSL_sk_free(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_delete(sk, i) ((X509_INFO *)OPENSSL_sk_delete(ossl_check_X509_INFO_sk_type(sk), (i))) ++#define sk_X509_INFO_delete_ptr(sk, ptr) ((X509_INFO *)OPENSSL_sk_delete_ptr(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_pop(sk) ((X509_INFO *)OPENSSL_sk_pop(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_shift(sk) ((X509_INFO *)OPENSSL_sk_shift(ossl_check_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_INFO_sk_type(sk),ossl_check_X509_INFO_freefunc_type(freefunc)) ++#define sk_X509_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), (idx)) ++#define sk_X509_INFO_set(sk, idx, ptr) ((X509_INFO *)OPENSSL_sk_set(ossl_check_X509_INFO_sk_type(sk), (idx), ossl_check_X509_INFO_type(ptr))) ++#define sk_X509_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr)) ++#define sk_X509_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_type(ptr), pnum) ++#define sk_X509_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_INFO_sk_type(sk)) ++#define sk_X509_INFO_dup(sk) ((STACK_OF(X509_INFO) *)OPENSSL_sk_dup(ossl_check_const_X509_INFO_sk_type(sk))) ++#define sk_X509_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_INFO_sk_type(sk), ossl_check_X509_INFO_copyfunc_type(copyfunc), ossl_check_X509_INFO_freefunc_type(freefunc))) ++#define sk_X509_INFO_set_cmp_func(sk, cmp) ((sk_X509_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_INFO_sk_type(sk), ossl_check_X509_INFO_compfunc_type(cmp))) ++ ++ ++/* ++ * 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, ++ const ++ ASN1_INTEGER *serial, ++ const ++ 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_self_signed(X509 *cert, int verify_signature); ++ ++int X509_REQ_verify_ex(X509_REQ *a, EVP_PKEY *r, OSSL_LIB_CTX *libctx, ++ const char *propq); ++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); ++int X509_REQ_sign(X509_REQ *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_REQ_sign_ctx(X509_REQ *x, EVP_MD_CTX *ctx); ++int X509_CRL_sign(X509_CRL *x, EVP_PKEY *pkey, const EVP_MD *md); ++int X509_CRL_sign_ctx(X509_CRL *x, EVP_MD_CTX *ctx); ++int 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); ++ASN1_OCTET_STRING *X509_digest_sig(const X509 *cert, ++ EVP_MD **md_used, int *md_is_fallback); ++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); ++ ++X509 *X509_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++X509_CRL *X509_CRL_load_http(const char *url, BIO *bio, BIO *rbio, int timeout); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# include /* OSSL_HTTP_REQ_CTX_nbio_d2i */ ++# define X509_http_nbio(rctx, pcert) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcert, ASN1_ITEM_rptr(X509)) ++# define X509_CRL_http_nbio(rctx, pcrl) \ ++ OSSL_HTTP_REQ_CTX_nbio_d2i(rctx, pcrl, ASN1_ITEM_rptr(X509_CRL)) ++# endif ++ ++# ifndef OPENSSL_NO_STDIO ++X509 *d2i_X509_fp(FILE *fp, X509 **x509); ++int i2d_X509_fp(FILE *fp, const X509 *x509); ++X509_CRL *d2i_X509_CRL_fp(FILE *fp, X509_CRL **crl); ++int i2d_X509_CRL_fp(FILE *fp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_fp(FILE *fp, X509_REQ **req); ++int i2d_X509_REQ_fp(FILE *fp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_fp(FILE *fp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_fp(FILE *fp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_fp(FILE *fp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_fp(FILE *fp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_fp(FILE *fp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_fp(FILE *fp, const DSA *dsa); ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_fp(FILE *fp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_fp(FILE *fp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_fp(FILE *fp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++X509_SIG *d2i_PKCS8_fp(FILE *fp, X509_SIG **p8); ++int i2d_PKCS8_fp(FILE *fp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_fp(FILE *fp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_fp(FILE *fp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_fp(FILE *fp, const EVP_PKEY *key); ++int i2d_PrivateKey_fp(FILE *fp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_fp(FILE *fp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_fp(FILE *fp, EVP_PKEY **a); ++int i2d_PUBKEY_fp(FILE *fp, const 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, const X509 *x509); ++X509_CRL *d2i_X509_CRL_bio(BIO *bp, X509_CRL **crl); ++int i2d_X509_CRL_bio(BIO *bp, const X509_CRL *crl); ++X509_REQ *d2i_X509_REQ_bio(BIO *bp, X509_REQ **req); ++int i2d_X509_REQ_bio(BIO *bp, const X509_REQ *req); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPrivateKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPrivateKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSAPublicKey_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSAPublicKey_bio(BIO *bp, const RSA *rsa); ++OSSL_DEPRECATEDIN_3_0 RSA *d2i_RSA_PUBKEY_bio(BIO *bp, RSA **rsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_RSA_PUBKEY_bio(BIO *bp, const RSA *rsa); ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSA_PUBKEY_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSA_PUBKEY_bio(BIO *bp, const DSA *dsa); ++OSSL_DEPRECATEDIN_3_0 DSA *d2i_DSAPrivateKey_bio(BIO *bp, DSA **dsa); ++OSSL_DEPRECATEDIN_3_0 int i2d_DSAPrivateKey_bio(BIO *bp, const DSA *dsa); ++# endif ++# endif ++ ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_EC_PUBKEY_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_EC_PUBKEY_bio(BIO *bp, const EC_KEY *eckey); ++OSSL_DEPRECATEDIN_3_0 EC_KEY *d2i_ECPrivateKey_bio(BIO *bp, EC_KEY **eckey); ++OSSL_DEPRECATEDIN_3_0 int i2d_ECPrivateKey_bio(BIO *bp, const EC_KEY *eckey); ++# endif /* OPENSSL_NO_EC */ ++# endif /* OPENSSL_NO_DEPRECATED_3_0 */ ++ ++X509_SIG *d2i_PKCS8_bio(BIO *bp, X509_SIG **p8); ++int i2d_PKCS8_bio(BIO *bp, const X509_SIG *p8); ++X509_PUBKEY *d2i_X509_PUBKEY_bio(BIO *bp, X509_PUBKEY **xpk); ++int i2d_X509_PUBKEY_bio(BIO *bp, const X509_PUBKEY *xpk); ++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, const PKCS8_PRIV_KEY_INFO *p8inf); ++int i2d_PKCS8PrivateKeyInfo_bio(BIO *bp, const EVP_PKEY *key); ++int i2d_PrivateKey_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PrivateKey_ex_bio(BIO *bp, EVP_PKEY **a, OSSL_LIB_CTX *libctx, ++ const char *propq); ++EVP_PKEY *d2i_PrivateKey_bio(BIO *bp, EVP_PKEY **a); ++int i2d_PUBKEY_bio(BIO *bp, const EVP_PKEY *pkey); ++EVP_PKEY *d2i_PUBKEY_bio(BIO *bp, EVP_PKEY **a); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509) ++DECLARE_ASN1_DUP_FUNCTION(X509_ALGOR) ++DECLARE_ASN1_DUP_FUNCTION(X509_ATTRIBUTE) ++DECLARE_ASN1_DUP_FUNCTION(X509_CRL) ++DECLARE_ASN1_DUP_FUNCTION(X509_EXTENSION) ++DECLARE_ASN1_DUP_FUNCTION(X509_PUBKEY) ++DECLARE_ASN1_DUP_FUNCTION(X509_REQ) ++DECLARE_ASN1_DUP_FUNCTION(X509_REVOKED) ++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); ++ ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME) ++DECLARE_ASN1_DUP_FUNCTION(X509_NAME_ENTRY) ++ ++int X509_cmp_time(const ASN1_TIME *s, time_t *t); ++int X509_cmp_current_time(const ASN1_TIME *s); ++int X509_cmp_timeframe(const X509_VERIFY_PARAM *vpm, ++ const ASN1_TIME *start, const ASN1_TIME *end); ++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) ++ ++X509_PUBKEY *X509_PUBKEY_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++int X509_PUBKEY_set(X509_PUBKEY **x, EVP_PKEY *pkey); ++EVP_PKEY *X509_PUBKEY_get0(const X509_PUBKEY *key); ++EVP_PKEY *X509_PUBKEY_get(const X509_PUBKEY *key); ++int X509_get_pubkey_parameters(EVP_PKEY *pkey, STACK_OF(X509) *chain); ++long X509_get_pathlen(X509 *x); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(EVP_PKEY, PUBKEY) ++EVP_PKEY *d2i_PUBKEY_ex(EVP_PKEY **a, const unsigned char **pp, long length, ++ OSSL_LIB_CTX *libctx, const char *propq); ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,RSA, RSA_PUBKEY) ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_DSA ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0,DSA, DSA_PUBKEY) ++# endif ++# endif ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# ifndef OPENSSL_NO_EC ++DECLARE_ASN1_ENCODE_FUNCTIONS_only_attr(OSSL_DEPRECATEDIN_3_0, EC_KEY, EC_PUBKEY) ++# endif ++# 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) ++X509_REQ *X509_REQ_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, const X509_NAME *name); ++ ++DECLARE_ASN1_FUNCTIONS(X509_CINF) ++DECLARE_ASN1_FUNCTIONS(X509) ++X509 *X509_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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(const X509 *r, int idx); ++DECLARE_ASN1_ENCODE_FUNCTIONS_only(X509,X509_AUX) ++ ++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); ++ ++void X509_set0_distinguishing_id(X509 *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_get0_distinguishing_id(X509 *x); ++void X509_REQ_set0_distinguishing_id(X509_REQ *x, ASN1_OCTET_STRING *d_id); ++ASN1_OCTET_STRING *X509_REQ_get0_distinguishing_id(X509_REQ *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); ++ ++DECLARE_ASN1_FUNCTIONS(X509_REVOKED) ++DECLARE_ASN1_FUNCTIONS(X509_CRL_INFO) ++DECLARE_ASN1_FUNCTIONS(X509_CRL) ++X509_CRL *X509_CRL_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_CRL_add0_revoked(X509_CRL *crl, X509_REVOKED *rev); ++int X509_CRL_get0_by_serial(X509_CRL *crl, ++ X509_REVOKED **ret, const 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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_verify(i2d_of_void *i2d, X509_ALGOR *algor1, ++ ASN1_BIT_STRING *signature, char *data, EVP_PKEY *pkey); ++OSSL_DEPRECATEDIN_3_0 ++int ASN1_digest(i2d_of_void *i2d, const EVP_MD *type, char *data, ++ unsigned char *md, unsigned int *len); ++OSSL_DEPRECATEDIN_3_0 ++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); ++#endif ++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, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey); ++int ASN1_item_verify_ctx(const ASN1_ITEM *it, const X509_ALGOR *alg, ++ const ASN1_BIT_STRING *signature, const void *data, ++ EVP_MD_CTX *ctx); ++int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2, ++ ASN1_BIT_STRING *signature, const void *data, ++ EVP_PKEY *pkey, const EVP_MD *md); ++int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1, ++ X509_ALGOR *algor2, ASN1_BIT_STRING *signature, ++ const void *data, EVP_MD_CTX *ctx); ++ ++#define X509_VERSION_1 0 ++#define X509_VERSION_2 1 ++#define X509_VERSION_3 2 ++ ++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, const X509_NAME *name); ++X509_NAME *X509_get_issuer_name(const X509 *a); ++int X509_set_subject_name(X509 *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++ ++#define X509_REQ_VERSION_1 0 ++ ++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, const 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, ++ const STACK_OF(X509_EXTENSION) *exts, int nid); ++int X509_REQ_add_extensions(X509_REQ *req, const STACK_OF(X509_EXTENSION) *ext); ++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); ++ ++#define X509_CRL_VERSION_1 0 ++#define X509_CRL_VERSION_2 1 ++ ++int X509_CRL_set_version(X509_CRL *x, long version); ++int X509_CRL_set_issuer_name(X509_CRL *x, const 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); ++ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_lastUpdate(X509_CRL *crl); ++OSSL_DEPRECATEDIN_1_1_0 ASN1_TIME *X509_CRL_get_nextUpdate(X509_CRL *crl); ++#endif ++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 ++ ++# define X509_ADD_FLAG_DEFAULT 0 ++# define X509_ADD_FLAG_UP_REF 0x1 ++# define X509_ADD_FLAG_PREPEND 0x2 ++# define X509_ADD_FLAG_NO_DUP 0x4 ++# define X509_ADD_FLAG_NO_SS 0x8 ++int X509_add_cert(STACK_OF(X509) *sk, X509 *cert, int flags); ++int X509_add_certs(STACK_OF(X509) *sk, STACK_OF(X509) *certs, int flags); ++ ++int X509_cmp(const X509 *a, const X509 *b); ++int X509_NAME_cmp(const X509_NAME *a, const X509_NAME *b); ++#ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define X509_NAME_hash(x) X509_NAME_hash_ex(x, NULL, NULL, NULL) ++OSSL_DEPRECATEDIN_3_0 int X509_certificate_type(const X509 *x, ++ const EVP_PKEY *pubkey); ++#endif ++unsigned long X509_NAME_hash_ex(const X509_NAME *x, OSSL_LIB_CTX *libctx, ++ const char *propq, int *ok); ++unsigned long X509_NAME_hash_old(const 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(const X509_NAME *name, int nid, ++ char *buf, int len); ++int X509_NAME_get_text_by_OBJ(const 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(const X509_NAME *name, int nid, int lastpos); ++int X509_NAME_get_index_by_OBJ(const 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(const 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); ++ ++/* lookup a cert from a X509 STACK */ ++X509 *X509_find_by_issuer_and_serial(STACK_OF(X509) *sk, const X509_NAME *name, ++ const ASN1_INTEGER *serial); ++X509 *X509_find_by_subject(STACK_OF(X509) *sk, const 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); ++int PKCS5_pbe_set0_algor_ex(X509_ALGOR *algor, int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe_set(int alg, int iter, ++ const unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe_set_ex(int alg, int iter, ++ const unsigned char *salt, int saltlen, ++ OSSL_LIB_CTX *libctx); ++ ++X509_ALGOR *PKCS5_pbe2_set(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen); ++X509_ALGOR *PKCS5_pbe2_set_iv(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid); ++X509_ALGOR *PKCS5_pbe2_set_iv_ex(const EVP_CIPHER *cipher, int iter, ++ unsigned char *salt, int saltlen, ++ unsigned char *aiv, int prf_nid, ++ OSSL_LIB_CTX *libctx); ++ ++#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); ++X509_ALGOR *PKCS5_pbkdf2_set_ex(int iter, unsigned char *salt, int saltlen, ++ int prf_nid, int keylen, ++ OSSL_LIB_CTX *libctx); ++ ++/* PKCS#8 utilities */ ++ ++DECLARE_ASN1_FUNCTIONS(PKCS8_PRIV_KEY_INFO) ++ ++EVP_PKEY *EVP_PKCS82PKEY(const PKCS8_PRIV_KEY_INFO *p8); ++EVP_PKEY *EVP_PKCS82PKEY_ex(const PKCS8_PRIV_KEY_INFO *p8, OSSL_LIB_CTX *libctx, ++ const char *propq); ++PKCS8_PRIV_KEY_INFO *EVP_PKEY2PKCS8(const 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(PKCS8_PRIV_KEY_INFO *p8, X509_ATTRIBUTE *attr); ++int PKCS8_pkey_add1_attr_by_NID(PKCS8_PRIV_KEY_INFO *p8, int nid, int type, ++ const unsigned char *bytes, int len); ++int PKCS8_pkey_add1_attr_by_OBJ(PKCS8_PRIV_KEY_INFO *p8, const ASN1_OBJECT *obj, ++ 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, const X509_PUBKEY *pub); ++int X509_PUBKEY_eq(const X509_PUBKEY *a, const X509_PUBKEY *b); ++ ++# ifdef __cplusplus ++} ++# endif ++#endif +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509_vfy.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509_vfy.h +new file mode 100644 +index 00000000..29b0e147 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509_vfy.h +@@ -0,0 +1,894 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509_vfy.h.in ++ * ++ * Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509_VFY_H ++# define OPENSSL_X509_VFY_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509_VFY_H ++# endif ++ ++/* ++ * Protect against recursion, x509.h and x509_vfy.h each include the other. ++ */ ++# ifndef OPENSSL_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; ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++#define X509_LU_RETRY -1 ++#define X509_LU_FAIL 0 ++#endif ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_LOOKUP, X509_LOOKUP, X509_LOOKUP) ++#define sk_X509_LOOKUP_num(sk) OPENSSL_sk_num(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_value(sk, idx) ((X509_LOOKUP *)OPENSSL_sk_value(ossl_check_const_X509_LOOKUP_sk_type(sk), (idx))) ++#define sk_X509_LOOKUP_new(cmp) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new(ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++#define sk_X509_LOOKUP_new_null() ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_null()) ++#define sk_X509_LOOKUP_new_reserve(cmp, n) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_new_reserve(ossl_check_X509_LOOKUP_compfunc_type(cmp), (n))) ++#define sk_X509_LOOKUP_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_LOOKUP_sk_type(sk), (n)) ++#define sk_X509_LOOKUP_free(sk) OPENSSL_sk_free(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_zero(sk) OPENSSL_sk_zero(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_delete(sk, i) ((X509_LOOKUP *)OPENSSL_sk_delete(ossl_check_X509_LOOKUP_sk_type(sk), (i))) ++#define sk_X509_LOOKUP_delete_ptr(sk, ptr) ((X509_LOOKUP *)OPENSSL_sk_delete_ptr(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_pop(sk) ((X509_LOOKUP *)OPENSSL_sk_pop(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_shift(sk) ((X509_LOOKUP *)OPENSSL_sk_shift(ossl_check_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_LOOKUP_sk_type(sk),ossl_check_X509_LOOKUP_freefunc_type(freefunc)) ++#define sk_X509_LOOKUP_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), (idx)) ++#define sk_X509_LOOKUP_set(sk, idx, ptr) ((X509_LOOKUP *)OPENSSL_sk_set(ossl_check_X509_LOOKUP_sk_type(sk), (idx), ossl_check_X509_LOOKUP_type(ptr))) ++#define sk_X509_LOOKUP_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr)) ++#define sk_X509_LOOKUP_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_type(ptr), pnum) ++#define sk_X509_LOOKUP_sort(sk) OPENSSL_sk_sort(ossl_check_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_LOOKUP_sk_type(sk)) ++#define sk_X509_LOOKUP_dup(sk) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_dup(ossl_check_const_X509_LOOKUP_sk_type(sk))) ++#define sk_X509_LOOKUP_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_LOOKUP) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_copyfunc_type(copyfunc), ossl_check_X509_LOOKUP_freefunc_type(freefunc))) ++#define sk_X509_LOOKUP_set_cmp_func(sk, cmp) ((sk_X509_LOOKUP_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_LOOKUP_sk_type(sk), ossl_check_X509_LOOKUP_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_OBJECT, X509_OBJECT, X509_OBJECT) ++#define sk_X509_OBJECT_num(sk) OPENSSL_sk_num(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_value(sk, idx) ((X509_OBJECT *)OPENSSL_sk_value(ossl_check_const_X509_OBJECT_sk_type(sk), (idx))) ++#define sk_X509_OBJECT_new(cmp) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new(ossl_check_X509_OBJECT_compfunc_type(cmp))) ++#define sk_X509_OBJECT_new_null() ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_null()) ++#define sk_X509_OBJECT_new_reserve(cmp, n) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_new_reserve(ossl_check_X509_OBJECT_compfunc_type(cmp), (n))) ++#define sk_X509_OBJECT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_OBJECT_sk_type(sk), (n)) ++#define sk_X509_OBJECT_free(sk) OPENSSL_sk_free(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_zero(sk) OPENSSL_sk_zero(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_delete(sk, i) ((X509_OBJECT *)OPENSSL_sk_delete(ossl_check_X509_OBJECT_sk_type(sk), (i))) ++#define sk_X509_OBJECT_delete_ptr(sk, ptr) ((X509_OBJECT *)OPENSSL_sk_delete_ptr(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_pop(sk) ((X509_OBJECT *)OPENSSL_sk_pop(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_shift(sk) ((X509_OBJECT *)OPENSSL_sk_shift(ossl_check_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_OBJECT_sk_type(sk),ossl_check_X509_OBJECT_freefunc_type(freefunc)) ++#define sk_X509_OBJECT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), (idx)) ++#define sk_X509_OBJECT_set(sk, idx, ptr) ((X509_OBJECT *)OPENSSL_sk_set(ossl_check_X509_OBJECT_sk_type(sk), (idx), ossl_check_X509_OBJECT_type(ptr))) ++#define sk_X509_OBJECT_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr)) ++#define sk_X509_OBJECT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_type(ptr), pnum) ++#define sk_X509_OBJECT_sort(sk) OPENSSL_sk_sort(ossl_check_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_OBJECT_sk_type(sk)) ++#define sk_X509_OBJECT_dup(sk) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_dup(ossl_check_const_X509_OBJECT_sk_type(sk))) ++#define sk_X509_OBJECT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_OBJECT) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_copyfunc_type(copyfunc), ossl_check_X509_OBJECT_freefunc_type(freefunc))) ++#define sk_X509_OBJECT_set_cmp_func(sk, cmp) ((sk_X509_OBJECT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_OBJECT_sk_type(sk), ossl_check_X509_OBJECT_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(X509_VERIFY_PARAM, X509_VERIFY_PARAM, X509_VERIFY_PARAM) ++#define sk_X509_VERIFY_PARAM_num(sk) OPENSSL_sk_num(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_value(sk, idx) ((X509_VERIFY_PARAM *)OPENSSL_sk_value(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), (idx))) ++#define sk_X509_VERIFY_PARAM_new(cmp) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++#define sk_X509_VERIFY_PARAM_new_null() ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_null()) ++#define sk_X509_VERIFY_PARAM_new_reserve(cmp, n) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_new_reserve(ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp), (n))) ++#define sk_X509_VERIFY_PARAM_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (n)) ++#define sk_X509_VERIFY_PARAM_free(sk) OPENSSL_sk_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_zero(sk) OPENSSL_sk_zero(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_delete(sk, i) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (i))) ++#define sk_X509_VERIFY_PARAM_delete_ptr(sk, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_delete_ptr(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_pop(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_pop(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_shift(sk) ((X509_VERIFY_PARAM *)OPENSSL_sk_shift(ossl_check_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_VERIFY_PARAM_sk_type(sk),ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc)) ++#define sk_X509_VERIFY_PARAM_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), (idx)) ++#define sk_X509_VERIFY_PARAM_set(sk, idx, ptr) ((X509_VERIFY_PARAM *)OPENSSL_sk_set(ossl_check_X509_VERIFY_PARAM_sk_type(sk), (idx), ossl_check_X509_VERIFY_PARAM_type(ptr))) ++#define sk_X509_VERIFY_PARAM_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr)) ++#define sk_X509_VERIFY_PARAM_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_type(ptr), pnum) ++#define sk_X509_VERIFY_PARAM_sort(sk) OPENSSL_sk_sort(ossl_check_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk)) ++#define sk_X509_VERIFY_PARAM_dup(sk) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_dup(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk))) ++#define sk_X509_VERIFY_PARAM_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_VERIFY_PARAM) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_copyfunc_type(copyfunc), ossl_check_X509_VERIFY_PARAM_freefunc_type(freefunc))) ++#define sk_X509_VERIFY_PARAM_set_cmp_func(sk, cmp) ((sk_X509_VERIFY_PARAM_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_VERIFY_PARAM_sk_type(sk), ossl_check_X509_VERIFY_PARAM_compfunc_type(cmp))) ++ ++ ++/* 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; ++SKM_DEFINE_STACK_OF_INTERNAL(X509_TRUST, X509_TRUST, X509_TRUST) ++#define sk_X509_TRUST_num(sk) OPENSSL_sk_num(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_value(sk, idx) ((X509_TRUST *)OPENSSL_sk_value(ossl_check_const_X509_TRUST_sk_type(sk), (idx))) ++#define sk_X509_TRUST_new(cmp) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new(ossl_check_X509_TRUST_compfunc_type(cmp))) ++#define sk_X509_TRUST_new_null() ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_null()) ++#define sk_X509_TRUST_new_reserve(cmp, n) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_new_reserve(ossl_check_X509_TRUST_compfunc_type(cmp), (n))) ++#define sk_X509_TRUST_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_TRUST_sk_type(sk), (n)) ++#define sk_X509_TRUST_free(sk) OPENSSL_sk_free(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_zero(sk) OPENSSL_sk_zero(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_delete(sk, i) ((X509_TRUST *)OPENSSL_sk_delete(ossl_check_X509_TRUST_sk_type(sk), (i))) ++#define sk_X509_TRUST_delete_ptr(sk, ptr) ((X509_TRUST *)OPENSSL_sk_delete_ptr(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_pop(sk) ((X509_TRUST *)OPENSSL_sk_pop(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_shift(sk) ((X509_TRUST *)OPENSSL_sk_shift(ossl_check_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_TRUST_sk_type(sk),ossl_check_X509_TRUST_freefunc_type(freefunc)) ++#define sk_X509_TRUST_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), (idx)) ++#define sk_X509_TRUST_set(sk, idx, ptr) ((X509_TRUST *)OPENSSL_sk_set(ossl_check_X509_TRUST_sk_type(sk), (idx), ossl_check_X509_TRUST_type(ptr))) ++#define sk_X509_TRUST_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr)) ++#define sk_X509_TRUST_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_type(ptr), pnum) ++#define sk_X509_TRUST_sort(sk) OPENSSL_sk_sort(ossl_check_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_TRUST_sk_type(sk)) ++#define sk_X509_TRUST_dup(sk) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_dup(ossl_check_const_X509_TRUST_sk_type(sk))) ++#define sk_X509_TRUST_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_TRUST) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_copyfunc_type(copyfunc), ossl_check_X509_TRUST_freefunc_type(freefunc))) ++#define sk_X509_TRUST_set_cmp_func(sk, cmp) ((sk_X509_TRUST_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_TRUST_sk_type(sk), ossl_check_X509_TRUST_compfunc_type(cmp))) ++ ++ ++/* 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 rejection OID and 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 ++ ++int X509_TRUST_set(int *t, int trust); ++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); ++ ++int X509_trusted(const X509 *x); ++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); ++ ++int (*X509_TRUST_set_default(int (*trust) (int, X509 *, int))) (int, X509 *, ++ int); ++int X509_check_trust(X509 *x, int id, int flags); ++ ++int X509_verify_cert(X509_STORE_CTX *ctx); ++int X509_STORE_CTX_verify(X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_build_chain(X509 *target, STACK_OF(X509) *certs, ++ X509_STORE *store, int with_self_signed, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_STORE_set_depth(X509_STORE *store, int depth); ++ ++typedef int (*X509_STORE_CTX_verify_cb)(int, X509_STORE_CTX *); ++int X509_STORE_CTX_print_verify_cb(int ok, X509_STORE_CTX *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, ++ const X509_NAME *nm); ++typedef STACK_OF(X509_CRL) ++ *(*X509_STORE_CTX_lookup_crls_fn)(const X509_STORE_CTX *ctx, ++ const 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_L_ADD_STORE 3 ++# define X509_L_LOAD_STORE 4 ++ ++# 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_LOOKUP_add_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_ADD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_store(x,name) \ ++ X509_LOOKUP_ctrl((x),X509_L_LOAD_STORE,(name),0,NULL) ++ ++# define X509_LOOKUP_load_file_ex(x, name, type, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_FILE_LOAD, (name), (long)(type), NULL,\ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_load_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_LOAD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# define X509_LOOKUP_add_store_ex(x, name, libctx, propq) \ ++X509_LOOKUP_ctrl_ex((x), X509_L_ADD_STORE, (name), 0, NULL, \ ++ (libctx), (propq)) ++ ++# 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_NO_ISSUER_PUBLIC_KEY 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_UNSUPPORTED_SIGNATURE_ALGORITHM 76 ++# define X509_V_ERR_SIGNATURE_ALGORITHM_MISMATCH 77 ++ ++/* Errors in case a check in X509_V_FLAG_X509_STRICT mode fails */ ++# define X509_V_ERR_SIGNATURE_ALGORITHM_INCONSISTENCY 78 ++# define X509_V_ERR_INVALID_CA 79 ++# define X509_V_ERR_PATHLEN_INVALID_FOR_NON_CA 80 ++# define X509_V_ERR_PATHLEN_WITHOUT_KU_KEY_CERT_SIGN 81 ++# define X509_V_ERR_KU_KEY_CERT_SIGN_INVALID_FOR_NON_CA 82 ++# define X509_V_ERR_ISSUER_NAME_EMPTY 83 ++# define X509_V_ERR_SUBJECT_NAME_EMPTY 84 ++# define X509_V_ERR_MISSING_AUTHORITY_KEY_IDENTIFIER 85 ++# define X509_V_ERR_MISSING_SUBJECT_KEY_IDENTIFIER 86 ++# define X509_V_ERR_EMPTY_SUBJECT_ALT_NAME 87 ++# define X509_V_ERR_EMPTY_SUBJECT_SAN_NOT_CRITICAL 88 ++# define X509_V_ERR_CA_BCONS_NOT_CRITICAL 89 ++# define X509_V_ERR_AUTHORITY_KEY_IDENTIFIER_CRITICAL 90 ++# define X509_V_ERR_SUBJECT_KEY_IDENTIFIER_CRITICAL 91 ++# define X509_V_ERR_CA_CERT_MISSING_KEY_USAGE 92 ++# define X509_V_ERR_EXTENSIONS_REQUIRE_VERSION_3 93 ++# define X509_V_ERR_EC_KEY_EXPLICIT_PARAMS 94 ++ ++/* Certificate verify flags */ ++# ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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, ++ const X509_NAME *name); ++X509_OBJECT *X509_OBJECT_retrieve_by_subject(STACK_OF(X509_OBJECT) *h, ++ X509_LOOKUP_TYPE type, ++ const 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(const 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(const X509_STORE *v); ++STACK_OF(X509) *X509_STORE_get1_all_certs(X509_STORE *st); ++STACK_OF(X509) *X509_STORE_CTX_get1_certs(X509_STORE_CTX *st, ++ const X509_NAME *nm); ++STACK_OF(X509_CRL) *X509_STORE_CTX_get1_crls(const X509_STORE_CTX *st, ++ const 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, const X509_VERIFY_PARAM *pm); ++X509_VERIFY_PARAM *X509_STORE_get0_param(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const 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(const X509_STORE *ctx, int idx); ++ ++X509_STORE_CTX *X509_STORE_CTX_new_ex(OSSL_LIB_CTX *libctx, const char *propq); ++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 *trust_store, ++ X509 *target, STACK_OF(X509) *untrusted); ++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(const X509_STORE_CTX *ctx); ++X509 *X509_STORE_CTX_get0_cert(const X509_STORE_CTX *ctx); ++STACK_OF(X509)* X509_STORE_CTX_get0_untrusted(const 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(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_verify_fn X509_STORE_CTX_get_verify(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_issuer_fn X509_STORE_CTX_get_get_issuer(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_issued_fn X509_STORE_CTX_get_check_issued(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_revocation_fn X509_STORE_CTX_get_check_revocation(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_get_crl_fn X509_STORE_CTX_get_get_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_crl_fn X509_STORE_CTX_get_check_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cert_crl_fn X509_STORE_CTX_get_cert_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_check_policy_fn X509_STORE_CTX_get_check_policy(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_certs_fn X509_STORE_CTX_get_lookup_certs(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_lookup_crls_fn X509_STORE_CTX_get_lookup_crls(const X509_STORE_CTX *ctx); ++X509_STORE_CTX_cleanup_fn X509_STORE_CTX_get_cleanup(const X509_STORE_CTX *ctx); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++# 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); ++X509_LOOKUP_METHOD *X509_LOOKUP_store(void); ++ ++typedef int (*X509_LOOKUP_ctrl_fn)(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++typedef int (*X509_LOOKUP_ctrl_ex_fn)( ++ X509_LOOKUP *ctx, int cmd, const char *argc, long argl, char **ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++typedef int (*X509_LOOKUP_get_by_subject_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret); ++typedef int (*X509_LOOKUP_get_by_subject_ex_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, ++ const char *propq); ++typedef int (*X509_LOOKUP_get_by_issuer_serial_fn)(X509_LOOKUP *ctx, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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(const X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret); ++X509_OBJECT *X509_STORE_CTX_get_obj_by_subject(X509_STORE_CTX *vs, ++ X509_LOOKUP_TYPE type, ++ const X509_NAME *name); ++ ++int X509_LOOKUP_ctrl(X509_LOOKUP *ctx, int cmd, const char *argc, ++ long argl, char **ret); ++int X509_LOOKUP_ctrl_ex(X509_LOOKUP *ctx, int cmd, const char *argc, long argl, ++ char **ret, OSSL_LIB_CTX *libctx, const char *propq); ++ ++int X509_load_cert_file(X509_LOOKUP *ctx, const char *file, int type); ++int X509_load_cert_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++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); ++int X509_load_cert_crl_file_ex(X509_LOOKUP *ctx, const char *file, int type, ++ OSSL_LIB_CTX *libctx, const char *propq); ++ ++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, ++ const X509_NAME *name, X509_OBJECT *ret); ++int X509_LOOKUP_by_subject_ex(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, X509_OBJECT *ret, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_LOOKUP_by_issuer_serial(X509_LOOKUP *ctx, X509_LOOKUP_TYPE type, ++ const X509_NAME *name, ++ const 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_file(X509_STORE *ctx, const char *file); ++int X509_STORE_load_path(X509_STORE *ctx, const char *path); ++int X509_STORE_load_store(X509_STORE *ctx, const char *store); ++int X509_STORE_load_locations(X509_STORE *ctx, ++ const char *file, ++ const char *dir); ++int X509_STORE_set_default_paths(X509_STORE *ctx); ++ ++int X509_STORE_load_file_ex(X509_STORE *ctx, const char *file, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_store_ex(X509_STORE *ctx, const char *store, ++ OSSL_LIB_CTX *libctx, const char *propq); ++int X509_STORE_load_locations_ex(X509_STORE *ctx, const char *file, ++ const char *dir, OSSL_LIB_CTX *libctx, ++ const char *propq); ++int X509_STORE_set_default_paths_ex(X509_STORE *ctx, OSSL_LIB_CTX *libctx, ++ const char *propq); ++ ++#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(const X509_STORE_CTX *ctx, int idx); ++int X509_STORE_CTX_get_error(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error(X509_STORE_CTX *ctx, int s); ++int X509_STORE_CTX_get_error_depth(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_error_depth(X509_STORE_CTX *ctx, int depth); ++X509 *X509_STORE_CTX_get_current_cert(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_current_cert(X509_STORE_CTX *ctx, X509 *x); ++X509 *X509_STORE_CTX_get0_current_issuer(const X509_STORE_CTX *ctx); ++X509_CRL *X509_STORE_CTX_get0_current_crl(const X509_STORE_CTX *ctx); ++X509_STORE_CTX *X509_STORE_CTX_get0_parent_ctx(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get0_chain(const X509_STORE_CTX *ctx); ++STACK_OF(X509) *X509_STORE_CTX_get1_chain(const X509_STORE_CTX *ctx); ++void X509_STORE_CTX_set_cert(X509_STORE_CTX *ctx, X509 *target); ++void X509_STORE_CTX_set0_verified_chain(X509_STORE_CTX *c, STACK_OF(X509) *sk); ++void X509_STORE_CTX_set0_crls(X509_STORE_CTX *ctx, 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(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_explicit_policy(const X509_STORE_CTX *ctx); ++int X509_STORE_CTX_get_num_untrusted(const X509_STORE_CTX *ctx); ++ ++X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(const 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(const 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); ++ ++char *X509_VERIFY_PARAM_get0_host(X509_VERIFY_PARAM *param, int idx); ++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(const X509_VERIFY_PARAM *param); ++void X509_VERIFY_PARAM_move_peername(X509_VERIFY_PARAM *, X509_VERIFY_PARAM *); ++char *X509_VERIFY_PARAM_get0_email(X509_VERIFY_PARAM *param); ++int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *param, ++ const char *email, size_t emaillen); ++char *X509_VERIFY_PARAM_get1_ip_asc(X509_VERIFY_PARAM *param); ++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(const 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/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509v3.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509v3.h +new file mode 100644 +index 00000000..7ec87026 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/openssl/x509v3.h +@@ -0,0 +1,1450 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from include/openssl/x509v3.h.in ++ * ++ * Copyright 1999-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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_X509V3_H ++# define OPENSSL_X509V3_H ++# pragma once ++ ++# include ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define HEADER_X509V3_H ++# endif ++ ++# 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) (const 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 for producing X509 v3 extensions*/ ++struct v3_ext_ctx { ++# define X509V3_CTX_TEST 0x1 ++# ifndef OPENSSL_NO_DEPRECATED_3_0 ++# define CTX_TEST X509V3_CTX_TEST ++# endif ++# 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; ++ EVP_PKEY *issuer_pkey; ++/* Maybe more here */ ++}; ++ ++typedef struct v3_ext_method X509V3_EXT_METHOD; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509V3_EXT_METHOD, X509V3_EXT_METHOD, X509V3_EXT_METHOD) ++#define sk_X509V3_EXT_METHOD_num(sk) OPENSSL_sk_num(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_value(sk, idx) ((X509V3_EXT_METHOD *)OPENSSL_sk_value(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), (idx))) ++#define sk_X509V3_EXT_METHOD_new(cmp) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++#define sk_X509V3_EXT_METHOD_new_null() ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_null()) ++#define sk_X509V3_EXT_METHOD_new_reserve(cmp, n) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_new_reserve(ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp), (n))) ++#define sk_X509V3_EXT_METHOD_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (n)) ++#define sk_X509V3_EXT_METHOD_free(sk) OPENSSL_sk_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_zero(sk) OPENSSL_sk_zero(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_delete(sk, i) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (i))) ++#define sk_X509V3_EXT_METHOD_delete_ptr(sk, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_delete_ptr(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_pop(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_pop(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_shift(sk) ((X509V3_EXT_METHOD *)OPENSSL_sk_shift(ossl_check_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509V3_EXT_METHOD_sk_type(sk),ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc)) ++#define sk_X509V3_EXT_METHOD_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), (idx)) ++#define sk_X509V3_EXT_METHOD_set(sk, idx, ptr) ((X509V3_EXT_METHOD *)OPENSSL_sk_set(ossl_check_X509V3_EXT_METHOD_sk_type(sk), (idx), ossl_check_X509V3_EXT_METHOD_type(ptr))) ++#define sk_X509V3_EXT_METHOD_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr)) ++#define sk_X509V3_EXT_METHOD_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_type(ptr), pnum) ++#define sk_X509V3_EXT_METHOD_sort(sk) OPENSSL_sk_sort(ossl_check_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk)) ++#define sk_X509V3_EXT_METHOD_dup(sk) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_dup(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk))) ++#define sk_X509V3_EXT_METHOD_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509V3_EXT_METHOD) *)OPENSSL_sk_deep_copy(ossl_check_const_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_copyfunc_type(copyfunc), ossl_check_X509V3_EXT_METHOD_freefunc_type(freefunc))) ++#define sk_X509V3_EXT_METHOD_set_cmp_func(sk, cmp) ((sk_X509V3_EXT_METHOD_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509V3_EXT_METHOD_sk_type(sk), ossl_check_X509V3_EXT_METHOD_compfunc_type(cmp))) ++ ++ ++/* ext_flags values */ ++# define X509V3_EXT_DYNAMIC 0x1 ++# define X509V3_EXT_CTX_DEP 0x2 ++# define X509V3_EXT_MULTILINE 0x4 ++ ++typedef BIT_STRING_BITNAME ENUMERATED_NAMES; ++ ++typedef struct BASIC_CONSTRAINTS_st { ++ int ca; ++ ASN1_INTEGER *pathlen; ++} BASIC_CONSTRAINTS; ++ ++typedef struct PKEY_USAGE_PERIOD_st { ++ ASN1_GENERALIZEDTIME *notBefore; ++ ASN1_GENERALIZEDTIME *notAfter; ++} PKEY_USAGE_PERIOD; ++ ++typedef struct otherName_st { ++ ASN1_OBJECT *type_id; ++ ASN1_TYPE *value; ++} OTHERNAME; ++ ++typedef struct EDIPartyName_st { ++ ASN1_STRING *nameAssigner; ++ ASN1_STRING *partyName; ++} EDIPARTYNAME; ++ ++typedef struct GENERAL_NAME_st { ++# define GEN_OTHERNAME 0 ++# define GEN_EMAIL 1 ++# define GEN_DNS 2 ++# define GEN_X400 3 ++# define GEN_DIRNAME 4 ++# define GEN_EDIPARTY 5 ++# define GEN_URI 6 ++# define GEN_IPADD 7 ++# define GEN_RID 8 ++ int type; ++ union { ++ char *ptr; ++ OTHERNAME *otherName; /* otherName */ ++ ASN1_IA5STRING *rfc822Name; ++ ASN1_IA5STRING *dNSName; ++ ASN1_TYPE *x400Address; ++ X509_NAME *directoryName; ++ EDIPARTYNAME *ediPartyName; ++ ASN1_IA5STRING *uniformResourceIdentifier; ++ ASN1_OCTET_STRING *iPAddress; ++ ASN1_OBJECT *registeredID; ++ /* Old names */ ++ ASN1_OCTET_STRING *ip; /* iPAddress */ ++ X509_NAME *dirn; /* dirn */ ++ ASN1_IA5STRING *ia5; /* rfc822Name, dNSName, ++ * uniformResourceIdentifier */ ++ ASN1_OBJECT *rid; /* registeredID */ ++ ASN1_TYPE *other; /* x400Address */ ++ } d; ++} GENERAL_NAME; ++ ++typedef struct ACCESS_DESCRIPTION_st { ++ ASN1_OBJECT *method; ++ GENERAL_NAME *location; ++} ACCESS_DESCRIPTION; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ACCESS_DESCRIPTION, ACCESS_DESCRIPTION, ACCESS_DESCRIPTION) ++#define sk_ACCESS_DESCRIPTION_num(sk) OPENSSL_sk_num(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_value(sk, idx) ((ACCESS_DESCRIPTION *)OPENSSL_sk_value(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), (idx))) ++#define sk_ACCESS_DESCRIPTION_new(cmp) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++#define sk_ACCESS_DESCRIPTION_new_null() ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_null()) ++#define sk_ACCESS_DESCRIPTION_new_reserve(cmp, n) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_new_reserve(ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp), (n))) ++#define sk_ACCESS_DESCRIPTION_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (n)) ++#define sk_ACCESS_DESCRIPTION_free(sk) OPENSSL_sk_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_zero(sk) OPENSSL_sk_zero(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_delete(sk, i) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (i))) ++#define sk_ACCESS_DESCRIPTION_delete_ptr(sk, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_delete_ptr(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_push(sk, ptr) OPENSSL_sk_push(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_pop(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_pop(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_shift(sk) ((ACCESS_DESCRIPTION *)OPENSSL_sk_shift(ossl_check_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ACCESS_DESCRIPTION_sk_type(sk),ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc)) ++#define sk_ACCESS_DESCRIPTION_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), (idx)) ++#define sk_ACCESS_DESCRIPTION_set(sk, idx, ptr) ((ACCESS_DESCRIPTION *)OPENSSL_sk_set(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), (idx), ossl_check_ACCESS_DESCRIPTION_type(ptr))) ++#define sk_ACCESS_DESCRIPTION_find(sk, ptr) OPENSSL_sk_find(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr)) ++#define sk_ACCESS_DESCRIPTION_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_type(ptr), pnum) ++#define sk_ACCESS_DESCRIPTION_sort(sk) OPENSSL_sk_sort(ossl_check_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk)) ++#define sk_ACCESS_DESCRIPTION_dup(sk) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_dup(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk))) ++#define sk_ACCESS_DESCRIPTION_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ACCESS_DESCRIPTION) *)OPENSSL_sk_deep_copy(ossl_check_const_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_copyfunc_type(copyfunc), ossl_check_ACCESS_DESCRIPTION_freefunc_type(freefunc))) ++#define sk_ACCESS_DESCRIPTION_set_cmp_func(sk, cmp) ((sk_ACCESS_DESCRIPTION_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ACCESS_DESCRIPTION_sk_type(sk), ossl_check_ACCESS_DESCRIPTION_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAME, GENERAL_NAME, GENERAL_NAME) ++#define sk_GENERAL_NAME_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_value(sk, idx) ((GENERAL_NAME *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAME_sk_type(sk), (idx))) ++#define sk_GENERAL_NAME_new(cmp) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new(ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++#define sk_GENERAL_NAME_new_null() ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAME_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAME_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAME_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAME_sk_type(sk), (n)) ++#define sk_GENERAL_NAME_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_delete(sk, i) ((GENERAL_NAME *)OPENSSL_sk_delete(ossl_check_GENERAL_NAME_sk_type(sk), (i))) ++#define sk_GENERAL_NAME_delete_ptr(sk, ptr) ((GENERAL_NAME *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_pop(sk) ((GENERAL_NAME *)OPENSSL_sk_pop(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_shift(sk) ((GENERAL_NAME *)OPENSSL_sk_shift(ossl_check_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAME_sk_type(sk),ossl_check_GENERAL_NAME_freefunc_type(freefunc)) ++#define sk_GENERAL_NAME_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), (idx)) ++#define sk_GENERAL_NAME_set(sk, idx, ptr) ((GENERAL_NAME *)OPENSSL_sk_set(ossl_check_GENERAL_NAME_sk_type(sk), (idx), ossl_check_GENERAL_NAME_type(ptr))) ++#define sk_GENERAL_NAME_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr)) ++#define sk_GENERAL_NAME_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_type(ptr), pnum) ++#define sk_GENERAL_NAME_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAME_sk_type(sk)) ++#define sk_GENERAL_NAME_dup(sk) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAME_sk_type(sk))) ++#define sk_GENERAL_NAME_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAME) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_copyfunc_type(copyfunc), ossl_check_GENERAL_NAME_freefunc_type(freefunc))) ++#define sk_GENERAL_NAME_set_cmp_func(sk, cmp) ((sk_GENERAL_NAME_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAME_sk_type(sk), ossl_check_GENERAL_NAME_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; ++typedef STACK_OF(ASN1_OBJECT) EXTENDED_KEY_USAGE; ++typedef STACK_OF(ASN1_INTEGER) TLS_FEATURE; ++typedef STACK_OF(GENERAL_NAME) GENERAL_NAMES; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_NAMES, GENERAL_NAMES, GENERAL_NAMES) ++#define sk_GENERAL_NAMES_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_value(sk, idx) ((GENERAL_NAMES *)OPENSSL_sk_value(ossl_check_const_GENERAL_NAMES_sk_type(sk), (idx))) ++#define sk_GENERAL_NAMES_new(cmp) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new(ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++#define sk_GENERAL_NAMES_new_null() ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_NAMES_new_reserve(cmp, n) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_NAMES_compfunc_type(cmp), (n))) ++#define sk_GENERAL_NAMES_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_NAMES_sk_type(sk), (n)) ++#define sk_GENERAL_NAMES_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_delete(sk, i) ((GENERAL_NAMES *)OPENSSL_sk_delete(ossl_check_GENERAL_NAMES_sk_type(sk), (i))) ++#define sk_GENERAL_NAMES_delete_ptr(sk, ptr) ((GENERAL_NAMES *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_pop(sk) ((GENERAL_NAMES *)OPENSSL_sk_pop(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_shift(sk) ((GENERAL_NAMES *)OPENSSL_sk_shift(ossl_check_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_NAMES_sk_type(sk),ossl_check_GENERAL_NAMES_freefunc_type(freefunc)) ++#define sk_GENERAL_NAMES_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), (idx)) ++#define sk_GENERAL_NAMES_set(sk, idx, ptr) ((GENERAL_NAMES *)OPENSSL_sk_set(ossl_check_GENERAL_NAMES_sk_type(sk), (idx), ossl_check_GENERAL_NAMES_type(ptr))) ++#define sk_GENERAL_NAMES_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr)) ++#define sk_GENERAL_NAMES_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_type(ptr), pnum) ++#define sk_GENERAL_NAMES_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_NAMES_sk_type(sk)) ++#define sk_GENERAL_NAMES_dup(sk) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_NAMES_sk_type(sk))) ++#define sk_GENERAL_NAMES_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_NAMES) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_copyfunc_type(copyfunc), ossl_check_GENERAL_NAMES_freefunc_type(freefunc))) ++#define sk_GENERAL_NAMES_set_cmp_func(sk, cmp) ((sk_GENERAL_NAMES_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_NAMES_sk_type(sk), ossl_check_GENERAL_NAMES_compfunc_type(cmp))) ++ ++ ++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; ++}; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(DIST_POINT, DIST_POINT, DIST_POINT) ++#define sk_DIST_POINT_num(sk) OPENSSL_sk_num(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_value(sk, idx) ((DIST_POINT *)OPENSSL_sk_value(ossl_check_const_DIST_POINT_sk_type(sk), (idx))) ++#define sk_DIST_POINT_new(cmp) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new(ossl_check_DIST_POINT_compfunc_type(cmp))) ++#define sk_DIST_POINT_new_null() ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_null()) ++#define sk_DIST_POINT_new_reserve(cmp, n) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_new_reserve(ossl_check_DIST_POINT_compfunc_type(cmp), (n))) ++#define sk_DIST_POINT_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_DIST_POINT_sk_type(sk), (n)) ++#define sk_DIST_POINT_free(sk) OPENSSL_sk_free(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_zero(sk) OPENSSL_sk_zero(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_delete(sk, i) ((DIST_POINT *)OPENSSL_sk_delete(ossl_check_DIST_POINT_sk_type(sk), (i))) ++#define sk_DIST_POINT_delete_ptr(sk, ptr) ((DIST_POINT *)OPENSSL_sk_delete_ptr(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_push(sk, ptr) OPENSSL_sk_push(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_pop(sk) ((DIST_POINT *)OPENSSL_sk_pop(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_shift(sk) ((DIST_POINT *)OPENSSL_sk_shift(ossl_check_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_DIST_POINT_sk_type(sk),ossl_check_DIST_POINT_freefunc_type(freefunc)) ++#define sk_DIST_POINT_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), (idx)) ++#define sk_DIST_POINT_set(sk, idx, ptr) ((DIST_POINT *)OPENSSL_sk_set(ossl_check_DIST_POINT_sk_type(sk), (idx), ossl_check_DIST_POINT_type(ptr))) ++#define sk_DIST_POINT_find(sk, ptr) OPENSSL_sk_find(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr)) ++#define sk_DIST_POINT_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_type(ptr), pnum) ++#define sk_DIST_POINT_sort(sk) OPENSSL_sk_sort(ossl_check_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_DIST_POINT_sk_type(sk)) ++#define sk_DIST_POINT_dup(sk) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_dup(ossl_check_const_DIST_POINT_sk_type(sk))) ++#define sk_DIST_POINT_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(DIST_POINT) *)OPENSSL_sk_deep_copy(ossl_check_const_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_copyfunc_type(copyfunc), ossl_check_DIST_POINT_freefunc_type(freefunc))) ++#define sk_DIST_POINT_set_cmp_func(sk, cmp) ((sk_DIST_POINT_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_DIST_POINT_sk_type(sk), ossl_check_DIST_POINT_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(DIST_POINT) CRL_DIST_POINTS; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(SXNETID, SXNETID, SXNETID) ++#define sk_SXNETID_num(sk) OPENSSL_sk_num(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_value(sk, idx) ((SXNETID *)OPENSSL_sk_value(ossl_check_const_SXNETID_sk_type(sk), (idx))) ++#define sk_SXNETID_new(cmp) ((STACK_OF(SXNETID) *)OPENSSL_sk_new(ossl_check_SXNETID_compfunc_type(cmp))) ++#define sk_SXNETID_new_null() ((STACK_OF(SXNETID) *)OPENSSL_sk_new_null()) ++#define sk_SXNETID_new_reserve(cmp, n) ((STACK_OF(SXNETID) *)OPENSSL_sk_new_reserve(ossl_check_SXNETID_compfunc_type(cmp), (n))) ++#define sk_SXNETID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_SXNETID_sk_type(sk), (n)) ++#define sk_SXNETID_free(sk) OPENSSL_sk_free(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_zero(sk) OPENSSL_sk_zero(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_delete(sk, i) ((SXNETID *)OPENSSL_sk_delete(ossl_check_SXNETID_sk_type(sk), (i))) ++#define sk_SXNETID_delete_ptr(sk, ptr) ((SXNETID *)OPENSSL_sk_delete_ptr(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_push(sk, ptr) OPENSSL_sk_push(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_pop(sk) ((SXNETID *)OPENSSL_sk_pop(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_shift(sk) ((SXNETID *)OPENSSL_sk_shift(ossl_check_SXNETID_sk_type(sk))) ++#define sk_SXNETID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_SXNETID_sk_type(sk),ossl_check_SXNETID_freefunc_type(freefunc)) ++#define sk_SXNETID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), (idx)) ++#define sk_SXNETID_set(sk, idx, ptr) ((SXNETID *)OPENSSL_sk_set(ossl_check_SXNETID_sk_type(sk), (idx), ossl_check_SXNETID_type(ptr))) ++#define sk_SXNETID_find(sk, ptr) OPENSSL_sk_find(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr)) ++#define sk_SXNETID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_type(ptr), pnum) ++#define sk_SXNETID_sort(sk) OPENSSL_sk_sort(ossl_check_SXNETID_sk_type(sk)) ++#define sk_SXNETID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_SXNETID_sk_type(sk)) ++#define sk_SXNETID_dup(sk) ((STACK_OF(SXNETID) *)OPENSSL_sk_dup(ossl_check_const_SXNETID_sk_type(sk))) ++#define sk_SXNETID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(SXNETID) *)OPENSSL_sk_deep_copy(ossl_check_const_SXNETID_sk_type(sk), ossl_check_SXNETID_copyfunc_type(copyfunc), ossl_check_SXNETID_freefunc_type(freefunc))) ++#define sk_SXNETID_set_cmp_func(sk, cmp) ((sk_SXNETID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_SXNETID_sk_type(sk), ossl_check_SXNETID_compfunc_type(cmp))) ++ ++ ++ ++typedef struct SXNET_st { ++ ASN1_INTEGER *version; ++ STACK_OF(SXNETID) *ids; ++} SXNET; ++ ++typedef struct ISSUER_SIGN_TOOL_st { ++ ASN1_UTF8STRING *signTool; ++ ASN1_UTF8STRING *cATool; ++ ASN1_UTF8STRING *signToolCert; ++ ASN1_UTF8STRING *cAToolCert; ++} ISSUER_SIGN_TOOL; ++ ++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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYQUALINFO, POLICYQUALINFO, POLICYQUALINFO) ++#define sk_POLICYQUALINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_value(sk, idx) ((POLICYQUALINFO *)OPENSSL_sk_value(ossl_check_const_POLICYQUALINFO_sk_type(sk), (idx))) ++#define sk_POLICYQUALINFO_new(cmp) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new(ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++#define sk_POLICYQUALINFO_new_null() ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYQUALINFO_new_reserve(cmp, n) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYQUALINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYQUALINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYQUALINFO_sk_type(sk), (n)) ++#define sk_POLICYQUALINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_delete(sk, i) ((POLICYQUALINFO *)OPENSSL_sk_delete(ossl_check_POLICYQUALINFO_sk_type(sk), (i))) ++#define sk_POLICYQUALINFO_delete_ptr(sk, ptr) ((POLICYQUALINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_pop(sk) ((POLICYQUALINFO *)OPENSSL_sk_pop(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_shift(sk) ((POLICYQUALINFO *)OPENSSL_sk_shift(ossl_check_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYQUALINFO_sk_type(sk),ossl_check_POLICYQUALINFO_freefunc_type(freefunc)) ++#define sk_POLICYQUALINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), (idx)) ++#define sk_POLICYQUALINFO_set(sk, idx, ptr) ((POLICYQUALINFO *)OPENSSL_sk_set(ossl_check_POLICYQUALINFO_sk_type(sk), (idx), ossl_check_POLICYQUALINFO_type(ptr))) ++#define sk_POLICYQUALINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr)) ++#define sk_POLICYQUALINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_type(ptr), pnum) ++#define sk_POLICYQUALINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYQUALINFO_sk_type(sk)) ++#define sk_POLICYQUALINFO_dup(sk) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYQUALINFO_sk_type(sk))) ++#define sk_POLICYQUALINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYQUALINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_copyfunc_type(copyfunc), ossl_check_POLICYQUALINFO_freefunc_type(freefunc))) ++#define sk_POLICYQUALINFO_set_cmp_func(sk, cmp) ((sk_POLICYQUALINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYQUALINFO_sk_type(sk), ossl_check_POLICYQUALINFO_compfunc_type(cmp))) ++ ++ ++ ++typedef struct POLICYINFO_st { ++ ASN1_OBJECT *policyid; ++ STACK_OF(POLICYQUALINFO) *qualifiers; ++} POLICYINFO; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICYINFO, POLICYINFO, POLICYINFO) ++#define sk_POLICYINFO_num(sk) OPENSSL_sk_num(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_value(sk, idx) ((POLICYINFO *)OPENSSL_sk_value(ossl_check_const_POLICYINFO_sk_type(sk), (idx))) ++#define sk_POLICYINFO_new(cmp) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new(ossl_check_POLICYINFO_compfunc_type(cmp))) ++#define sk_POLICYINFO_new_null() ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_null()) ++#define sk_POLICYINFO_new_reserve(cmp, n) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_new_reserve(ossl_check_POLICYINFO_compfunc_type(cmp), (n))) ++#define sk_POLICYINFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICYINFO_sk_type(sk), (n)) ++#define sk_POLICYINFO_free(sk) OPENSSL_sk_free(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_zero(sk) OPENSSL_sk_zero(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_delete(sk, i) ((POLICYINFO *)OPENSSL_sk_delete(ossl_check_POLICYINFO_sk_type(sk), (i))) ++#define sk_POLICYINFO_delete_ptr(sk, ptr) ((POLICYINFO *)OPENSSL_sk_delete_ptr(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_pop(sk) ((POLICYINFO *)OPENSSL_sk_pop(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_shift(sk) ((POLICYINFO *)OPENSSL_sk_shift(ossl_check_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICYINFO_sk_type(sk),ossl_check_POLICYINFO_freefunc_type(freefunc)) ++#define sk_POLICYINFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), (idx)) ++#define sk_POLICYINFO_set(sk, idx, ptr) ((POLICYINFO *)OPENSSL_sk_set(ossl_check_POLICYINFO_sk_type(sk), (idx), ossl_check_POLICYINFO_type(ptr))) ++#define sk_POLICYINFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr)) ++#define sk_POLICYINFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_type(ptr), pnum) ++#define sk_POLICYINFO_sort(sk) OPENSSL_sk_sort(ossl_check_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICYINFO_sk_type(sk)) ++#define sk_POLICYINFO_dup(sk) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_dup(ossl_check_const_POLICYINFO_sk_type(sk))) ++#define sk_POLICYINFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICYINFO) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_copyfunc_type(copyfunc), ossl_check_POLICYINFO_freefunc_type(freefunc))) ++#define sk_POLICYINFO_set_cmp_func(sk, cmp) ((sk_POLICYINFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICYINFO_sk_type(sk), ossl_check_POLICYINFO_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICYINFO) CERTIFICATEPOLICIES; ++ ++typedef struct POLICY_MAPPING_st { ++ ASN1_OBJECT *issuerDomainPolicy; ++ ASN1_OBJECT *subjectDomainPolicy; ++} POLICY_MAPPING; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(POLICY_MAPPING, POLICY_MAPPING, POLICY_MAPPING) ++#define sk_POLICY_MAPPING_num(sk) OPENSSL_sk_num(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_value(sk, idx) ((POLICY_MAPPING *)OPENSSL_sk_value(ossl_check_const_POLICY_MAPPING_sk_type(sk), (idx))) ++#define sk_POLICY_MAPPING_new(cmp) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new(ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++#define sk_POLICY_MAPPING_new_null() ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_null()) ++#define sk_POLICY_MAPPING_new_reserve(cmp, n) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_new_reserve(ossl_check_POLICY_MAPPING_compfunc_type(cmp), (n))) ++#define sk_POLICY_MAPPING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_POLICY_MAPPING_sk_type(sk), (n)) ++#define sk_POLICY_MAPPING_free(sk) OPENSSL_sk_free(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_zero(sk) OPENSSL_sk_zero(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_delete(sk, i) ((POLICY_MAPPING *)OPENSSL_sk_delete(ossl_check_POLICY_MAPPING_sk_type(sk), (i))) ++#define sk_POLICY_MAPPING_delete_ptr(sk, ptr) ((POLICY_MAPPING *)OPENSSL_sk_delete_ptr(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_push(sk, ptr) OPENSSL_sk_push(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_pop(sk) ((POLICY_MAPPING *)OPENSSL_sk_pop(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_shift(sk) ((POLICY_MAPPING *)OPENSSL_sk_shift(ossl_check_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_POLICY_MAPPING_sk_type(sk),ossl_check_POLICY_MAPPING_freefunc_type(freefunc)) ++#define sk_POLICY_MAPPING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), (idx)) ++#define sk_POLICY_MAPPING_set(sk, idx, ptr) ((POLICY_MAPPING *)OPENSSL_sk_set(ossl_check_POLICY_MAPPING_sk_type(sk), (idx), ossl_check_POLICY_MAPPING_type(ptr))) ++#define sk_POLICY_MAPPING_find(sk, ptr) OPENSSL_sk_find(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr)) ++#define sk_POLICY_MAPPING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_type(ptr), pnum) ++#define sk_POLICY_MAPPING_sort(sk) OPENSSL_sk_sort(ossl_check_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_POLICY_MAPPING_sk_type(sk)) ++#define sk_POLICY_MAPPING_dup(sk) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_dup(ossl_check_const_POLICY_MAPPING_sk_type(sk))) ++#define sk_POLICY_MAPPING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(POLICY_MAPPING) *)OPENSSL_sk_deep_copy(ossl_check_const_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_copyfunc_type(copyfunc), ossl_check_POLICY_MAPPING_freefunc_type(freefunc))) ++#define sk_POLICY_MAPPING_set_cmp_func(sk, cmp) ((sk_POLICY_MAPPING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_POLICY_MAPPING_sk_type(sk), ossl_check_POLICY_MAPPING_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(POLICY_MAPPING) POLICY_MAPPINGS; ++ ++typedef struct GENERAL_SUBTREE_st { ++ GENERAL_NAME *base; ++ ASN1_INTEGER *minimum; ++ ASN1_INTEGER *maximum; ++} GENERAL_SUBTREE; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(GENERAL_SUBTREE, GENERAL_SUBTREE, GENERAL_SUBTREE) ++#define sk_GENERAL_SUBTREE_num(sk) OPENSSL_sk_num(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_value(sk, idx) ((GENERAL_SUBTREE *)OPENSSL_sk_value(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), (idx))) ++#define sk_GENERAL_SUBTREE_new(cmp) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++#define sk_GENERAL_SUBTREE_new_null() ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_null()) ++#define sk_GENERAL_SUBTREE_new_reserve(cmp, n) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_new_reserve(ossl_check_GENERAL_SUBTREE_compfunc_type(cmp), (n))) ++#define sk_GENERAL_SUBTREE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_GENERAL_SUBTREE_sk_type(sk), (n)) ++#define sk_GENERAL_SUBTREE_free(sk) OPENSSL_sk_free(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_zero(sk) OPENSSL_sk_zero(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_delete(sk, i) ((GENERAL_SUBTREE *)OPENSSL_sk_delete(ossl_check_GENERAL_SUBTREE_sk_type(sk), (i))) ++#define sk_GENERAL_SUBTREE_delete_ptr(sk, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_delete_ptr(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_push(sk, ptr) OPENSSL_sk_push(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_pop(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_pop(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_shift(sk) ((GENERAL_SUBTREE *)OPENSSL_sk_shift(ossl_check_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_GENERAL_SUBTREE_sk_type(sk),ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc)) ++#define sk_GENERAL_SUBTREE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), (idx)) ++#define sk_GENERAL_SUBTREE_set(sk, idx, ptr) ((GENERAL_SUBTREE *)OPENSSL_sk_set(ossl_check_GENERAL_SUBTREE_sk_type(sk), (idx), ossl_check_GENERAL_SUBTREE_type(ptr))) ++#define sk_GENERAL_SUBTREE_find(sk, ptr) OPENSSL_sk_find(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr)) ++#define sk_GENERAL_SUBTREE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_type(ptr), pnum) ++#define sk_GENERAL_SUBTREE_sort(sk) OPENSSL_sk_sort(ossl_check_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_GENERAL_SUBTREE_sk_type(sk)) ++#define sk_GENERAL_SUBTREE_dup(sk) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_dup(ossl_check_const_GENERAL_SUBTREE_sk_type(sk))) ++#define sk_GENERAL_SUBTREE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(GENERAL_SUBTREE) *)OPENSSL_sk_deep_copy(ossl_check_const_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_copyfunc_type(copyfunc), ossl_check_GENERAL_SUBTREE_freefunc_type(freefunc))) ++#define sk_GENERAL_SUBTREE_set_cmp_func(sk, cmp) ((sk_GENERAL_SUBTREE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_GENERAL_SUBTREE_sk_type(sk), ossl_check_GENERAL_SUBTREE_compfunc_type(cmp))) ++ ++ ++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, X509V3_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_UTF8STRING(nid) { nid, 0, ASN1_ITEM_ref(ASN1_UTF8STRING), \ ++ 0,0,0,0, \ ++ (X509V3_EXT_I2S)i2s_ASN1_UTF8STRING, \ ++ (X509V3_EXT_S2I)s2i_ASN1_UTF8STRING, \ ++ 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 ++# define EXFLAG_SI 0x20 /* self-issued, maybe not self-signed */ ++# 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_BCONS_CRITICAL 0x10000 ++# define EXFLAG_AKID_CRITICAL 0x20000 ++# define EXFLAG_SKID_CRITICAL 0x40000 ++# define EXFLAG_SAN_CRITICAL 0x80000 ++# 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 /* Netscape or MS Server-Gated Crypto */ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(X509_PURPOSE, X509_PURPOSE, X509_PURPOSE) ++#define sk_X509_PURPOSE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_value(sk, idx) ((X509_PURPOSE *)OPENSSL_sk_value(ossl_check_const_X509_PURPOSE_sk_type(sk), (idx))) ++#define sk_X509_PURPOSE_new(cmp) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new(ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++#define sk_X509_PURPOSE_new_null() ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_null()) ++#define sk_X509_PURPOSE_new_reserve(cmp, n) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_new_reserve(ossl_check_X509_PURPOSE_compfunc_type(cmp), (n))) ++#define sk_X509_PURPOSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_PURPOSE_sk_type(sk), (n)) ++#define sk_X509_PURPOSE_free(sk) OPENSSL_sk_free(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_delete(sk, i) ((X509_PURPOSE *)OPENSSL_sk_delete(ossl_check_X509_PURPOSE_sk_type(sk), (i))) ++#define sk_X509_PURPOSE_delete_ptr(sk, ptr) ((X509_PURPOSE *)OPENSSL_sk_delete_ptr(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_pop(sk) ((X509_PURPOSE *)OPENSSL_sk_pop(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_shift(sk) ((X509_PURPOSE *)OPENSSL_sk_shift(ossl_check_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_PURPOSE_sk_type(sk),ossl_check_X509_PURPOSE_freefunc_type(freefunc)) ++#define sk_X509_PURPOSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), (idx)) ++#define sk_X509_PURPOSE_set(sk, idx, ptr) ((X509_PURPOSE *)OPENSSL_sk_set(ossl_check_X509_PURPOSE_sk_type(sk), (idx), ossl_check_X509_PURPOSE_type(ptr))) ++#define sk_X509_PURPOSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr)) ++#define sk_X509_PURPOSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_type(ptr), pnum) ++#define sk_X509_PURPOSE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_PURPOSE_sk_type(sk)) ++#define sk_X509_PURPOSE_dup(sk) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_dup(ossl_check_const_X509_PURPOSE_sk_type(sk))) ++#define sk_X509_PURPOSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_PURPOSE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_copyfunc_type(copyfunc), ossl_check_X509_PURPOSE_freefunc_type(freefunc))) ++#define sk_X509_PURPOSE_set_cmp_func(sk, cmp) ((sk_X509_PURPOSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_PURPOSE_sk_type(sk), ossl_check_X509_PURPOSE_compfunc_type(cmp))) ++ ++ ++ ++# define X509_PURPOSE_SSL_CLIENT 1 ++# define X509_PURPOSE_SSL_SERVER 2 ++# define X509_PURPOSE_NS_SSL_SERVER 3 ++# define X509_PURPOSE_SMIME_SIGN 4 ++# define X509_PURPOSE_SMIME_ENCRYPT 5 ++# define X509_PURPOSE_CRL_SIGN 6 ++# define X509_PURPOSE_ANY 7 ++# define X509_PURPOSE_OCSP_HELPER 8 ++# define X509_PURPOSE_TIMESTAMP_SIGN 9 ++ ++# define X509_PURPOSE_MIN 1 ++# define X509_PURPOSE_MAX 9 ++ ++/* Flags for X509V3_EXT_print() */ ++ ++# define X509V3_EXT_UNKNOWN_MASK (0xfL << 16) ++/* Return error for unknown extensions */ ++# define X509V3_EXT_DEFAULT 0 ++/* Print error for unknown extensions */ ++# define X509V3_EXT_ERROR_UNKNOWN (1L << 16) ++/* ASN1 parse unknown extensions */ ++# define X509V3_EXT_PARSE_UNKNOWN (2L << 16) ++/* BIO_dump unknown extensions */ ++# define X509V3_EXT_DUMP_UNKNOWN (3L << 16) ++ ++/* Flags for X509V3_add1_i2d */ ++ ++# define X509V3_ADD_OP_MASK 0xfL ++# define X509V3_ADD_DEFAULT 0L ++# define X509V3_ADD_APPEND 1L ++# define X509V3_ADD_REPLACE 2L ++# define X509V3_ADD_REPLACE_EXISTING 3L ++# define X509V3_ADD_KEEP_EXISTING 4L ++# define X509V3_ADD_DELETE 5L ++# define X509V3_ADD_SILENT 0x10 ++ ++DECLARE_ASN1_FUNCTIONS(BASIC_CONSTRAINTS) ++ ++DECLARE_ASN1_FUNCTIONS(SXNET) ++DECLARE_ASN1_FUNCTIONS(SXNETID) ++ ++DECLARE_ASN1_FUNCTIONS(ISSUER_SIGN_TOOL) ++ ++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) ++DECLARE_ASN1_DUP_FUNCTION(GENERAL_NAME) ++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); ++char *i2s_ASN1_UTF8STRING(X509V3_EXT_METHOD *method, ASN1_UTF8STRING *utf8); ++ASN1_UTF8STRING *s2i_ASN1_UTF8STRING(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, const 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 OPENSSL_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); ++/* For API backward compatibility, this is separate from X509V3_set_ctx(): */ ++int X509V3_set_issuer_pkey(X509V3_CTX *ctx, EVP_PKEY *pkey); ++ ++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); ++ ++#ifndef OPENSSL_NO_DEPRECATED_1_1_0 ++/* 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(const X509 *issuer, const 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); ++SKM_DEFINE_STACK_OF_INTERNAL(X509_POLICY_NODE, X509_POLICY_NODE, X509_POLICY_NODE) ++#define sk_X509_POLICY_NODE_num(sk) OPENSSL_sk_num(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_value(sk, idx) ((X509_POLICY_NODE *)OPENSSL_sk_value(ossl_check_const_X509_POLICY_NODE_sk_type(sk), (idx))) ++#define sk_X509_POLICY_NODE_new(cmp) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new(ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++#define sk_X509_POLICY_NODE_new_null() ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_null()) ++#define sk_X509_POLICY_NODE_new_reserve(cmp, n) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_new_reserve(ossl_check_X509_POLICY_NODE_compfunc_type(cmp), (n))) ++#define sk_X509_POLICY_NODE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_X509_POLICY_NODE_sk_type(sk), (n)) ++#define sk_X509_POLICY_NODE_free(sk) OPENSSL_sk_free(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_zero(sk) OPENSSL_sk_zero(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_delete(sk, i) ((X509_POLICY_NODE *)OPENSSL_sk_delete(ossl_check_X509_POLICY_NODE_sk_type(sk), (i))) ++#define sk_X509_POLICY_NODE_delete_ptr(sk, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_delete_ptr(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_push(sk, ptr) OPENSSL_sk_push(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_pop(sk) ((X509_POLICY_NODE *)OPENSSL_sk_pop(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_shift(sk) ((X509_POLICY_NODE *)OPENSSL_sk_shift(ossl_check_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_X509_POLICY_NODE_sk_type(sk),ossl_check_X509_POLICY_NODE_freefunc_type(freefunc)) ++#define sk_X509_POLICY_NODE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), (idx)) ++#define sk_X509_POLICY_NODE_set(sk, idx, ptr) ((X509_POLICY_NODE *)OPENSSL_sk_set(ossl_check_X509_POLICY_NODE_sk_type(sk), (idx), ossl_check_X509_POLICY_NODE_type(ptr))) ++#define sk_X509_POLICY_NODE_find(sk, ptr) OPENSSL_sk_find(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr)) ++#define sk_X509_POLICY_NODE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_type(ptr), pnum) ++#define sk_X509_POLICY_NODE_sort(sk) OPENSSL_sk_sort(ossl_check_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_X509_POLICY_NODE_sk_type(sk)) ++#define sk_X509_POLICY_NODE_dup(sk) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_dup(ossl_check_const_X509_POLICY_NODE_sk_type(sk))) ++#define sk_X509_POLICY_NODE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(X509_POLICY_NODE) *)OPENSSL_sk_deep_copy(ossl_check_const_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_copyfunc_type(copyfunc), ossl_check_X509_POLICY_NODE_freefunc_type(freefunc))) ++#define sk_X509_POLICY_NODE_set_cmp_func(sk, cmp) ((sk_X509_POLICY_NODE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_X509_POLICY_NODE_sk_type(sk), ossl_check_X509_POLICY_NODE_compfunc_type(cmp))) ++ ++ ++ ++#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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASIdOrRange, ASIdOrRange, ASIdOrRange) ++#define sk_ASIdOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_value(sk, idx) ((ASIdOrRange *)OPENSSL_sk_value(ossl_check_const_ASIdOrRange_sk_type(sk), (idx))) ++#define sk_ASIdOrRange_new(cmp) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new(ossl_check_ASIdOrRange_compfunc_type(cmp))) ++#define sk_ASIdOrRange_new_null() ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_null()) ++#define sk_ASIdOrRange_new_reserve(cmp, n) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_new_reserve(ossl_check_ASIdOrRange_compfunc_type(cmp), (n))) ++#define sk_ASIdOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASIdOrRange_sk_type(sk), (n)) ++#define sk_ASIdOrRange_free(sk) OPENSSL_sk_free(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_delete(sk, i) ((ASIdOrRange *)OPENSSL_sk_delete(ossl_check_ASIdOrRange_sk_type(sk), (i))) ++#define sk_ASIdOrRange_delete_ptr(sk, ptr) ((ASIdOrRange *)OPENSSL_sk_delete_ptr(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_pop(sk) ((ASIdOrRange *)OPENSSL_sk_pop(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_shift(sk) ((ASIdOrRange *)OPENSSL_sk_shift(ossl_check_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASIdOrRange_sk_type(sk),ossl_check_ASIdOrRange_freefunc_type(freefunc)) ++#define sk_ASIdOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), (idx)) ++#define sk_ASIdOrRange_set(sk, idx, ptr) ((ASIdOrRange *)OPENSSL_sk_set(ossl_check_ASIdOrRange_sk_type(sk), (idx), ossl_check_ASIdOrRange_type(ptr))) ++#define sk_ASIdOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr)) ++#define sk_ASIdOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_type(ptr), pnum) ++#define sk_ASIdOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASIdOrRange_sk_type(sk)) ++#define sk_ASIdOrRange_dup(sk) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_dup(ossl_check_const_ASIdOrRange_sk_type(sk))) ++#define sk_ASIdOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASIdOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_copyfunc_type(copyfunc), ossl_check_ASIdOrRange_freefunc_type(freefunc))) ++#define sk_ASIdOrRange_set_cmp_func(sk, cmp) ((sk_ASIdOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASIdOrRange_sk_type(sk), ossl_check_ASIdOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(ASIdOrRange) ASIdOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressOrRange, IPAddressOrRange, IPAddressOrRange) ++#define sk_IPAddressOrRange_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_value(sk, idx) ((IPAddressOrRange *)OPENSSL_sk_value(ossl_check_const_IPAddressOrRange_sk_type(sk), (idx))) ++#define sk_IPAddressOrRange_new(cmp) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new(ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++#define sk_IPAddressOrRange_new_null() ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressOrRange_new_reserve(cmp, n) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressOrRange_compfunc_type(cmp), (n))) ++#define sk_IPAddressOrRange_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressOrRange_sk_type(sk), (n)) ++#define sk_IPAddressOrRange_free(sk) OPENSSL_sk_free(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_delete(sk, i) ((IPAddressOrRange *)OPENSSL_sk_delete(ossl_check_IPAddressOrRange_sk_type(sk), (i))) ++#define sk_IPAddressOrRange_delete_ptr(sk, ptr) ((IPAddressOrRange *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_pop(sk) ((IPAddressOrRange *)OPENSSL_sk_pop(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_shift(sk) ((IPAddressOrRange *)OPENSSL_sk_shift(ossl_check_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressOrRange_sk_type(sk),ossl_check_IPAddressOrRange_freefunc_type(freefunc)) ++#define sk_IPAddressOrRange_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), (idx)) ++#define sk_IPAddressOrRange_set(sk, idx, ptr) ((IPAddressOrRange *)OPENSSL_sk_set(ossl_check_IPAddressOrRange_sk_type(sk), (idx), ossl_check_IPAddressOrRange_type(ptr))) ++#define sk_IPAddressOrRange_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr)) ++#define sk_IPAddressOrRange_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_type(ptr), pnum) ++#define sk_IPAddressOrRange_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressOrRange_sk_type(sk)) ++#define sk_IPAddressOrRange_dup(sk) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_dup(ossl_check_const_IPAddressOrRange_sk_type(sk))) ++#define sk_IPAddressOrRange_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressOrRange) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_copyfunc_type(copyfunc), ossl_check_IPAddressOrRange_freefunc_type(freefunc))) ++#define sk_IPAddressOrRange_set_cmp_func(sk, cmp) ((sk_IPAddressOrRange_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressOrRange_sk_type(sk), ossl_check_IPAddressOrRange_compfunc_type(cmp))) ++ ++ ++typedef STACK_OF(IPAddressOrRange) IPAddressOrRanges; ++ ++# 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; ++ ++SKM_DEFINE_STACK_OF_INTERNAL(IPAddressFamily, IPAddressFamily, IPAddressFamily) ++#define sk_IPAddressFamily_num(sk) OPENSSL_sk_num(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_value(sk, idx) ((IPAddressFamily *)OPENSSL_sk_value(ossl_check_const_IPAddressFamily_sk_type(sk), (idx))) ++#define sk_IPAddressFamily_new(cmp) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new(ossl_check_IPAddressFamily_compfunc_type(cmp))) ++#define sk_IPAddressFamily_new_null() ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_null()) ++#define sk_IPAddressFamily_new_reserve(cmp, n) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_new_reserve(ossl_check_IPAddressFamily_compfunc_type(cmp), (n))) ++#define sk_IPAddressFamily_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_IPAddressFamily_sk_type(sk), (n)) ++#define sk_IPAddressFamily_free(sk) OPENSSL_sk_free(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_zero(sk) OPENSSL_sk_zero(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_delete(sk, i) ((IPAddressFamily *)OPENSSL_sk_delete(ossl_check_IPAddressFamily_sk_type(sk), (i))) ++#define sk_IPAddressFamily_delete_ptr(sk, ptr) ((IPAddressFamily *)OPENSSL_sk_delete_ptr(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_push(sk, ptr) OPENSSL_sk_push(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_pop(sk) ((IPAddressFamily *)OPENSSL_sk_pop(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_shift(sk) ((IPAddressFamily *)OPENSSL_sk_shift(ossl_check_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_IPAddressFamily_sk_type(sk),ossl_check_IPAddressFamily_freefunc_type(freefunc)) ++#define sk_IPAddressFamily_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), (idx)) ++#define sk_IPAddressFamily_set(sk, idx, ptr) ((IPAddressFamily *)OPENSSL_sk_set(ossl_check_IPAddressFamily_sk_type(sk), (idx), ossl_check_IPAddressFamily_type(ptr))) ++#define sk_IPAddressFamily_find(sk, ptr) OPENSSL_sk_find(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr)) ++#define sk_IPAddressFamily_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_type(ptr), pnum) ++#define sk_IPAddressFamily_sort(sk) OPENSSL_sk_sort(ossl_check_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_IPAddressFamily_sk_type(sk)) ++#define sk_IPAddressFamily_dup(sk) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_dup(ossl_check_const_IPAddressFamily_sk_type(sk))) ++#define sk_IPAddressFamily_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(IPAddressFamily) *)OPENSSL_sk_deep_copy(ossl_check_const_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_copyfunc_type(copyfunc), ossl_check_IPAddressFamily_freefunc_type(freefunc))) ++#define sk_IPAddressFamily_set_cmp_func(sk, cmp) ((sk_IPAddressFamily_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_IPAddressFamily_sk_type(sk), ossl_check_IPAddressFamily_compfunc_type(cmp))) ++ ++ ++ ++typedef STACK_OF(IPAddressFamily) IPAddrBlocks; ++ ++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 */ ++ ++SKM_DEFINE_STACK_OF_INTERNAL(ASN1_STRING, ASN1_STRING, ASN1_STRING) ++#define sk_ASN1_STRING_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_value(sk, idx) ((ASN1_STRING *)OPENSSL_sk_value(ossl_check_const_ASN1_STRING_sk_type(sk), (idx))) ++#define sk_ASN1_STRING_new(cmp) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new(ossl_check_ASN1_STRING_compfunc_type(cmp))) ++#define sk_ASN1_STRING_new_null() ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_null()) ++#define sk_ASN1_STRING_new_reserve(cmp, n) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_STRING_compfunc_type(cmp), (n))) ++#define sk_ASN1_STRING_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_STRING_sk_type(sk), (n)) ++#define sk_ASN1_STRING_free(sk) OPENSSL_sk_free(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_delete(sk, i) ((ASN1_STRING *)OPENSSL_sk_delete(ossl_check_ASN1_STRING_sk_type(sk), (i))) ++#define sk_ASN1_STRING_delete_ptr(sk, ptr) ((ASN1_STRING *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_pop(sk) ((ASN1_STRING *)OPENSSL_sk_pop(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_shift(sk) ((ASN1_STRING *)OPENSSL_sk_shift(ossl_check_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_STRING_sk_type(sk),ossl_check_ASN1_STRING_freefunc_type(freefunc)) ++#define sk_ASN1_STRING_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), (idx)) ++#define sk_ASN1_STRING_set(sk, idx, ptr) ((ASN1_STRING *)OPENSSL_sk_set(ossl_check_ASN1_STRING_sk_type(sk), (idx), ossl_check_ASN1_STRING_type(ptr))) ++#define sk_ASN1_STRING_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr)) ++#define sk_ASN1_STRING_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_type(ptr), pnum) ++#define sk_ASN1_STRING_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_STRING_sk_type(sk)) ++#define sk_ASN1_STRING_dup(sk) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_dup(ossl_check_const_ASN1_STRING_sk_type(sk))) ++#define sk_ASN1_STRING_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_STRING) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_copyfunc_type(copyfunc), ossl_check_ASN1_STRING_freefunc_type(freefunc))) ++#define sk_ASN1_STRING_set_cmp_func(sk, cmp) ((sk_ASN1_STRING_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_STRING_sk_type(sk), ossl_check_ASN1_STRING_compfunc_type(cmp))) ++ ++ ++/* ++ * 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) ++SKM_DEFINE_STACK_OF_INTERNAL(PROFESSION_INFO, PROFESSION_INFO, PROFESSION_INFO) ++#define sk_PROFESSION_INFO_num(sk) OPENSSL_sk_num(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_value(sk, idx) ((PROFESSION_INFO *)OPENSSL_sk_value(ossl_check_const_PROFESSION_INFO_sk_type(sk), (idx))) ++#define sk_PROFESSION_INFO_new(cmp) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new(ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++#define sk_PROFESSION_INFO_new_null() ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_null()) ++#define sk_PROFESSION_INFO_new_reserve(cmp, n) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_new_reserve(ossl_check_PROFESSION_INFO_compfunc_type(cmp), (n))) ++#define sk_PROFESSION_INFO_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_PROFESSION_INFO_sk_type(sk), (n)) ++#define sk_PROFESSION_INFO_free(sk) OPENSSL_sk_free(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_zero(sk) OPENSSL_sk_zero(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_delete(sk, i) ((PROFESSION_INFO *)OPENSSL_sk_delete(ossl_check_PROFESSION_INFO_sk_type(sk), (i))) ++#define sk_PROFESSION_INFO_delete_ptr(sk, ptr) ((PROFESSION_INFO *)OPENSSL_sk_delete_ptr(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_push(sk, ptr) OPENSSL_sk_push(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_pop(sk) ((PROFESSION_INFO *)OPENSSL_sk_pop(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_shift(sk) ((PROFESSION_INFO *)OPENSSL_sk_shift(ossl_check_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_PROFESSION_INFO_sk_type(sk),ossl_check_PROFESSION_INFO_freefunc_type(freefunc)) ++#define sk_PROFESSION_INFO_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), (idx)) ++#define sk_PROFESSION_INFO_set(sk, idx, ptr) ((PROFESSION_INFO *)OPENSSL_sk_set(ossl_check_PROFESSION_INFO_sk_type(sk), (idx), ossl_check_PROFESSION_INFO_type(ptr))) ++#define sk_PROFESSION_INFO_find(sk, ptr) OPENSSL_sk_find(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr)) ++#define sk_PROFESSION_INFO_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_type(ptr), pnum) ++#define sk_PROFESSION_INFO_sort(sk) OPENSSL_sk_sort(ossl_check_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_PROFESSION_INFO_sk_type(sk)) ++#define sk_PROFESSION_INFO_dup(sk) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_dup(ossl_check_const_PROFESSION_INFO_sk_type(sk))) ++#define sk_PROFESSION_INFO_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(PROFESSION_INFO) *)OPENSSL_sk_deep_copy(ossl_check_const_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_copyfunc_type(copyfunc), ossl_check_PROFESSION_INFO_freefunc_type(freefunc))) ++#define sk_PROFESSION_INFO_set_cmp_func(sk, cmp) ((sk_PROFESSION_INFO_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_PROFESSION_INFO_sk_type(sk), ossl_check_PROFESSION_INFO_compfunc_type(cmp))) ++SKM_DEFINE_STACK_OF_INTERNAL(ADMISSIONS, ADMISSIONS, ADMISSIONS) ++#define sk_ADMISSIONS_num(sk) OPENSSL_sk_num(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_value(sk, idx) ((ADMISSIONS *)OPENSSL_sk_value(ossl_check_const_ADMISSIONS_sk_type(sk), (idx))) ++#define sk_ADMISSIONS_new(cmp) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new(ossl_check_ADMISSIONS_compfunc_type(cmp))) ++#define sk_ADMISSIONS_new_null() ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_null()) ++#define sk_ADMISSIONS_new_reserve(cmp, n) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_new_reserve(ossl_check_ADMISSIONS_compfunc_type(cmp), (n))) ++#define sk_ADMISSIONS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ADMISSIONS_sk_type(sk), (n)) ++#define sk_ADMISSIONS_free(sk) OPENSSL_sk_free(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_zero(sk) OPENSSL_sk_zero(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_delete(sk, i) ((ADMISSIONS *)OPENSSL_sk_delete(ossl_check_ADMISSIONS_sk_type(sk), (i))) ++#define sk_ADMISSIONS_delete_ptr(sk, ptr) ((ADMISSIONS *)OPENSSL_sk_delete_ptr(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_push(sk, ptr) OPENSSL_sk_push(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_pop(sk) ((ADMISSIONS *)OPENSSL_sk_pop(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_shift(sk) ((ADMISSIONS *)OPENSSL_sk_shift(ossl_check_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ADMISSIONS_sk_type(sk),ossl_check_ADMISSIONS_freefunc_type(freefunc)) ++#define sk_ADMISSIONS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), (idx)) ++#define sk_ADMISSIONS_set(sk, idx, ptr) ((ADMISSIONS *)OPENSSL_sk_set(ossl_check_ADMISSIONS_sk_type(sk), (idx), ossl_check_ADMISSIONS_type(ptr))) ++#define sk_ADMISSIONS_find(sk, ptr) OPENSSL_sk_find(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr)) ++#define sk_ADMISSIONS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_type(ptr), pnum) ++#define sk_ADMISSIONS_sort(sk) OPENSSL_sk_sort(ossl_check_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ADMISSIONS_sk_type(sk)) ++#define sk_ADMISSIONS_dup(sk) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_dup(ossl_check_const_ADMISSIONS_sk_type(sk))) ++#define sk_ADMISSIONS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ADMISSIONS) *)OPENSSL_sk_deep_copy(ossl_check_const_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_copyfunc_type(copyfunc), ossl_check_ADMISSIONS_freefunc_type(freefunc))) ++#define sk_ADMISSIONS_set_cmp_func(sk, cmp) ((sk_ADMISSIONS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ADMISSIONS_sk_type(sk), ossl_check_ADMISSIONS_compfunc_type(cmp))) ++ ++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/deps/openssl/config/archs/linux-sw_64/no-asm/include/progs.h b/deps/openssl/config/archs/linux-sw_64/no-asm/include/progs.h +new file mode 100644 +index 00000000..07bb763a +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/include/progs.h +@@ -0,0 +1,123 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by apps/progs.pl ++ * ++ * Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "function.h" ++ ++extern int asn1parse_main(int argc, char *argv[]); ++extern int ca_main(int argc, char *argv[]); ++extern int ciphers_main(int argc, char *argv[]); ++extern int cmp_main(int argc, char *argv[]); ++extern int cms_main(int argc, char *argv[]); ++extern int crl_main(int argc, char *argv[]); ++extern int crl2pkcs7_main(int argc, char *argv[]); ++extern int dgst_main(int argc, char *argv[]); ++extern int dhparam_main(int argc, char *argv[]); ++extern int dsa_main(int argc, char *argv[]); ++extern int dsaparam_main(int argc, char *argv[]); ++extern int ec_main(int argc, char *argv[]); ++extern int ecparam_main(int argc, char *argv[]); ++extern int enc_main(int argc, char *argv[]); ++extern int engine_main(int argc, char *argv[]); ++extern int errstr_main(int argc, char *argv[]); ++extern int fipsinstall_main(int argc, char *argv[]); ++extern int gendsa_main(int argc, char *argv[]); ++extern int genpkey_main(int argc, char *argv[]); ++extern int genrsa_main(int argc, char *argv[]); ++extern int help_main(int argc, char *argv[]); ++extern int info_main(int argc, char *argv[]); ++extern int kdf_main(int argc, char *argv[]); ++extern int list_main(int argc, char *argv[]); ++extern int mac_main(int argc, char *argv[]); ++extern int nseq_main(int argc, char *argv[]); ++extern int ocsp_main(int argc, char *argv[]); ++extern int passwd_main(int argc, char *argv[]); ++extern int pkcs12_main(int argc, char *argv[]); ++extern int pkcs7_main(int argc, char *argv[]); ++extern int pkcs8_main(int argc, char *argv[]); ++extern int pkey_main(int argc, char *argv[]); ++extern int pkeyparam_main(int argc, char *argv[]); ++extern int pkeyutl_main(int argc, char *argv[]); ++extern int prime_main(int argc, char *argv[]); ++extern int rand_main(int argc, char *argv[]); ++extern int rehash_main(int argc, char *argv[]); ++extern int req_main(int argc, char *argv[]); ++extern int rsa_main(int argc, char *argv[]); ++extern int rsautl_main(int argc, char *argv[]); ++extern int s_client_main(int argc, char *argv[]); ++extern int s_server_main(int argc, char *argv[]); ++extern int s_time_main(int argc, char *argv[]); ++extern int sess_id_main(int argc, char *argv[]); ++extern int smime_main(int argc, char *argv[]); ++extern int speed_main(int argc, char *argv[]); ++extern int spkac_main(int argc, char *argv[]); ++extern int srp_main(int argc, char *argv[]); ++extern int storeutl_main(int argc, char *argv[]); ++extern int ts_main(int argc, char *argv[]); ++extern int verify_main(int argc, char *argv[]); ++extern int version_main(int argc, char *argv[]); ++extern int x509_main(int argc, char *argv[]); ++ ++extern const OPTIONS asn1parse_options[]; ++extern const OPTIONS ca_options[]; ++extern const OPTIONS ciphers_options[]; ++extern const OPTIONS cmp_options[]; ++extern const OPTIONS cms_options[]; ++extern const OPTIONS crl_options[]; ++extern const OPTIONS crl2pkcs7_options[]; ++extern const OPTIONS dgst_options[]; ++extern const OPTIONS dhparam_options[]; ++extern const OPTIONS dsa_options[]; ++extern const OPTIONS dsaparam_options[]; ++extern const OPTIONS ec_options[]; ++extern const OPTIONS ecparam_options[]; ++extern const OPTIONS enc_options[]; ++extern const OPTIONS engine_options[]; ++extern const OPTIONS errstr_options[]; ++extern const OPTIONS fipsinstall_options[]; ++extern const OPTIONS gendsa_options[]; ++extern const OPTIONS genpkey_options[]; ++extern const OPTIONS genrsa_options[]; ++extern const OPTIONS help_options[]; ++extern const OPTIONS info_options[]; ++extern const OPTIONS kdf_options[]; ++extern const OPTIONS list_options[]; ++extern const OPTIONS mac_options[]; ++extern const OPTIONS nseq_options[]; ++extern const OPTIONS ocsp_options[]; ++extern const OPTIONS passwd_options[]; ++extern const OPTIONS pkcs12_options[]; ++extern const OPTIONS pkcs7_options[]; ++extern const OPTIONS pkcs8_options[]; ++extern const OPTIONS pkey_options[]; ++extern const OPTIONS pkeyparam_options[]; ++extern const OPTIONS pkeyutl_options[]; ++extern const OPTIONS prime_options[]; ++extern const OPTIONS rand_options[]; ++extern const OPTIONS rehash_options[]; ++extern const OPTIONS req_options[]; ++extern const OPTIONS rsa_options[]; ++extern const OPTIONS rsautl_options[]; ++extern const OPTIONS s_client_options[]; ++extern const OPTIONS s_server_options[]; ++extern const OPTIONS s_time_options[]; ++extern const OPTIONS sess_id_options[]; ++extern const OPTIONS smime_options[]; ++extern const OPTIONS speed_options[]; ++extern const OPTIONS spkac_options[]; ++extern const OPTIONS srp_options[]; ++extern const OPTIONS storeutl_options[]; ++extern const OPTIONS ts_options[]; ++extern const OPTIONS verify_options[]; ++extern const OPTIONS version_options[]; ++extern const OPTIONS x509_options[]; ++ ++extern FUNCTION functions[]; +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-cl.gypi b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-cl.gypi +new file mode 100644 +index 00000000..460fc045 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-cl.gypi +@@ -0,0 +1,99 @@ ++{ ++ 'variables': { ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'openssl_cli_srcs_linux-sw_64': [ ++ 'openssl/apps/lib/cmp_mock_srv.c', ++ 'openssl/apps/asn1parse.c', ++ 'openssl/apps/ca.c', ++ 'openssl/apps/ciphers.c', ++ 'openssl/apps/cmp.c', ++ 'openssl/apps/cms.c', ++ 'openssl/apps/crl.c', ++ 'openssl/apps/crl2pkcs7.c', ++ 'openssl/apps/dgst.c', ++ 'openssl/apps/dhparam.c', ++ 'openssl/apps/dsa.c', ++ 'openssl/apps/dsaparam.c', ++ 'openssl/apps/ec.c', ++ 'openssl/apps/ecparam.c', ++ 'openssl/apps/enc.c', ++ 'openssl/apps/engine.c', ++ 'openssl/apps/errstr.c', ++ 'openssl/apps/fipsinstall.c', ++ 'openssl/apps/gendsa.c', ++ 'openssl/apps/genpkey.c', ++ 'openssl/apps/genrsa.c', ++ 'openssl/apps/info.c', ++ 'openssl/apps/kdf.c', ++ 'openssl/apps/list.c', ++ 'openssl/apps/mac.c', ++ 'openssl/apps/nseq.c', ++ 'openssl/apps/ocsp.c', ++ 'openssl/apps/openssl.c', ++ 'openssl/apps/passwd.c', ++ 'openssl/apps/pkcs12.c', ++ 'openssl/apps/pkcs7.c', ++ 'openssl/apps/pkcs8.c', ++ 'openssl/apps/pkey.c', ++ 'openssl/apps/pkeyparam.c', ++ 'openssl/apps/pkeyutl.c', ++ 'openssl/apps/prime.c', ++ './config/archs/linux-sw_64/no-asm/apps/progs.c', ++ 'openssl/apps/rand.c', ++ 'openssl/apps/rehash.c', ++ 'openssl/apps/req.c', ++ 'openssl/apps/rsa.c', ++ 'openssl/apps/rsautl.c', ++ 'openssl/apps/s_client.c', ++ 'openssl/apps/s_server.c', ++ 'openssl/apps/s_time.c', ++ 'openssl/apps/sess_id.c', ++ 'openssl/apps/smime.c', ++ 'openssl/apps/speed.c', ++ 'openssl/apps/spkac.c', ++ 'openssl/apps/srp.c', ++ 'openssl/apps/storeutl.c', ++ 'openssl/apps/ts.c', ++ 'openssl/apps/verify.c', ++ 'openssl/apps/version.c', ++ 'openssl/apps/x509.c', ++ 'openssl/apps/lib/app_libctx.c', ++ 'openssl/apps/lib/app_params.c', ++ 'openssl/apps/lib/app_provider.c', ++ 'openssl/apps/lib/app_rand.c', ++ 'openssl/apps/lib/app_x509.c', ++ 'openssl/apps/lib/apps.c', ++ 'openssl/apps/lib/apps_ui.c', ++ 'openssl/apps/lib/columns.c', ++ 'openssl/apps/lib/engine.c', ++ 'openssl/apps/lib/engine_loader.c', ++ 'openssl/apps/lib/fmt.c', ++ 'openssl/apps/lib/http_server.c', ++ 'openssl/apps/lib/names.c', ++ 'openssl/apps/lib/opt.c', ++ 'openssl/apps/lib/s_cb.c', ++ 'openssl/apps/lib/s_socket.c', ++ 'openssl/apps/lib/tlssrp_depr.c', ++ ], ++ }, ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'include_dirs': [ ++ './include', ++ ], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_cli_srcs_linux-sw_64)'], ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-fips.gypi b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-fips.gypi +new file mode 100644 +index 00000000..10bceb78 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl-fips.gypi +@@ -0,0 +1,319 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_core.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_asm.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rsa/rsa_acvp_test_params.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_fips.c', ++ 'openssl/providers/fips/fipsprov.c', ++ 'openssl/providers/fips/self_test.c', ++ 'openssl/providers/fips/self_test_kats.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/providers/fips/fips_entry.c', ++ ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/legacy.ld', ++ './config/archs/linux-sw_64/no-asm/providers/fips.ld', ++ ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'FIPS_MODULE', ++ 'FIPS_MODULE', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ 'linker_script': '<(PRODUCT_DIR)/../../deps/openssl/config/archs/linux-sw_64/no-asm/providers/fips.ld' ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags': ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'ldflags': ['-Wl,--version-script=<@(linker_script)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/openssl.gypi b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl.gypi +new file mode 100644 +index 00000000..2d219470 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/openssl.gypi +@@ -0,0 +1,1001 @@ ++{ ++ 'variables': { ++ 'openssl_sources': [ ++ 'openssl/ssl/bio_ssl.c', ++ 'openssl/ssl/d1_lib.c', ++ 'openssl/ssl/d1_msg.c', ++ 'openssl/ssl/d1_srtp.c', ++ 'openssl/ssl/methods.c', ++ 'openssl/ssl/pqueue.c', ++ 'openssl/ssl/s3_enc.c', ++ 'openssl/ssl/s3_lib.c', ++ 'openssl/ssl/s3_msg.c', ++ 'openssl/ssl/ssl_asn1.c', ++ 'openssl/ssl/ssl_cert.c', ++ 'openssl/ssl/ssl_ciph.c', ++ 'openssl/ssl/ssl_conf.c', ++ 'openssl/ssl/ssl_err.c', ++ 'openssl/ssl/ssl_err_legacy.c', ++ 'openssl/ssl/ssl_init.c', ++ 'openssl/ssl/ssl_lib.c', ++ 'openssl/ssl/ssl_mcnf.c', ++ 'openssl/ssl/ssl_quic.c', ++ 'openssl/ssl/ssl_rsa.c', ++ 'openssl/ssl/ssl_rsa_legacy.c', ++ 'openssl/ssl/ssl_sess.c', ++ 'openssl/ssl/ssl_stat.c', ++ 'openssl/ssl/ssl_txt.c', ++ 'openssl/ssl/ssl_utst.c', ++ 'openssl/ssl/t1_enc.c', ++ 'openssl/ssl/t1_lib.c', ++ 'openssl/ssl/t1_trce.c', ++ 'openssl/ssl/tls13_enc.c', ++ 'openssl/ssl/tls_depr.c', ++ 'openssl/ssl/tls_srp.c', ++ 'openssl/ssl/record/dtls1_bitmap.c', ++ 'openssl/ssl/record/rec_layer_d1.c', ++ 'openssl/ssl/record/rec_layer_s3.c', ++ 'openssl/ssl/record/ssl3_buffer.c', ++ 'openssl/ssl/record/ssl3_record.c', ++ 'openssl/ssl/record/ssl3_record_tls13.c', ++ 'openssl/ssl/statem/extensions.c', ++ 'openssl/ssl/statem/extensions_clnt.c', ++ 'openssl/ssl/statem/extensions_cust.c', ++ 'openssl/ssl/statem/extensions_srvr.c', ++ 'openssl/ssl/statem/statem.c', ++ 'openssl/ssl/statem/statem_clnt.c', ++ 'openssl/ssl/statem/statem_dtls.c', ++ 'openssl/ssl/statem/statem_lib.c', ++ 'openssl/ssl/statem/statem_quic.c', ++ 'openssl/ssl/statem/statem_srvr.c', ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/aes/aes_cfb.c', ++ 'openssl/crypto/aes/aes_core.c', ++ 'openssl/crypto/aes/aes_ecb.c', ++ 'openssl/crypto/aes/aes_ige.c', ++ 'openssl/crypto/aes/aes_misc.c', ++ 'openssl/crypto/aes/aes_ofb.c', ++ 'openssl/crypto/aes/aes_wrap.c', ++ 'openssl/crypto/aria/aria.c', ++ 'openssl/crypto/asn1/a_bitstr.c', ++ 'openssl/crypto/asn1/a_d2i_fp.c', ++ 'openssl/crypto/asn1/a_digest.c', ++ 'openssl/crypto/asn1/a_dup.c', ++ 'openssl/crypto/asn1/a_gentm.c', ++ 'openssl/crypto/asn1/a_i2d_fp.c', ++ 'openssl/crypto/asn1/a_int.c', ++ 'openssl/crypto/asn1/a_mbstr.c', ++ 'openssl/crypto/asn1/a_object.c', ++ 'openssl/crypto/asn1/a_octet.c', ++ 'openssl/crypto/asn1/a_print.c', ++ 'openssl/crypto/asn1/a_sign.c', ++ 'openssl/crypto/asn1/a_strex.c', ++ 'openssl/crypto/asn1/a_strnid.c', ++ 'openssl/crypto/asn1/a_time.c', ++ 'openssl/crypto/asn1/a_type.c', ++ 'openssl/crypto/asn1/a_utctm.c', ++ 'openssl/crypto/asn1/a_utf8.c', ++ 'openssl/crypto/asn1/a_verify.c', ++ 'openssl/crypto/asn1/ameth_lib.c', ++ 'openssl/crypto/asn1/asn1_err.c', ++ 'openssl/crypto/asn1/asn1_gen.c', ++ 'openssl/crypto/asn1/asn1_item_list.c', ++ 'openssl/crypto/asn1/asn1_lib.c', ++ 'openssl/crypto/asn1/asn1_parse.c', ++ 'openssl/crypto/asn1/asn_mime.c', ++ 'openssl/crypto/asn1/asn_moid.c', ++ 'openssl/crypto/asn1/asn_mstbl.c', ++ 'openssl/crypto/asn1/asn_pack.c', ++ 'openssl/crypto/asn1/bio_asn1.c', ++ 'openssl/crypto/asn1/bio_ndef.c', ++ 'openssl/crypto/asn1/d2i_param.c', ++ 'openssl/crypto/asn1/d2i_pr.c', ++ 'openssl/crypto/asn1/d2i_pu.c', ++ 'openssl/crypto/asn1/evp_asn1.c', ++ 'openssl/crypto/asn1/f_int.c', ++ 'openssl/crypto/asn1/f_string.c', ++ 'openssl/crypto/asn1/i2d_evp.c', ++ 'openssl/crypto/asn1/n_pkey.c', ++ 'openssl/crypto/asn1/nsseq.c', ++ 'openssl/crypto/asn1/p5_pbe.c', ++ 'openssl/crypto/asn1/p5_pbev2.c', ++ 'openssl/crypto/asn1/p5_scrypt.c', ++ 'openssl/crypto/asn1/p8_pkey.c', ++ 'openssl/crypto/asn1/t_bitst.c', ++ 'openssl/crypto/asn1/t_pkey.c', ++ 'openssl/crypto/asn1/t_spki.c', ++ 'openssl/crypto/asn1/tasn_dec.c', ++ 'openssl/crypto/asn1/tasn_enc.c', ++ 'openssl/crypto/asn1/tasn_fre.c', ++ 'openssl/crypto/asn1/tasn_new.c', ++ 'openssl/crypto/asn1/tasn_prn.c', ++ 'openssl/crypto/asn1/tasn_scn.c', ++ 'openssl/crypto/asn1/tasn_typ.c', ++ 'openssl/crypto/asn1/tasn_utl.c', ++ 'openssl/crypto/asn1/x_algor.c', ++ 'openssl/crypto/asn1/x_bignum.c', ++ 'openssl/crypto/asn1/x_info.c', ++ 'openssl/crypto/asn1/x_int64.c', ++ 'openssl/crypto/asn1/x_long.c', ++ 'openssl/crypto/asn1/x_pkey.c', ++ 'openssl/crypto/asn1/x_sig.c', ++ 'openssl/crypto/asn1/x_spki.c', ++ 'openssl/crypto/asn1/x_val.c', ++ 'openssl/crypto/async/arch/async_null.c', ++ 'openssl/crypto/async/arch/async_posix.c', ++ 'openssl/crypto/async/arch/async_win.c', ++ 'openssl/crypto/async/async.c', ++ 'openssl/crypto/async/async_err.c', ++ 'openssl/crypto/async/async_wait.c', ++ 'openssl/crypto/bf/bf_cfb64.c', ++ 'openssl/crypto/bf/bf_ecb.c', ++ 'openssl/crypto/bf/bf_enc.c', ++ 'openssl/crypto/bf/bf_ofb64.c', ++ 'openssl/crypto/bf/bf_skey.c', ++ 'openssl/crypto/bio/bf_buff.c', ++ 'openssl/crypto/bio/bf_lbuf.c', ++ 'openssl/crypto/bio/bf_nbio.c', ++ 'openssl/crypto/bio/bf_null.c', ++ 'openssl/crypto/bio/bf_prefix.c', ++ 'openssl/crypto/bio/bf_readbuff.c', ++ 'openssl/crypto/bio/bio_addr.c', ++ 'openssl/crypto/bio/bio_cb.c', ++ 'openssl/crypto/bio/bio_dump.c', ++ 'openssl/crypto/bio/bio_err.c', ++ 'openssl/crypto/bio/bio_lib.c', ++ 'openssl/crypto/bio/bio_meth.c', ++ 'openssl/crypto/bio/bio_print.c', ++ 'openssl/crypto/bio/bio_sock.c', ++ 'openssl/crypto/bio/bio_sock2.c', ++ 'openssl/crypto/bio/bss_acpt.c', ++ 'openssl/crypto/bio/bss_bio.c', ++ 'openssl/crypto/bio/bss_conn.c', ++ 'openssl/crypto/bio/bss_core.c', ++ 'openssl/crypto/bio/bss_dgram.c', ++ 'openssl/crypto/bio/bss_fd.c', ++ 'openssl/crypto/bio/bss_file.c', ++ 'openssl/crypto/bio/bss_log.c', ++ 'openssl/crypto/bio/bss_mem.c', ++ 'openssl/crypto/bio/bss_null.c', ++ 'openssl/crypto/bio/bss_sock.c', ++ 'openssl/crypto/bio/ossl_core_bio.c', ++ 'openssl/crypto/bn/bn_add.c', ++ 'openssl/crypto/bn/bn_asm.c', ++ 'openssl/crypto/bn/bn_blind.c', ++ 'openssl/crypto/bn/bn_const.c', ++ 'openssl/crypto/bn/bn_conv.c', ++ 'openssl/crypto/bn/bn_ctx.c', ++ 'openssl/crypto/bn/bn_depr.c', ++ 'openssl/crypto/bn/bn_dh.c', ++ 'openssl/crypto/bn/bn_div.c', ++ 'openssl/crypto/bn/bn_err.c', ++ 'openssl/crypto/bn/bn_exp.c', ++ 'openssl/crypto/bn/bn_exp2.c', ++ 'openssl/crypto/bn/bn_gcd.c', ++ 'openssl/crypto/bn/bn_gf2m.c', ++ 'openssl/crypto/bn/bn_intern.c', ++ 'openssl/crypto/bn/bn_kron.c', ++ 'openssl/crypto/bn/bn_lib.c', ++ 'openssl/crypto/bn/bn_mod.c', ++ 'openssl/crypto/bn/bn_mont.c', ++ 'openssl/crypto/bn/bn_mpi.c', ++ 'openssl/crypto/bn/bn_mul.c', ++ 'openssl/crypto/bn/bn_nist.c', ++ 'openssl/crypto/bn/bn_prime.c', ++ 'openssl/crypto/bn/bn_print.c', ++ 'openssl/crypto/bn/bn_rand.c', ++ 'openssl/crypto/bn/bn_recp.c', ++ 'openssl/crypto/bn/bn_rsa_fips186_4.c', ++ 'openssl/crypto/bn/bn_shift.c', ++ 'openssl/crypto/bn/bn_sqr.c', ++ 'openssl/crypto/bn/bn_sqrt.c', ++ 'openssl/crypto/bn/bn_srp.c', ++ 'openssl/crypto/bn/bn_word.c', ++ 'openssl/crypto/bn/bn_x931p.c', ++ 'openssl/crypto/buffer/buf_err.c', ++ 'openssl/crypto/buffer/buffer.c', ++ 'openssl/crypto/camellia/camellia.c', ++ 'openssl/crypto/camellia/cmll_cbc.c', ++ 'openssl/crypto/camellia/cmll_cfb.c', ++ 'openssl/crypto/camellia/cmll_ctr.c', ++ 'openssl/crypto/camellia/cmll_ecb.c', ++ 'openssl/crypto/camellia/cmll_misc.c', ++ 'openssl/crypto/camellia/cmll_ofb.c', ++ 'openssl/crypto/cast/c_cfb64.c', ++ 'openssl/crypto/cast/c_ecb.c', ++ 'openssl/crypto/cast/c_enc.c', ++ 'openssl/crypto/cast/c_ofb64.c', ++ 'openssl/crypto/cast/c_skey.c', ++ 'openssl/crypto/chacha/chacha_enc.c', ++ 'openssl/crypto/cmac/cmac.c', ++ 'openssl/crypto/cmp/cmp_asn.c', ++ 'openssl/crypto/cmp/cmp_client.c', ++ 'openssl/crypto/cmp/cmp_ctx.c', ++ 'openssl/crypto/cmp/cmp_err.c', ++ 'openssl/crypto/cmp/cmp_hdr.c', ++ 'openssl/crypto/cmp/cmp_http.c', ++ 'openssl/crypto/cmp/cmp_msg.c', ++ 'openssl/crypto/cmp/cmp_protect.c', ++ 'openssl/crypto/cmp/cmp_server.c', ++ 'openssl/crypto/cmp/cmp_status.c', ++ 'openssl/crypto/cmp/cmp_util.c', ++ 'openssl/crypto/cmp/cmp_vfy.c', ++ 'openssl/crypto/cms/cms_asn1.c', ++ 'openssl/crypto/cms/cms_att.c', ++ 'openssl/crypto/cms/cms_cd.c', ++ 'openssl/crypto/cms/cms_dd.c', ++ 'openssl/crypto/cms/cms_dh.c', ++ 'openssl/crypto/cms/cms_ec.c', ++ 'openssl/crypto/cms/cms_enc.c', ++ 'openssl/crypto/cms/cms_env.c', ++ 'openssl/crypto/cms/cms_err.c', ++ 'openssl/crypto/cms/cms_ess.c', ++ 'openssl/crypto/cms/cms_io.c', ++ 'openssl/crypto/cms/cms_kari.c', ++ 'openssl/crypto/cms/cms_lib.c', ++ 'openssl/crypto/cms/cms_pwri.c', ++ 'openssl/crypto/cms/cms_rsa.c', ++ 'openssl/crypto/cms/cms_sd.c', ++ 'openssl/crypto/cms/cms_smime.c', ++ 'openssl/crypto/conf/conf_api.c', ++ 'openssl/crypto/conf/conf_def.c', ++ 'openssl/crypto/conf/conf_err.c', ++ 'openssl/crypto/conf/conf_lib.c', ++ 'openssl/crypto/conf/conf_mall.c', ++ 'openssl/crypto/conf/conf_mod.c', ++ 'openssl/crypto/conf/conf_sap.c', ++ 'openssl/crypto/conf/conf_ssl.c', ++ 'openssl/crypto/crmf/crmf_asn.c', ++ 'openssl/crypto/crmf/crmf_err.c', ++ 'openssl/crypto/crmf/crmf_lib.c', ++ 'openssl/crypto/crmf/crmf_pbm.c', ++ 'openssl/crypto/ct/ct_b64.c', ++ 'openssl/crypto/ct/ct_err.c', ++ 'openssl/crypto/ct/ct_log.c', ++ 'openssl/crypto/ct/ct_oct.c', ++ 'openssl/crypto/ct/ct_policy.c', ++ 'openssl/crypto/ct/ct_prn.c', ++ 'openssl/crypto/ct/ct_sct.c', ++ 'openssl/crypto/ct/ct_sct_ctx.c', ++ 'openssl/crypto/ct/ct_vfy.c', ++ 'openssl/crypto/ct/ct_x509v3.c', ++ 'openssl/crypto/des/cbc_cksm.c', ++ 'openssl/crypto/des/cbc_enc.c', ++ 'openssl/crypto/des/cfb64ede.c', ++ 'openssl/crypto/des/cfb64enc.c', ++ 'openssl/crypto/des/cfb_enc.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/ecb3_enc.c', ++ 'openssl/crypto/des/ecb_enc.c', ++ 'openssl/crypto/des/fcrypt.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/des/ofb64ede.c', ++ 'openssl/crypto/des/ofb64enc.c', ++ 'openssl/crypto/des/ofb_enc.c', ++ 'openssl/crypto/des/pcbc_enc.c', ++ 'openssl/crypto/des/qud_cksm.c', ++ 'openssl/crypto/des/rand_key.c', ++ 'openssl/crypto/des/set_key.c', ++ 'openssl/crypto/des/str2key.c', ++ 'openssl/crypto/des/xcbc_enc.c', ++ 'openssl/crypto/dh/dh_ameth.c', ++ 'openssl/crypto/dh/dh_asn1.c', ++ 'openssl/crypto/dh/dh_backend.c', ++ 'openssl/crypto/dh/dh_check.c', ++ 'openssl/crypto/dh/dh_depr.c', ++ 'openssl/crypto/dh/dh_err.c', ++ 'openssl/crypto/dh/dh_gen.c', ++ 'openssl/crypto/dh/dh_group_params.c', ++ 'openssl/crypto/dh/dh_kdf.c', ++ 'openssl/crypto/dh/dh_key.c', ++ 'openssl/crypto/dh/dh_lib.c', ++ 'openssl/crypto/dh/dh_meth.c', ++ 'openssl/crypto/dh/dh_pmeth.c', ++ 'openssl/crypto/dh/dh_prn.c', ++ 'openssl/crypto/dh/dh_rfc5114.c', ++ 'openssl/crypto/dsa/dsa_ameth.c', ++ 'openssl/crypto/dsa/dsa_asn1.c', ++ 'openssl/crypto/dsa/dsa_backend.c', ++ 'openssl/crypto/dsa/dsa_check.c', ++ 'openssl/crypto/dsa/dsa_depr.c', ++ 'openssl/crypto/dsa/dsa_err.c', ++ 'openssl/crypto/dsa/dsa_gen.c', ++ 'openssl/crypto/dsa/dsa_key.c', ++ 'openssl/crypto/dsa/dsa_lib.c', ++ 'openssl/crypto/dsa/dsa_meth.c', ++ 'openssl/crypto/dsa/dsa_ossl.c', ++ 'openssl/crypto/dsa/dsa_pmeth.c', ++ 'openssl/crypto/dsa/dsa_prn.c', ++ 'openssl/crypto/dsa/dsa_sign.c', ++ 'openssl/crypto/dsa/dsa_vrf.c', ++ 'openssl/crypto/dso/dso_dl.c', ++ 'openssl/crypto/dso/dso_dlfcn.c', ++ 'openssl/crypto/dso/dso_err.c', ++ 'openssl/crypto/dso/dso_lib.c', ++ 'openssl/crypto/dso/dso_openssl.c', ++ 'openssl/crypto/dso/dso_vms.c', ++ 'openssl/crypto/dso/dso_win32.c', ++ 'openssl/crypto/ec/curve448/arch_32/f_impl32.c', ++ 'openssl/crypto/ec/curve448/arch_64/f_impl64.c', ++ 'openssl/crypto/ec/curve448/curve448.c', ++ 'openssl/crypto/ec/curve448/curve448_tables.c', ++ 'openssl/crypto/ec/curve448/eddsa.c', ++ 'openssl/crypto/ec/curve448/f_generic.c', ++ 'openssl/crypto/ec/curve448/scalar.c', ++ 'openssl/crypto/ec/curve25519.c', ++ 'openssl/crypto/ec/ec2_oct.c', ++ 'openssl/crypto/ec/ec2_smpl.c', ++ 'openssl/crypto/ec/ec_ameth.c', ++ 'openssl/crypto/ec/ec_asn1.c', ++ 'openssl/crypto/ec/ec_backend.c', ++ 'openssl/crypto/ec/ec_check.c', ++ 'openssl/crypto/ec/ec_curve.c', ++ 'openssl/crypto/ec/ec_cvt.c', ++ 'openssl/crypto/ec/ec_deprecated.c', ++ 'openssl/crypto/ec/ec_err.c', ++ 'openssl/crypto/ec/ec_key.c', ++ 'openssl/crypto/ec/ec_kmeth.c', ++ 'openssl/crypto/ec/ec_lib.c', ++ 'openssl/crypto/ec/ec_mult.c', ++ 'openssl/crypto/ec/ec_oct.c', ++ 'openssl/crypto/ec/ec_pmeth.c', ++ 'openssl/crypto/ec/ec_print.c', ++ 'openssl/crypto/ec/ecdh_kdf.c', ++ 'openssl/crypto/ec/ecdh_ossl.c', ++ 'openssl/crypto/ec/ecdsa_ossl.c', ++ 'openssl/crypto/ec/ecdsa_sign.c', ++ 'openssl/crypto/ec/ecdsa_vrf.c', ++ 'openssl/crypto/ec/eck_prn.c', ++ 'openssl/crypto/ec/ecp_mont.c', ++ 'openssl/crypto/ec/ecp_nist.c', ++ 'openssl/crypto/ec/ecp_oct.c', ++ 'openssl/crypto/ec/ecp_smpl.c', ++ 'openssl/crypto/ec/ecx_backend.c', ++ 'openssl/crypto/ec/ecx_key.c', ++ 'openssl/crypto/ec/ecx_meth.c', ++ 'openssl/crypto/encode_decode/decoder_err.c', ++ 'openssl/crypto/encode_decode/decoder_lib.c', ++ 'openssl/crypto/encode_decode/decoder_meth.c', ++ 'openssl/crypto/encode_decode/decoder_pkey.c', ++ 'openssl/crypto/encode_decode/encoder_err.c', ++ 'openssl/crypto/encode_decode/encoder_lib.c', ++ 'openssl/crypto/encode_decode/encoder_meth.c', ++ 'openssl/crypto/encode_decode/encoder_pkey.c', ++ 'openssl/crypto/engine/eng_all.c', ++ 'openssl/crypto/engine/eng_cnf.c', ++ 'openssl/crypto/engine/eng_ctrl.c', ++ 'openssl/crypto/engine/eng_dyn.c', ++ 'openssl/crypto/engine/eng_err.c', ++ 'openssl/crypto/engine/eng_fat.c', ++ 'openssl/crypto/engine/eng_init.c', ++ 'openssl/crypto/engine/eng_lib.c', ++ 'openssl/crypto/engine/eng_list.c', ++ 'openssl/crypto/engine/eng_openssl.c', ++ 'openssl/crypto/engine/eng_pkey.c', ++ 'openssl/crypto/engine/eng_rdrand.c', ++ 'openssl/crypto/engine/eng_table.c', ++ 'openssl/crypto/engine/tb_asnmth.c', ++ 'openssl/crypto/engine/tb_cipher.c', ++ 'openssl/crypto/engine/tb_dh.c', ++ 'openssl/crypto/engine/tb_digest.c', ++ 'openssl/crypto/engine/tb_dsa.c', ++ 'openssl/crypto/engine/tb_eckey.c', ++ 'openssl/crypto/engine/tb_pkmeth.c', ++ 'openssl/crypto/engine/tb_rand.c', ++ 'openssl/crypto/engine/tb_rsa.c', ++ 'openssl/crypto/err/err.c', ++ 'openssl/crypto/err/err_all.c', ++ 'openssl/crypto/err/err_all_legacy.c', ++ 'openssl/crypto/err/err_blocks.c', ++ 'openssl/crypto/err/err_prn.c', ++ 'openssl/crypto/ess/ess_asn1.c', ++ 'openssl/crypto/ess/ess_err.c', ++ 'openssl/crypto/ess/ess_lib.c', ++ 'openssl/crypto/evp/asymcipher.c', ++ 'openssl/crypto/evp/bio_b64.c', ++ 'openssl/crypto/evp/bio_enc.c', ++ 'openssl/crypto/evp/bio_md.c', ++ 'openssl/crypto/evp/bio_ok.c', ++ 'openssl/crypto/evp/c_allc.c', ++ 'openssl/crypto/evp/c_alld.c', ++ 'openssl/crypto/evp/cmeth_lib.c', ++ 'openssl/crypto/evp/ctrl_params_translate.c', ++ 'openssl/crypto/evp/dh_ctrl.c', ++ 'openssl/crypto/evp/dh_support.c', ++ 'openssl/crypto/evp/digest.c', ++ 'openssl/crypto/evp/dsa_ctrl.c', ++ 'openssl/crypto/evp/e_aes.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha1.c', ++ 'openssl/crypto/evp/e_aes_cbc_hmac_sha256.c', ++ 'openssl/crypto/evp/e_aria.c', ++ 'openssl/crypto/evp/e_bf.c', ++ 'openssl/crypto/evp/e_camellia.c', ++ 'openssl/crypto/evp/e_cast.c', ++ 'openssl/crypto/evp/e_chacha20_poly1305.c', ++ 'openssl/crypto/evp/e_des.c', ++ 'openssl/crypto/evp/e_des3.c', ++ 'openssl/crypto/evp/e_idea.c', ++ 'openssl/crypto/evp/e_null.c', ++ 'openssl/crypto/evp/e_old.c', ++ 'openssl/crypto/evp/e_rc2.c', ++ 'openssl/crypto/evp/e_rc4.c', ++ 'openssl/crypto/evp/e_rc4_hmac_md5.c', ++ 'openssl/crypto/evp/e_rc5.c', ++ 'openssl/crypto/evp/e_seed.c', ++ 'openssl/crypto/evp/e_sm4.c', ++ 'openssl/crypto/evp/e_xcbc_d.c', ++ 'openssl/crypto/evp/ec_ctrl.c', ++ 'openssl/crypto/evp/ec_support.c', ++ 'openssl/crypto/evp/encode.c', ++ 'openssl/crypto/evp/evp_cnf.c', ++ 'openssl/crypto/evp/evp_enc.c', ++ 'openssl/crypto/evp/evp_err.c', ++ 'openssl/crypto/evp/evp_fetch.c', ++ 'openssl/crypto/evp/evp_key.c', ++ 'openssl/crypto/evp/evp_lib.c', ++ 'openssl/crypto/evp/evp_pbe.c', ++ 'openssl/crypto/evp/evp_pkey.c', ++ 'openssl/crypto/evp/evp_rand.c', ++ 'openssl/crypto/evp/evp_utils.c', ++ 'openssl/crypto/evp/exchange.c', ++ 'openssl/crypto/evp/kdf_lib.c', ++ 'openssl/crypto/evp/kdf_meth.c', ++ 'openssl/crypto/evp/kem.c', ++ 'openssl/crypto/evp/keymgmt_lib.c', ++ 'openssl/crypto/evp/keymgmt_meth.c', ++ 'openssl/crypto/evp/legacy_blake2.c', ++ 'openssl/crypto/evp/legacy_md4.c', ++ 'openssl/crypto/evp/legacy_md5.c', ++ 'openssl/crypto/evp/legacy_md5_sha1.c', ++ 'openssl/crypto/evp/legacy_mdc2.c', ++ 'openssl/crypto/evp/legacy_ripemd.c', ++ 'openssl/crypto/evp/legacy_sha.c', ++ 'openssl/crypto/evp/legacy_wp.c', ++ 'openssl/crypto/evp/m_null.c', ++ 'openssl/crypto/evp/m_sigver.c', ++ 'openssl/crypto/evp/mac_lib.c', ++ 'openssl/crypto/evp/mac_meth.c', ++ 'openssl/crypto/evp/names.c', ++ 'openssl/crypto/evp/p5_crpt.c', ++ 'openssl/crypto/evp/p5_crpt2.c', ++ 'openssl/crypto/evp/p_dec.c', ++ 'openssl/crypto/evp/p_enc.c', ++ 'openssl/crypto/evp/p_legacy.c', ++ 'openssl/crypto/evp/p_lib.c', ++ 'openssl/crypto/evp/p_open.c', ++ 'openssl/crypto/evp/p_seal.c', ++ 'openssl/crypto/evp/p_sign.c', ++ 'openssl/crypto/evp/p_verify.c', ++ 'openssl/crypto/evp/pbe_scrypt.c', ++ 'openssl/crypto/evp/pmeth_check.c', ++ 'openssl/crypto/evp/pmeth_gn.c', ++ 'openssl/crypto/evp/pmeth_lib.c', ++ 'openssl/crypto/evp/signature.c', ++ 'openssl/crypto/ffc/ffc_backend.c', ++ 'openssl/crypto/ffc/ffc_dh.c', ++ 'openssl/crypto/ffc/ffc_key_generate.c', ++ 'openssl/crypto/ffc/ffc_key_validate.c', ++ 'openssl/crypto/ffc/ffc_params.c', ++ 'openssl/crypto/ffc/ffc_params_generate.c', ++ 'openssl/crypto/ffc/ffc_params_validate.c', ++ 'openssl/crypto/hmac/hmac.c', ++ 'openssl/crypto/http/http_client.c', ++ 'openssl/crypto/http/http_err.c', ++ 'openssl/crypto/http/http_lib.c', ++ 'openssl/crypto/idea/i_cbc.c', ++ 'openssl/crypto/idea/i_cfb64.c', ++ 'openssl/crypto/idea/i_ecb.c', ++ 'openssl/crypto/idea/i_ofb64.c', ++ 'openssl/crypto/idea/i_skey.c', ++ 'openssl/crypto/kdf/kdf_err.c', ++ 'openssl/crypto/lhash/lh_stats.c', ++ 'openssl/crypto/lhash/lhash.c', ++ 'openssl/crypto/asn1_dsa.c', ++ 'openssl/crypto/bsearch.c', ++ 'openssl/crypto/context.c', ++ 'openssl/crypto/core_algorithm.c', ++ 'openssl/crypto/core_fetch.c', ++ 'openssl/crypto/core_namemap.c', ++ 'openssl/crypto/cpt_err.c', ++ 'openssl/crypto/cpuid.c', ++ 'openssl/crypto/cryptlib.c', ++ 'openssl/crypto/ctype.c', ++ 'openssl/crypto/cversion.c', ++ 'openssl/crypto/der_writer.c', ++ 'openssl/crypto/ebcdic.c', ++ 'openssl/crypto/ex_data.c', ++ 'openssl/crypto/getenv.c', ++ 'openssl/crypto/info.c', ++ 'openssl/crypto/init.c', ++ 'openssl/crypto/initthread.c', ++ 'openssl/crypto/mem.c', ++ 'openssl/crypto/mem_clr.c', ++ 'openssl/crypto/mem_sec.c', ++ 'openssl/crypto/o_dir.c', ++ 'openssl/crypto/o_fopen.c', ++ 'openssl/crypto/o_init.c', ++ 'openssl/crypto/o_str.c', ++ 'openssl/crypto/o_time.c', ++ 'openssl/crypto/packet.c', ++ 'openssl/crypto/param_build.c', ++ 'openssl/crypto/param_build_set.c', ++ 'openssl/crypto/params.c', ++ 'openssl/crypto/params_dup.c', ++ 'openssl/crypto/params_from_text.c', ++ 'openssl/crypto/passphrase.c', ++ 'openssl/crypto/provider.c', ++ 'openssl/crypto/provider_child.c', ++ 'openssl/crypto/provider_conf.c', ++ 'openssl/crypto/provider_core.c', ++ 'openssl/crypto/provider_predefined.c', ++ 'openssl/crypto/punycode.c', ++ 'openssl/crypto/self_test_core.c', ++ 'openssl/crypto/sparse_array.c', ++ 'openssl/crypto/threads_lib.c', ++ 'openssl/crypto/threads_none.c', ++ 'openssl/crypto/threads_pthread.c', ++ 'openssl/crypto/threads_win.c', ++ 'openssl/crypto/trace.c', ++ 'openssl/crypto/uid.c', ++ 'openssl/crypto/md4/md4_dgst.c', ++ 'openssl/crypto/md4/md4_one.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/crypto/mdc2/mdc2_one.c', ++ 'openssl/crypto/mdc2/mdc2dgst.c', ++ 'openssl/crypto/modes/cbc128.c', ++ 'openssl/crypto/modes/ccm128.c', ++ 'openssl/crypto/modes/cfb128.c', ++ 'openssl/crypto/modes/ctr128.c', ++ 'openssl/crypto/modes/cts128.c', ++ 'openssl/crypto/modes/gcm128.c', ++ 'openssl/crypto/modes/ocb128.c', ++ 'openssl/crypto/modes/ofb128.c', ++ 'openssl/crypto/modes/siv128.c', ++ 'openssl/crypto/modes/wrap128.c', ++ 'openssl/crypto/modes/xts128.c', ++ 'openssl/crypto/objects/o_names.c', ++ 'openssl/crypto/objects/obj_dat.c', ++ 'openssl/crypto/objects/obj_err.c', ++ 'openssl/crypto/objects/obj_lib.c', ++ 'openssl/crypto/objects/obj_xref.c', ++ 'openssl/crypto/ocsp/ocsp_asn.c', ++ 'openssl/crypto/ocsp/ocsp_cl.c', ++ 'openssl/crypto/ocsp/ocsp_err.c', ++ 'openssl/crypto/ocsp/ocsp_ext.c', ++ 'openssl/crypto/ocsp/ocsp_http.c', ++ 'openssl/crypto/ocsp/ocsp_lib.c', ++ 'openssl/crypto/ocsp/ocsp_prn.c', ++ 'openssl/crypto/ocsp/ocsp_srv.c', ++ 'openssl/crypto/ocsp/ocsp_vfy.c', ++ 'openssl/crypto/ocsp/v3_ocsp.c', ++ 'openssl/crypto/pem/pem_all.c', ++ 'openssl/crypto/pem/pem_err.c', ++ 'openssl/crypto/pem/pem_info.c', ++ 'openssl/crypto/pem/pem_lib.c', ++ 'openssl/crypto/pem/pem_oth.c', ++ 'openssl/crypto/pem/pem_pk8.c', ++ 'openssl/crypto/pem/pem_pkey.c', ++ 'openssl/crypto/pem/pem_sign.c', ++ 'openssl/crypto/pem/pem_x509.c', ++ 'openssl/crypto/pem/pem_xaux.c', ++ 'openssl/crypto/pem/pvkfmt.c', ++ 'openssl/crypto/pkcs12/p12_add.c', ++ 'openssl/crypto/pkcs12/p12_asn.c', ++ 'openssl/crypto/pkcs12/p12_attr.c', ++ 'openssl/crypto/pkcs12/p12_crpt.c', ++ 'openssl/crypto/pkcs12/p12_crt.c', ++ 'openssl/crypto/pkcs12/p12_decr.c', ++ 'openssl/crypto/pkcs12/p12_init.c', ++ 'openssl/crypto/pkcs12/p12_key.c', ++ 'openssl/crypto/pkcs12/p12_kiss.c', ++ 'openssl/crypto/pkcs12/p12_mutl.c', ++ 'openssl/crypto/pkcs12/p12_npas.c', ++ 'openssl/crypto/pkcs12/p12_p8d.c', ++ 'openssl/crypto/pkcs12/p12_p8e.c', ++ 'openssl/crypto/pkcs12/p12_sbag.c', ++ 'openssl/crypto/pkcs12/p12_utl.c', ++ 'openssl/crypto/pkcs12/pk12err.c', ++ 'openssl/crypto/pkcs7/bio_pk7.c', ++ 'openssl/crypto/pkcs7/pk7_asn1.c', ++ 'openssl/crypto/pkcs7/pk7_attr.c', ++ 'openssl/crypto/pkcs7/pk7_doit.c', ++ 'openssl/crypto/pkcs7/pk7_lib.c', ++ 'openssl/crypto/pkcs7/pk7_mime.c', ++ 'openssl/crypto/pkcs7/pk7_smime.c', ++ 'openssl/crypto/pkcs7/pkcs7err.c', ++ 'openssl/crypto/poly1305/poly1305.c', ++ 'openssl/crypto/property/defn_cache.c', ++ 'openssl/crypto/property/property.c', ++ 'openssl/crypto/property/property_err.c', ++ 'openssl/crypto/property/property_parse.c', ++ 'openssl/crypto/property/property_query.c', ++ 'openssl/crypto/property/property_string.c', ++ 'openssl/crypto/rand/prov_seed.c', ++ 'openssl/crypto/rand/rand_deprecated.c', ++ 'openssl/crypto/rand/rand_err.c', ++ 'openssl/crypto/rand/rand_lib.c', ++ 'openssl/crypto/rand/rand_meth.c', ++ 'openssl/crypto/rand/rand_pool.c', ++ 'openssl/crypto/rand/randfile.c', ++ 'openssl/crypto/rc2/rc2_cbc.c', ++ 'openssl/crypto/rc2/rc2_ecb.c', ++ 'openssl/crypto/rc2/rc2_skey.c', ++ 'openssl/crypto/rc2/rc2cfb64.c', ++ 'openssl/crypto/rc2/rc2ofb64.c', ++ 'openssl/crypto/rc4/rc4_enc.c', ++ 'openssl/crypto/rc4/rc4_skey.c', ++ 'openssl/crypto/ripemd/rmd_dgst.c', ++ 'openssl/crypto/ripemd/rmd_one.c', ++ 'openssl/crypto/rsa/rsa_ameth.c', ++ 'openssl/crypto/rsa/rsa_asn1.c', ++ 'openssl/crypto/rsa/rsa_backend.c', ++ 'openssl/crypto/rsa/rsa_chk.c', ++ 'openssl/crypto/rsa/rsa_crpt.c', ++ 'openssl/crypto/rsa/rsa_depr.c', ++ 'openssl/crypto/rsa/rsa_err.c', ++ 'openssl/crypto/rsa/rsa_gen.c', ++ 'openssl/crypto/rsa/rsa_lib.c', ++ 'openssl/crypto/rsa/rsa_meth.c', ++ 'openssl/crypto/rsa/rsa_mp.c', ++ 'openssl/crypto/rsa/rsa_mp_names.c', ++ 'openssl/crypto/rsa/rsa_none.c', ++ 'openssl/crypto/rsa/rsa_oaep.c', ++ 'openssl/crypto/rsa/rsa_ossl.c', ++ 'openssl/crypto/rsa/rsa_pk1.c', ++ 'openssl/crypto/rsa/rsa_pmeth.c', ++ 'openssl/crypto/rsa/rsa_prn.c', ++ 'openssl/crypto/rsa/rsa_pss.c', ++ 'openssl/crypto/rsa/rsa_saos.c', ++ 'openssl/crypto/rsa/rsa_schemes.c', ++ 'openssl/crypto/rsa/rsa_sign.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_check.c', ++ 'openssl/crypto/rsa/rsa_sp800_56b_gen.c', ++ 'openssl/crypto/rsa/rsa_x931.c', ++ 'openssl/crypto/rsa/rsa_x931g.c', ++ 'openssl/crypto/seed/seed.c', ++ 'openssl/crypto/seed/seed_cbc.c', ++ 'openssl/crypto/seed/seed_cfb.c', ++ 'openssl/crypto/seed/seed_ecb.c', ++ 'openssl/crypto/seed/seed_ofb.c', ++ 'openssl/crypto/sha/keccak1600.c', ++ 'openssl/crypto/sha/sha1_one.c', ++ 'openssl/crypto/sha/sha1dgst.c', ++ 'openssl/crypto/sha/sha256.c', ++ 'openssl/crypto/sha/sha3.c', ++ 'openssl/crypto/sha/sha512.c', ++ 'openssl/crypto/siphash/siphash.c', ++ 'openssl/crypto/sm2/sm2_crypt.c', ++ 'openssl/crypto/sm2/sm2_err.c', ++ 'openssl/crypto/sm2/sm2_key.c', ++ 'openssl/crypto/sm2/sm2_sign.c', ++ 'openssl/crypto/sm3/legacy_sm3.c', ++ 'openssl/crypto/sm3/sm3.c', ++ 'openssl/crypto/sm4/sm4.c', ++ 'openssl/crypto/srp/srp_lib.c', ++ 'openssl/crypto/srp/srp_vfy.c', ++ 'openssl/crypto/stack/stack.c', ++ 'openssl/crypto/store/store_err.c', ++ 'openssl/crypto/store/store_init.c', ++ 'openssl/crypto/store/store_lib.c', ++ 'openssl/crypto/store/store_meth.c', ++ 'openssl/crypto/store/store_register.c', ++ 'openssl/crypto/store/store_result.c', ++ 'openssl/crypto/store/store_strings.c', ++ 'openssl/crypto/ts/ts_asn1.c', ++ 'openssl/crypto/ts/ts_conf.c', ++ 'openssl/crypto/ts/ts_err.c', ++ 'openssl/crypto/ts/ts_lib.c', ++ 'openssl/crypto/ts/ts_req_print.c', ++ 'openssl/crypto/ts/ts_req_utils.c', ++ 'openssl/crypto/ts/ts_rsp_print.c', ++ 'openssl/crypto/ts/ts_rsp_sign.c', ++ 'openssl/crypto/ts/ts_rsp_utils.c', ++ 'openssl/crypto/ts/ts_rsp_verify.c', ++ 'openssl/crypto/ts/ts_verify_ctx.c', ++ 'openssl/crypto/txt_db/txt_db.c', ++ 'openssl/crypto/ui/ui_err.c', ++ 'openssl/crypto/ui/ui_lib.c', ++ 'openssl/crypto/ui/ui_null.c', ++ 'openssl/crypto/ui/ui_openssl.c', ++ 'openssl/crypto/ui/ui_util.c', ++ 'openssl/crypto/whrlpool/wp_block.c', ++ 'openssl/crypto/whrlpool/wp_dgst.c', ++ 'openssl/crypto/x509/by_dir.c', ++ 'openssl/crypto/x509/by_file.c', ++ 'openssl/crypto/x509/by_store.c', ++ 'openssl/crypto/x509/pcy_cache.c', ++ 'openssl/crypto/x509/pcy_data.c', ++ 'openssl/crypto/x509/pcy_lib.c', ++ 'openssl/crypto/x509/pcy_map.c', ++ 'openssl/crypto/x509/pcy_node.c', ++ 'openssl/crypto/x509/pcy_tree.c', ++ 'openssl/crypto/x509/t_crl.c', ++ 'openssl/crypto/x509/t_req.c', ++ 'openssl/crypto/x509/t_x509.c', ++ 'openssl/crypto/x509/v3_addr.c', ++ 'openssl/crypto/x509/v3_admis.c', ++ 'openssl/crypto/x509/v3_akeya.c', ++ 'openssl/crypto/x509/v3_akid.c', ++ 'openssl/crypto/x509/v3_asid.c', ++ 'openssl/crypto/x509/v3_bcons.c', ++ 'openssl/crypto/x509/v3_bitst.c', ++ 'openssl/crypto/x509/v3_conf.c', ++ 'openssl/crypto/x509/v3_cpols.c', ++ 'openssl/crypto/x509/v3_crld.c', ++ 'openssl/crypto/x509/v3_enum.c', ++ 'openssl/crypto/x509/v3_extku.c', ++ 'openssl/crypto/x509/v3_genn.c', ++ 'openssl/crypto/x509/v3_ia5.c', ++ 'openssl/crypto/x509/v3_info.c', ++ 'openssl/crypto/x509/v3_int.c', ++ 'openssl/crypto/x509/v3_ist.c', ++ 'openssl/crypto/x509/v3_lib.c', ++ 'openssl/crypto/x509/v3_ncons.c', ++ 'openssl/crypto/x509/v3_pci.c', ++ 'openssl/crypto/x509/v3_pcia.c', ++ 'openssl/crypto/x509/v3_pcons.c', ++ 'openssl/crypto/x509/v3_pku.c', ++ 'openssl/crypto/x509/v3_pmaps.c', ++ 'openssl/crypto/x509/v3_prn.c', ++ 'openssl/crypto/x509/v3_purp.c', ++ 'openssl/crypto/x509/v3_san.c', ++ 'openssl/crypto/x509/v3_skid.c', ++ 'openssl/crypto/x509/v3_sxnet.c', ++ 'openssl/crypto/x509/v3_tlsf.c', ++ 'openssl/crypto/x509/v3_utf8.c', ++ 'openssl/crypto/x509/v3_utl.c', ++ 'openssl/crypto/x509/v3err.c', ++ 'openssl/crypto/x509/x509_att.c', ++ 'openssl/crypto/x509/x509_cmp.c', ++ 'openssl/crypto/x509/x509_d2.c', ++ 'openssl/crypto/x509/x509_def.c', ++ 'openssl/crypto/x509/x509_err.c', ++ 'openssl/crypto/x509/x509_ext.c', ++ 'openssl/crypto/x509/x509_lu.c', ++ 'openssl/crypto/x509/x509_meth.c', ++ 'openssl/crypto/x509/x509_obj.c', ++ 'openssl/crypto/x509/x509_r2x.c', ++ 'openssl/crypto/x509/x509_req.c', ++ 'openssl/crypto/x509/x509_set.c', ++ 'openssl/crypto/x509/x509_trust.c', ++ 'openssl/crypto/x509/x509_txt.c', ++ 'openssl/crypto/x509/x509_v3.c', ++ 'openssl/crypto/x509/x509_vfy.c', ++ 'openssl/crypto/x509/x509_vpm.c', ++ 'openssl/crypto/x509/x509cset.c', ++ 'openssl/crypto/x509/x509name.c', ++ 'openssl/crypto/x509/x509rset.c', ++ 'openssl/crypto/x509/x509spki.c', ++ 'openssl/crypto/x509/x509type.c', ++ 'openssl/crypto/x509/x_all.c', ++ 'openssl/crypto/x509/x_attrib.c', ++ 'openssl/crypto/x509/x_crl.c', ++ 'openssl/crypto/x509/x_exten.c', ++ 'openssl/crypto/x509/x_name.c', ++ 'openssl/crypto/x509/x_pubkey.c', ++ 'openssl/crypto/x509/x_req.c', ++ 'openssl/crypto/x509/x_x509.c', ++ 'openssl/crypto/x509/x_x509a.c', ++ 'openssl/engines/e_capi.c', ++ 'openssl/engines/e_padlock.c', ++ 'openssl/providers/baseprov.c', ++ 'openssl/providers/defltprov.c', ++ 'openssl/providers/nullprov.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/common/der/der_rsa_sig.c', ++ 'openssl/providers/common/der/der_sm2_key.c', ++ 'openssl/providers/common/der/der_sm2_sig.c', ++ 'openssl/providers/common/bio_prov.c', ++ 'openssl/providers/common/capabilities.c', ++ 'openssl/providers/common/digest_to_nid.c', ++ 'openssl/providers/common/provider_seeding.c', ++ 'openssl/providers/common/provider_util.c', ++ 'openssl/providers/common/securitycheck.c', ++ 'openssl/providers/common/securitycheck_default.c', ++ 'openssl/providers/implementations/asymciphers/rsa_enc.c', ++ 'openssl/providers/implementations/asymciphers/sm2_enc.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha1_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_cbc_hmac_sha256_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_ocb_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_siv_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_wrp.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_fips.c', ++ 'openssl/providers/implementations/ciphers/cipher_aes_xts_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_aria_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia.c', ++ 'openssl/providers/implementations/ciphers/cipher_camellia_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305.c', ++ 'openssl/providers/implementations/ciphers/cipher_chacha20_poly1305_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cts.c', ++ 'openssl/providers/implementations/ciphers/cipher_null.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4.c', ++ 'openssl/providers/implementations/ciphers/cipher_sm4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_default_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_wrap_hw.c', ++ 'openssl/providers/implementations/digests/blake2_prov.c', ++ 'openssl/providers/implementations/digests/blake2b_prov.c', ++ 'openssl/providers/implementations/digests/blake2s_prov.c', ++ 'openssl/providers/implementations/digests/md5_prov.c', ++ 'openssl/providers/implementations/digests/md5_sha1_prov.c', ++ 'openssl/providers/implementations/digests/null_prov.c', ++ 'openssl/providers/implementations/digests/sha2_prov.c', ++ 'openssl/providers/implementations/digests/sha3_prov.c', ++ 'openssl/providers/implementations/digests/sm3_prov.c', ++ 'openssl/providers/implementations/encode_decode/decode_der2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_epki2pki.c', ++ 'openssl/providers/implementations/encode_decode/decode_msblob2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_pem2der.c', ++ 'openssl/providers/implementations/encode_decode/decode_pvk2key.c', ++ 'openssl/providers/implementations/encode_decode/decode_spki2typespki.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2any.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2blob.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2ms.c', ++ 'openssl/providers/implementations/encode_decode/encode_key2text.c', ++ 'openssl/providers/implementations/encode_decode/endecoder_common.c', ++ 'openssl/providers/implementations/exchange/dh_exch.c', ++ 'openssl/providers/implementations/exchange/ecdh_exch.c', ++ 'openssl/providers/implementations/exchange/ecx_exch.c', ++ 'openssl/providers/implementations/exchange/kdf_exch.c', ++ 'openssl/providers/implementations/kdfs/hkdf.c', ++ 'openssl/providers/implementations/kdfs/kbkdf.c', ++ 'openssl/providers/implementations/kdfs/krb5kdf.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2.c', ++ 'openssl/providers/implementations/kdfs/pbkdf2_fips.c', ++ 'openssl/providers/implementations/kdfs/pkcs12kdf.c', ++ 'openssl/providers/implementations/kdfs/scrypt.c', ++ 'openssl/providers/implementations/kdfs/sshkdf.c', ++ 'openssl/providers/implementations/kdfs/sskdf.c', ++ 'openssl/providers/implementations/kdfs/tls1_prf.c', ++ 'openssl/providers/implementations/kdfs/x942kdf.c', ++ 'openssl/providers/implementations/kem/rsa_kem.c', ++ 'openssl/providers/implementations/keymgmt/dh_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/dsa_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ec_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/ecx_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/kdf_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/mac_legacy_kmgmt.c', ++ 'openssl/providers/implementations/keymgmt/rsa_kmgmt.c', ++ 'openssl/providers/implementations/macs/blake2b_mac.c', ++ 'openssl/providers/implementations/macs/blake2s_mac.c', ++ 'openssl/providers/implementations/macs/cmac_prov.c', ++ 'openssl/providers/implementations/macs/gmac_prov.c', ++ 'openssl/providers/implementations/macs/hmac_prov.c', ++ 'openssl/providers/implementations/macs/kmac_prov.c', ++ 'openssl/providers/implementations/macs/poly1305_prov.c', ++ 'openssl/providers/implementations/macs/siphash_prov.c', ++ 'openssl/providers/implementations/rands/crngt.c', ++ 'openssl/providers/implementations/rands/drbg.c', ++ 'openssl/providers/implementations/rands/drbg_ctr.c', ++ 'openssl/providers/implementations/rands/drbg_hash.c', ++ 'openssl/providers/implementations/rands/drbg_hmac.c', ++ 'openssl/providers/implementations/rands/seed_src.c', ++ 'openssl/providers/implementations/rands/test_rng.c', ++ 'openssl/providers/implementations/rands/seeding/rand_cpu_x86.c', ++ 'openssl/providers/implementations/rands/seeding/rand_tsc.c', ++ 'openssl/providers/implementations/rands/seeding/rand_unix.c', ++ 'openssl/providers/implementations/rands/seeding/rand_win.c', ++ 'openssl/providers/implementations/signature/dsa_sig.c', ++ 'openssl/providers/implementations/signature/ecdsa_sig.c', ++ 'openssl/providers/implementations/signature/eddsa_sig.c', ++ 'openssl/providers/implementations/signature/mac_legacy_sig.c', ++ 'openssl/providers/implementations/signature/rsa_sig.c', ++ 'openssl/providers/implementations/signature/sm2_sig.c', ++ 'openssl/providers/implementations/storemgmt/file_store.c', ++ 'openssl/providers/implementations/storemgmt/file_store_any2obj.c', ++ 'openssl/ssl/s3_cbc.c', ++ 'openssl/providers/common/der/der_dsa_key.c', ++ 'openssl/providers/common/der/der_dsa_sig.c', ++ 'openssl/providers/common/der/der_ec_key.c', ++ 'openssl/providers/common/der/der_ec_sig.c', ++ 'openssl/providers/common/der/der_ecx_key.c', ++ 'openssl/providers/common/der/der_rsa_key.c', ++ 'openssl/providers/common/provider_ctx.c', ++ 'openssl/providers/common/provider_err.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_block.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_ccm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_gcm_hw.c', ++ 'openssl/providers/implementations/ciphers/ciphercommon_hw.c', ++ 'openssl/providers/implementations/digests/digestcommon.c', ++ 'openssl/ssl/record/tls_pad.c', ++ 'openssl/crypto/bn/bn_asm.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/md5/md5_dgst.c', ++ 'openssl/crypto/md5/md5_one.c', ++ 'openssl/crypto/md5/md5_sha1.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish.c', ++ 'openssl/providers/implementations/ciphers/cipher_blowfish_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5.c', ++ 'openssl/providers/implementations/ciphers/cipher_cast5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_des.c', ++ 'openssl/providers/implementations/ciphers/cipher_des_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx.c', ++ 'openssl/providers/implementations/ciphers/cipher_desx_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea.c', ++ 'openssl/providers/implementations/ciphers/cipher_idea_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc2_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hmac_md5_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_rc4_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed.c', ++ 'openssl/providers/implementations/ciphers/cipher_seed_hw.c', ++ 'openssl/providers/implementations/ciphers/cipher_tdes_common.c', ++ 'openssl/providers/implementations/digests/md4_prov.c', ++ 'openssl/providers/implementations/digests/mdc2_prov.c', ++ 'openssl/providers/implementations/digests/ripemd_prov.c', ++ 'openssl/providers/implementations/digests/wp_prov.c', ++ 'openssl/providers/implementations/kdfs/pbkdf1.c', ++ 'openssl/providers/prov_running.c', ++ 'openssl/providers/legacyprov.c', ++ ], ++ 'openssl_sources_linux-sw_64': [ ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_sm2_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_digests_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_dsa_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_ec_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_ecx_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_rsa_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/common/der/der_wrap_gen.c', ++ './config/archs/linux-sw_64/no-asm/providers/legacy.ld', ++ './config/archs/linux-sw_64/no-asm/providers/fips.ld', ++ ], ++ 'openssl_defines_linux-sw_64': [ ++ 'NDEBUG', ++ 'OPENSSL_USE_NODELETE', ++ 'OPENSSL_BUILDING_OPENSSL', ++ 'OPENSSL_PIC', ++ ], ++ 'openssl_cflags_linux-sw_64': [ ++ '-Wall -O3', ++ '-pthread', ++ '-Wall -O3', ++ ], ++ 'openssl_ex_libs_linux-sw_64': [ ++ '-ldl -pthread', ++ ], ++ }, ++ 'include_dirs': [ ++ '.', ++ './include', ++ './crypto', ++ './crypto/include/internal', ++ './providers/common/include', ++ ], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ 'cflags' : ['<@(openssl_cflags_linux-sw_64)'], ++ 'libraries': ['<@(openssl_ex_libs_linux-sw_64)'], ++ 'sources': ['<@(openssl_sources)', '<@(openssl_sources_linux-sw_64)'], ++ 'direct_dependent_settings': { ++ 'include_dirs': ['./include', '.'], ++ 'defines': ['<@(openssl_defines_linux-sw_64)'], ++ }, ++} +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_digests_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_digests_gen.c +new file mode 100644 +index 00000000..e4e14e82 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_digests_gen.c +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_digests_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_digests.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs] = { ++ DER_OID_V_sigAlgs ++}; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1] = { ++ DER_OID_V_id_sha1 ++}; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2] = { ++ DER_OID_V_id_md2 ++}; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5] = { ++ DER_OID_V_id_md5 ++}; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256] = { ++ DER_OID_V_id_sha256 ++}; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384] = { ++ DER_OID_V_id_sha384 ++}; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512] = { ++ DER_OID_V_id_sha512 ++}; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224] = { ++ DER_OID_V_id_sha224 ++}; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224] = { ++ DER_OID_V_id_sha512_224 ++}; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256] = { ++ DER_OID_V_id_sha512_256 ++}; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224] = { ++ DER_OID_V_id_sha3_224 ++}; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256] = { ++ DER_OID_V_id_sha3_256 ++}; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384] = { ++ DER_OID_V_id_sha3_384 ++}; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512] = { ++ DER_OID_V_id_sha3_512 ++}; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128] = { ++ DER_OID_V_id_shake128 ++}; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256] = { ++ DER_OID_V_id_shake256 ++}; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len] = { ++ DER_OID_V_id_shake128_len ++}; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len] = { ++ DER_OID_V_id_shake256_len ++}; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128] = { ++ DER_OID_V_id_KMACWithSHAKE128 ++}; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256] = { ++ DER_OID_V_id_KMACWithSHAKE256 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_dsa_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_dsa_gen.c +new file mode 100644 +index 00000000..e5cfe91e +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_dsa_gen.c +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_dsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 ++ */ ++ ++/* ++ * DSA low level APIs are deprecated for public use, but still ok for ++ * internal use. ++ */ ++#include "internal/deprecated.h" ++ ++#include "prov/der_dsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa] = { ++ DER_OID_V_id_dsa ++}; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1] = { ++ DER_OID_V_id_dsa_with_sha1 ++}; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224] = { ++ DER_OID_V_id_dsa_with_sha224 ++}; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256] = { ++ DER_OID_V_id_dsa_with_sha256 ++}; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384] = { ++ DER_OID_V_id_dsa_with_sha384 ++}; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512] = { ++ DER_OID_V_id_dsa_with_sha512 ++}; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224] = { ++ DER_OID_V_id_dsa_with_sha3_224 ++}; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256] = { ++ DER_OID_V_id_dsa_with_sha3_256 ++}; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384] = { ++ DER_OID_V_id_dsa_with_sha3_384 ++}; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512] = { ++ DER_OID_V_id_dsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ec_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ec_gen.c +new file mode 100644 +index 00000000..e1ed54ba +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ec_gen.c +@@ -0,0 +1,279 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ec_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ec.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1] = { ++ DER_OID_V_ecdsa_with_SHA1 ++}; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey] = { ++ DER_OID_V_id_ecPublicKey ++}; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1] = { ++ DER_OID_V_c2pnb163v1 ++}; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2] = { ++ DER_OID_V_c2pnb163v2 ++}; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3] = { ++ DER_OID_V_c2pnb163v3 ++}; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1] = { ++ DER_OID_V_c2pnb176w1 ++}; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1] = { ++ DER_OID_V_c2tnb191v1 ++}; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2] = { ++ DER_OID_V_c2tnb191v2 ++}; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3] = { ++ DER_OID_V_c2tnb191v3 ++}; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4] = { ++ DER_OID_V_c2onb191v4 ++}; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5] = { ++ DER_OID_V_c2onb191v5 ++}; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1] = { ++ DER_OID_V_c2pnb208w1 ++}; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1] = { ++ DER_OID_V_c2tnb239v1 ++}; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2] = { ++ DER_OID_V_c2tnb239v2 ++}; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3] = { ++ DER_OID_V_c2tnb239v3 ++}; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4] = { ++ DER_OID_V_c2onb239v4 ++}; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5] = { ++ DER_OID_V_c2onb239v5 ++}; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1] = { ++ DER_OID_V_c2pnb272w1 ++}; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1] = { ++ DER_OID_V_c2pnb304w1 ++}; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1] = { ++ DER_OID_V_c2tnb359v1 ++}; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1] = { ++ DER_OID_V_c2pnb368w1 ++}; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1] = { ++ DER_OID_V_c2tnb431r1 ++}; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1] = { ++ DER_OID_V_prime192v1 ++}; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2] = { ++ DER_OID_V_prime192v2 ++}; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3] = { ++ DER_OID_V_prime192v3 ++}; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1] = { ++ DER_OID_V_prime239v1 ++}; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2] = { ++ DER_OID_V_prime239v2 ++}; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3] = { ++ DER_OID_V_prime239v3 ++}; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1] = { ++ DER_OID_V_prime256v1 ++}; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224] = { ++ DER_OID_V_ecdsa_with_SHA224 ++}; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256] = { ++ DER_OID_V_ecdsa_with_SHA256 ++}; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384] = { ++ DER_OID_V_ecdsa_with_SHA384 ++}; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512] = { ++ DER_OID_V_ecdsa_with_SHA512 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224] = { ++ DER_OID_V_id_ecdsa_with_sha3_224 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256] = { ++ DER_OID_V_id_ecdsa_with_sha3_256 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384] = { ++ DER_OID_V_id_ecdsa_with_sha3_384 ++}; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512] = { ++ DER_OID_V_id_ecdsa_with_sha3_512 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ecx_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ecx_gen.c +new file mode 100644 +index 00000000..ba7bf14b +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_ecx_gen.c +@@ -0,0 +1,44 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_ecx_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519] = { ++ DER_OID_V_id_X25519 ++}; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448] = { ++ DER_OID_V_id_X448 ++}; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519] = { ++ DER_OID_V_id_Ed25519 ++}; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448] = { ++ DER_OID_V_id_Ed448 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_rsa_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_rsa_gen.c +new file mode 100644 +index 00000000..a3431798 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_rsa_gen.c +@@ -0,0 +1,174 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_rsa_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_rsa.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs] = { ++ DER_OID_V_hashAlgs ++}; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption] = { ++ DER_OID_V_rsaEncryption ++}; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP] = { ++ DER_OID_V_id_RSAES_OAEP ++}; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified] = { ++ DER_OID_V_id_pSpecified ++}; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS] = { ++ DER_OID_V_id_RSASSA_PSS ++}; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption] = { ++ DER_OID_V_md2WithRSAEncryption ++}; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption] = { ++ DER_OID_V_md5WithRSAEncryption ++}; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption] = { ++ DER_OID_V_sha1WithRSAEncryption ++}; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption] = { ++ DER_OID_V_sha224WithRSAEncryption ++}; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption] = { ++ DER_OID_V_sha256WithRSAEncryption ++}; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption] = { ++ DER_OID_V_sha384WithRSAEncryption ++}; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption] = { ++ DER_OID_V_sha512WithRSAEncryption ++}; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption] = { ++ DER_OID_V_sha512_224WithRSAEncryption ++}; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption] = { ++ DER_OID_V_sha512_256WithRSAEncryption ++}; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1] = { ++ DER_OID_V_id_mgf1 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 ++}; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512] = { ++ DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 ++}; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption] = { ++ DER_OID_V_md4WithRSAEncryption ++}; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption] = { ++ DER_OID_V_ripemd160WithRSAEncryption ++}; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature] = { ++ DER_OID_V_mdc2WithRSASignature ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_sm2_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_sm2_gen.c +new file mode 100644 +index 00000000..6424ea16 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_sm2_gen.c +@@ -0,0 +1,30 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_sm2_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_sm2.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3] = { ++ DER_OID_V_sm2_with_SM3 ++}; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2] = { ++ DER_OID_V_curveSM2 ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_wrap_gen.c b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_wrap_gen.c +new file mode 100644 +index 00000000..6cf93972 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/der/der_wrap_gen.c +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/der/der_wrap_gen.c.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "prov/der_wrap.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap] = { ++ DER_OID_V_id_alg_CMS3DESwrap ++}; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap] = { ++ DER_OID_V_id_aes128_wrap ++}; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap] = { ++ DER_OID_V_id_aes192_wrap ++}; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap] = { ++ DER_OID_V_id_aes256_wrap ++}; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_digests.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_digests.h +new file mode 100644 +index 00000000..b184807c +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_digests.h +@@ -0,0 +1,160 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_digests.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sigAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 3 } ++ */ ++#define DER_OID_V_sigAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03 ++#define DER_OID_SZ_sigAlgs 10 ++extern const unsigned char ossl_der_oid_sigAlgs[DER_OID_SZ_sigAlgs]; ++ ++/* ++ * id-sha1 OBJECT IDENTIFIER ::= { iso(1) ++ * identified-organization(3) oiw(14) ++ * secsig(3) algorithms(2) 26 } ++ */ ++#define DER_OID_V_id_sha1 DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x1A ++#define DER_OID_SZ_id_sha1 7 ++extern const unsigned char ossl_der_oid_id_sha1[DER_OID_SZ_id_sha1]; ++ ++/* ++ * id-md2 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 } ++ */ ++#define DER_OID_V_id_md2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x02 ++#define DER_OID_SZ_id_md2 10 ++extern const unsigned char ossl_der_oid_id_md2[DER_OID_SZ_id_md2]; ++ ++/* ++ * id-md5 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 } ++ */ ++#define DER_OID_V_id_md5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05 ++#define DER_OID_SZ_id_md5 10 ++extern const unsigned char ossl_der_oid_id_md5[DER_OID_SZ_id_md5]; ++ ++/* ++ * id-sha256 OBJECT IDENTIFIER ::= { hashAlgs 1 } ++ */ ++#define DER_OID_V_id_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01 ++#define DER_OID_SZ_id_sha256 11 ++extern const unsigned char ossl_der_oid_id_sha256[DER_OID_SZ_id_sha256]; ++ ++/* ++ * id-sha384 OBJECT IDENTIFIER ::= { hashAlgs 2 } ++ */ ++#define DER_OID_V_id_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02 ++#define DER_OID_SZ_id_sha384 11 ++extern const unsigned char ossl_der_oid_id_sha384[DER_OID_SZ_id_sha384]; ++ ++/* ++ * id-sha512 OBJECT IDENTIFIER ::= { hashAlgs 3 } ++ */ ++#define DER_OID_V_id_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03 ++#define DER_OID_SZ_id_sha512 11 ++extern const unsigned char ossl_der_oid_id_sha512[DER_OID_SZ_id_sha512]; ++ ++/* ++ * id-sha224 OBJECT IDENTIFIER ::= { hashAlgs 4 } ++ */ ++#define DER_OID_V_id_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04 ++#define DER_OID_SZ_id_sha224 11 ++extern const unsigned char ossl_der_oid_id_sha224[DER_OID_SZ_id_sha224]; ++ ++/* ++ * id-sha512-224 OBJECT IDENTIFIER ::= { hashAlgs 5 } ++ */ ++#define DER_OID_V_id_sha512_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x05 ++#define DER_OID_SZ_id_sha512_224 11 ++extern const unsigned char ossl_der_oid_id_sha512_224[DER_OID_SZ_id_sha512_224]; ++ ++/* ++ * id-sha512-256 OBJECT IDENTIFIER ::= { hashAlgs 6 } ++ */ ++#define DER_OID_V_id_sha512_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x06 ++#define DER_OID_SZ_id_sha512_256 11 ++extern const unsigned char ossl_der_oid_id_sha512_256[DER_OID_SZ_id_sha512_256]; ++ ++/* ++ * id-sha3-224 OBJECT IDENTIFIER ::= { hashAlgs 7 } ++ */ ++#define DER_OID_V_id_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x07 ++#define DER_OID_SZ_id_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_sha3_224[DER_OID_SZ_id_sha3_224]; ++ ++/* ++ * id-sha3-256 OBJECT IDENTIFIER ::= { hashAlgs 8 } ++ */ ++#define DER_OID_V_id_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x08 ++#define DER_OID_SZ_id_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_sha3_256[DER_OID_SZ_id_sha3_256]; ++ ++/* ++ * id-sha3-384 OBJECT IDENTIFIER ::= { hashAlgs 9 } ++ */ ++#define DER_OID_V_id_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x09 ++#define DER_OID_SZ_id_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_sha3_384[DER_OID_SZ_id_sha3_384]; ++ ++/* ++ * id-sha3-512 OBJECT IDENTIFIER ::= { hashAlgs 10 } ++ */ ++#define DER_OID_V_id_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0A ++#define DER_OID_SZ_id_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_sha3_512[DER_OID_SZ_id_sha3_512]; ++ ++/* ++ * id-shake128 OBJECT IDENTIFIER ::= { hashAlgs 11 } ++ */ ++#define DER_OID_V_id_shake128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0B ++#define DER_OID_SZ_id_shake128 11 ++extern const unsigned char ossl_der_oid_id_shake128[DER_OID_SZ_id_shake128]; ++ ++/* ++ * id-shake256 OBJECT IDENTIFIER ::= { hashAlgs 12 } ++ */ ++#define DER_OID_V_id_shake256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x0C ++#define DER_OID_SZ_id_shake256 11 ++extern const unsigned char ossl_der_oid_id_shake256[DER_OID_SZ_id_shake256]; ++ ++/* ++ * id-shake128-len OBJECT IDENTIFIER ::= { hashAlgs 17 } ++ */ ++#define DER_OID_V_id_shake128_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x11 ++#define DER_OID_SZ_id_shake128_len 11 ++extern const unsigned char ossl_der_oid_id_shake128_len[DER_OID_SZ_id_shake128_len]; ++ ++/* ++ * id-shake256-len OBJECT IDENTIFIER ::= { hashAlgs 18 } ++ */ ++#define DER_OID_V_id_shake256_len DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x12 ++#define DER_OID_SZ_id_shake256_len 11 ++extern const unsigned char ossl_der_oid_id_shake256_len[DER_OID_SZ_id_shake256_len]; ++ ++/* ++ * id-KMACWithSHAKE128 OBJECT IDENTIFIER ::={hashAlgs 19} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE128 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x13 ++#define DER_OID_SZ_id_KMACWithSHAKE128 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE128[DER_OID_SZ_id_KMACWithSHAKE128]; ++ ++/* ++ * id-KMACWithSHAKE256 OBJECT IDENTIFIER ::={ hashAlgs 20} ++ */ ++#define DER_OID_V_id_KMACWithSHAKE256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x14 ++#define DER_OID_SZ_id_KMACWithSHAKE256 11 ++extern const unsigned char ossl_der_oid_id_KMACWithSHAKE256[DER_OID_SZ_id_KMACWithSHAKE256]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_dsa.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_dsa.h +new file mode 100644 +index 00000000..b12a5628 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_dsa.h +@@ -0,0 +1,94 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_dsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-dsa OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 1 } ++ */ ++#define DER_OID_V_id_dsa DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x01 ++#define DER_OID_SZ_id_dsa 9 ++extern const unsigned char ossl_der_oid_id_dsa[DER_OID_SZ_id_dsa]; ++ ++/* ++ * id-dsa-with-sha1 OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) x9-57 (10040) x9algorithm(4) 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x38, 0x04, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha1 9 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha1[DER_OID_SZ_id_dsa_with_sha1]; ++ ++/* ++ * id-dsa-with-sha224 OBJECT IDENTIFIER ::= { sigAlgs 1 } ++ */ ++#define DER_OID_V_id_dsa_with_sha224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_id_dsa_with_sha224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha224[DER_OID_SZ_id_dsa_with_sha224]; ++ ++/* ++ * id-dsa-with-sha256 OBJECT IDENTIFIER ::= { sigAlgs 2 } ++ */ ++#define DER_OID_V_id_dsa_with_sha256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_id_dsa_with_sha256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha256[DER_OID_SZ_id_dsa_with_sha256]; ++ ++/* ++ * id-dsa-with-sha384 OBJECT IDENTIFIER ::= { sigAlgs 3 } ++ */ ++#define DER_OID_V_id_dsa_with_sha384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_id_dsa_with_sha384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha384[DER_OID_SZ_id_dsa_with_sha384]; ++ ++/* ++ * id-dsa-with-sha512 OBJECT IDENTIFIER ::= { sigAlgs 4 } ++ */ ++#define DER_OID_V_id_dsa_with_sha512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_id_dsa_with_sha512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha512[DER_OID_SZ_id_dsa_with_sha512]; ++ ++/* ++ * id-dsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 5 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x05 ++#define DER_OID_SZ_id_dsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_224[DER_OID_SZ_id_dsa_with_sha3_224]; ++ ++/* ++ * id-dsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 6 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x06 ++#define DER_OID_SZ_id_dsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_256[DER_OID_SZ_id_dsa_with_sha3_256]; ++ ++/* ++ * id-dsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 7 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x07 ++#define DER_OID_SZ_id_dsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_384[DER_OID_SZ_id_dsa_with_sha3_384]; ++ ++/* ++ * id-dsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 8 } ++ */ ++#define DER_OID_V_id_dsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x08 ++#define DER_OID_SZ_id_dsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_dsa_with_sha3_512[DER_OID_SZ_id_dsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_DSA(WPACKET *pkt, int tag, DSA *dsa); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_DSA_with_MD(WPACKET *pkt, int tag, ++ DSA *dsa, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ec.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ec.h +new file mode 100644 +index 00000000..dd697771 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ec.h +@@ -0,0 +1,286 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ec.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { id-ecSigType 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA1 DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA1 9 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA1[DER_OID_SZ_ecdsa_with_SHA1]; ++ ++/* ++ * id-ecPublicKey OBJECT IDENTIFIER ::= { id-publicKeyType 1 } ++ */ ++#define DER_OID_V_id_ecPublicKey DER_P_OBJECT, 7, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01 ++#define DER_OID_SZ_id_ecPublicKey 9 ++extern const unsigned char ossl_der_oid_id_ecPublicKey[DER_OID_SZ_id_ecPublicKey]; ++ ++/* ++ * c2pnb163v1 OBJECT IDENTIFIER ::= { c-TwoCurve 1 } ++ */ ++#define DER_OID_V_c2pnb163v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x01 ++#define DER_OID_SZ_c2pnb163v1 10 ++extern const unsigned char ossl_der_oid_c2pnb163v1[DER_OID_SZ_c2pnb163v1]; ++ ++/* ++ * c2pnb163v2 OBJECT IDENTIFIER ::= { c-TwoCurve 2 } ++ */ ++#define DER_OID_V_c2pnb163v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x02 ++#define DER_OID_SZ_c2pnb163v2 10 ++extern const unsigned char ossl_der_oid_c2pnb163v2[DER_OID_SZ_c2pnb163v2]; ++ ++/* ++ * c2pnb163v3 OBJECT IDENTIFIER ::= { c-TwoCurve 3 } ++ */ ++#define DER_OID_V_c2pnb163v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x03 ++#define DER_OID_SZ_c2pnb163v3 10 ++extern const unsigned char ossl_der_oid_c2pnb163v3[DER_OID_SZ_c2pnb163v3]; ++ ++/* ++ * c2pnb176w1 OBJECT IDENTIFIER ::= { c-TwoCurve 4 } ++ */ ++#define DER_OID_V_c2pnb176w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x04 ++#define DER_OID_SZ_c2pnb176w1 10 ++extern const unsigned char ossl_der_oid_c2pnb176w1[DER_OID_SZ_c2pnb176w1]; ++ ++/* ++ * c2tnb191v1 OBJECT IDENTIFIER ::= { c-TwoCurve 5 } ++ */ ++#define DER_OID_V_c2tnb191v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x05 ++#define DER_OID_SZ_c2tnb191v1 10 ++extern const unsigned char ossl_der_oid_c2tnb191v1[DER_OID_SZ_c2tnb191v1]; ++ ++/* ++ * c2tnb191v2 OBJECT IDENTIFIER ::= { c-TwoCurve 6 } ++ */ ++#define DER_OID_V_c2tnb191v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x06 ++#define DER_OID_SZ_c2tnb191v2 10 ++extern const unsigned char ossl_der_oid_c2tnb191v2[DER_OID_SZ_c2tnb191v2]; ++ ++/* ++ * c2tnb191v3 OBJECT IDENTIFIER ::= { c-TwoCurve 7 } ++ */ ++#define DER_OID_V_c2tnb191v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x07 ++#define DER_OID_SZ_c2tnb191v3 10 ++extern const unsigned char ossl_der_oid_c2tnb191v3[DER_OID_SZ_c2tnb191v3]; ++ ++/* ++ * c2onb191v4 OBJECT IDENTIFIER ::= { c-TwoCurve 8 } ++ */ ++#define DER_OID_V_c2onb191v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x08 ++#define DER_OID_SZ_c2onb191v4 10 ++extern const unsigned char ossl_der_oid_c2onb191v4[DER_OID_SZ_c2onb191v4]; ++ ++/* ++ * c2onb191v5 OBJECT IDENTIFIER ::= { c-TwoCurve 9 } ++ */ ++#define DER_OID_V_c2onb191v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x09 ++#define DER_OID_SZ_c2onb191v5 10 ++extern const unsigned char ossl_der_oid_c2onb191v5[DER_OID_SZ_c2onb191v5]; ++ ++/* ++ * c2pnb208w1 OBJECT IDENTIFIER ::= { c-TwoCurve 10 } ++ */ ++#define DER_OID_V_c2pnb208w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0A ++#define DER_OID_SZ_c2pnb208w1 10 ++extern const unsigned char ossl_der_oid_c2pnb208w1[DER_OID_SZ_c2pnb208w1]; ++ ++/* ++ * c2tnb239v1 OBJECT IDENTIFIER ::= { c-TwoCurve 11 } ++ */ ++#define DER_OID_V_c2tnb239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0B ++#define DER_OID_SZ_c2tnb239v1 10 ++extern const unsigned char ossl_der_oid_c2tnb239v1[DER_OID_SZ_c2tnb239v1]; ++ ++/* ++ * c2tnb239v2 OBJECT IDENTIFIER ::= { c-TwoCurve 12 } ++ */ ++#define DER_OID_V_c2tnb239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0C ++#define DER_OID_SZ_c2tnb239v2 10 ++extern const unsigned char ossl_der_oid_c2tnb239v2[DER_OID_SZ_c2tnb239v2]; ++ ++/* ++ * c2tnb239v3 OBJECT IDENTIFIER ::= { c-TwoCurve 13 } ++ */ ++#define DER_OID_V_c2tnb239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0D ++#define DER_OID_SZ_c2tnb239v3 10 ++extern const unsigned char ossl_der_oid_c2tnb239v3[DER_OID_SZ_c2tnb239v3]; ++ ++/* ++ * c2onb239v4 OBJECT IDENTIFIER ::= { c-TwoCurve 14 } ++ */ ++#define DER_OID_V_c2onb239v4 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0E ++#define DER_OID_SZ_c2onb239v4 10 ++extern const unsigned char ossl_der_oid_c2onb239v4[DER_OID_SZ_c2onb239v4]; ++ ++/* ++ * c2onb239v5 OBJECT IDENTIFIER ::= { c-TwoCurve 15 } ++ */ ++#define DER_OID_V_c2onb239v5 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x0F ++#define DER_OID_SZ_c2onb239v5 10 ++extern const unsigned char ossl_der_oid_c2onb239v5[DER_OID_SZ_c2onb239v5]; ++ ++/* ++ * c2pnb272w1 OBJECT IDENTIFIER ::= { c-TwoCurve 16 } ++ */ ++#define DER_OID_V_c2pnb272w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x10 ++#define DER_OID_SZ_c2pnb272w1 10 ++extern const unsigned char ossl_der_oid_c2pnb272w1[DER_OID_SZ_c2pnb272w1]; ++ ++/* ++ * c2pnb304w1 OBJECT IDENTIFIER ::= { c-TwoCurve 17 } ++ */ ++#define DER_OID_V_c2pnb304w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x11 ++#define DER_OID_SZ_c2pnb304w1 10 ++extern const unsigned char ossl_der_oid_c2pnb304w1[DER_OID_SZ_c2pnb304w1]; ++ ++/* ++ * c2tnb359v1 OBJECT IDENTIFIER ::= { c-TwoCurve 18 } ++ */ ++#define DER_OID_V_c2tnb359v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x12 ++#define DER_OID_SZ_c2tnb359v1 10 ++extern const unsigned char ossl_der_oid_c2tnb359v1[DER_OID_SZ_c2tnb359v1]; ++ ++/* ++ * c2pnb368w1 OBJECT IDENTIFIER ::= { c-TwoCurve 19 } ++ */ ++#define DER_OID_V_c2pnb368w1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x13 ++#define DER_OID_SZ_c2pnb368w1 10 ++extern const unsigned char ossl_der_oid_c2pnb368w1[DER_OID_SZ_c2pnb368w1]; ++ ++/* ++ * c2tnb431r1 OBJECT IDENTIFIER ::= { c-TwoCurve 20 } ++ */ ++#define DER_OID_V_c2tnb431r1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x00, 0x14 ++#define DER_OID_SZ_c2tnb431r1 10 ++extern const unsigned char ossl_der_oid_c2tnb431r1[DER_OID_SZ_c2tnb431r1]; ++ ++/* ++ * prime192v1 OBJECT IDENTIFIER ::= { primeCurve 1 } ++ */ ++#define DER_OID_V_prime192v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x01 ++#define DER_OID_SZ_prime192v1 10 ++extern const unsigned char ossl_der_oid_prime192v1[DER_OID_SZ_prime192v1]; ++ ++/* ++ * prime192v2 OBJECT IDENTIFIER ::= { primeCurve 2 } ++ */ ++#define DER_OID_V_prime192v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_prime192v2 10 ++extern const unsigned char ossl_der_oid_prime192v2[DER_OID_SZ_prime192v2]; ++ ++/* ++ * prime192v3 OBJECT IDENTIFIER ::= { primeCurve 3 } ++ */ ++#define DER_OID_V_prime192v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x03 ++#define DER_OID_SZ_prime192v3 10 ++extern const unsigned char ossl_der_oid_prime192v3[DER_OID_SZ_prime192v3]; ++ ++/* ++ * prime239v1 OBJECT IDENTIFIER ::= { primeCurve 4 } ++ */ ++#define DER_OID_V_prime239v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x04 ++#define DER_OID_SZ_prime239v1 10 ++extern const unsigned char ossl_der_oid_prime239v1[DER_OID_SZ_prime239v1]; ++ ++/* ++ * prime239v2 OBJECT IDENTIFIER ::= { primeCurve 5 } ++ */ ++#define DER_OID_V_prime239v2 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x05 ++#define DER_OID_SZ_prime239v2 10 ++extern const unsigned char ossl_der_oid_prime239v2[DER_OID_SZ_prime239v2]; ++ ++/* ++ * prime239v3 OBJECT IDENTIFIER ::= { primeCurve 6 } ++ */ ++#define DER_OID_V_prime239v3 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x06 ++#define DER_OID_SZ_prime239v3 10 ++extern const unsigned char ossl_der_oid_prime239v3[DER_OID_SZ_prime239v3]; ++ ++/* ++ * prime256v1 OBJECT IDENTIFIER ::= { primeCurve 7 } ++ */ ++#define DER_OID_V_prime256v1 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07 ++#define DER_OID_SZ_prime256v1 10 ++extern const unsigned char ossl_der_oid_prime256v1[DER_OID_SZ_prime256v1]; ++ ++/* ++ * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 1 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA224 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x01 ++#define DER_OID_SZ_ecdsa_with_SHA224 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA224[DER_OID_SZ_ecdsa_with_SHA224]; ++ ++/* ++ * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 2 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA256 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02 ++#define DER_OID_SZ_ecdsa_with_SHA256 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA256[DER_OID_SZ_ecdsa_with_SHA256]; ++ ++/* ++ * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 3 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA384 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03 ++#define DER_OID_SZ_ecdsa_with_SHA384 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA384[DER_OID_SZ_ecdsa_with_SHA384]; ++ ++/* ++ * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) ++ * us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3) 4 } ++ */ ++#define DER_OID_V_ecdsa_with_SHA512 DER_P_OBJECT, 8, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x04 ++#define DER_OID_SZ_ecdsa_with_SHA512 10 ++extern const unsigned char ossl_der_oid_ecdsa_with_SHA512[DER_OID_SZ_ecdsa_with_SHA512]; ++ ++/* ++ * id-ecdsa-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 9 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x09 ++#define DER_OID_SZ_id_ecdsa_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_224[DER_OID_SZ_id_ecdsa_with_sha3_224]; ++ ++/* ++ * id-ecdsa-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 10 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0A ++#define DER_OID_SZ_id_ecdsa_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_256[DER_OID_SZ_id_ecdsa_with_sha3_256]; ++ ++/* ++ * id-ecdsa-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 11 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0B ++#define DER_OID_SZ_id_ecdsa_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_384[DER_OID_SZ_id_ecdsa_with_sha3_384]; ++ ++/* ++ * id-ecdsa-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 12 } ++ */ ++#define DER_OID_V_id_ecdsa_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0C ++#define DER_OID_SZ_id_ecdsa_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_ecdsa_with_sha3_512[DER_OID_SZ_id_ecdsa_with_sha3_512]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_EC(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_ECDSA_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ecx.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ecx.h +new file mode 100644 +index 00000000..fc857380 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_ecx.h +@@ -0,0 +1,50 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_ecx.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++#include "crypto/ecx.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-X25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 110 } ++ */ ++#define DER_OID_V_id_X25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6E ++#define DER_OID_SZ_id_X25519 5 ++extern const unsigned char ossl_der_oid_id_X25519[DER_OID_SZ_id_X25519]; ++ ++/* ++ * id-X448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 111 } ++ */ ++#define DER_OID_V_id_X448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x6F ++#define DER_OID_SZ_id_X448 5 ++extern const unsigned char ossl_der_oid_id_X448[DER_OID_SZ_id_X448]; ++ ++/* ++ * id-Ed25519 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 112 } ++ */ ++#define DER_OID_V_id_Ed25519 DER_P_OBJECT, 3, 0x2B, 0x65, 0x70 ++#define DER_OID_SZ_id_Ed25519 5 ++extern const unsigned char ossl_der_oid_id_Ed25519[DER_OID_SZ_id_Ed25519]; ++ ++/* ++ * id-Ed448 OBJECT IDENTIFIER ::= { id-edwards-curve-algs 113 } ++ */ ++#define DER_OID_V_id_Ed448 DER_P_OBJECT, 3, 0x2B, 0x65, 0x71 ++#define DER_OID_SZ_id_Ed448 5 ++extern const unsigned char ossl_der_oid_id_Ed448[DER_OID_SZ_id_Ed448]; ++ ++ ++int ossl_DER_w_algorithmIdentifier_ED25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_ED448(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X25519(WPACKET *pkt, int cont, ECX_KEY *ec); ++int ossl_DER_w_algorithmIdentifier_X448(WPACKET *pkt, int cont, ECX_KEY *ec); +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_rsa.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_rsa.h +new file mode 100644 +index 00000000..5ec3c515 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_rsa.h +@@ -0,0 +1,187 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_rsa.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/rsa.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * hashAlgs OBJECT IDENTIFIER ::= { nistAlgorithms 2 } ++ */ ++#define DER_OID_V_hashAlgs DER_P_OBJECT, 8, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02 ++#define DER_OID_SZ_hashAlgs 10 ++extern const unsigned char ossl_der_oid_hashAlgs[DER_OID_SZ_hashAlgs]; ++ ++/* ++ * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } ++ */ ++#define DER_OID_V_rsaEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01 ++#define DER_OID_SZ_rsaEncryption 11 ++extern const unsigned char ossl_der_oid_rsaEncryption[DER_OID_SZ_rsaEncryption]; ++ ++/* ++ * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } ++ */ ++#define DER_OID_V_id_RSAES_OAEP DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x07 ++#define DER_OID_SZ_id_RSAES_OAEP 11 ++extern const unsigned char ossl_der_oid_id_RSAES_OAEP[DER_OID_SZ_id_RSAES_OAEP]; ++ ++/* ++ * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } ++ */ ++#define DER_OID_V_id_pSpecified DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x09 ++#define DER_OID_SZ_id_pSpecified 11 ++extern const unsigned char ossl_der_oid_id_pSpecified[DER_OID_SZ_id_pSpecified]; ++ ++/* ++ * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } ++ */ ++#define DER_OID_V_id_RSASSA_PSS DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0A ++#define DER_OID_SZ_id_RSASSA_PSS 11 ++extern const unsigned char ossl_der_oid_id_RSASSA_PSS[DER_OID_SZ_id_RSASSA_PSS]; ++ ++/* ++ * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } ++ */ ++#define DER_OID_V_md2WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x02 ++#define DER_OID_SZ_md2WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md2WithRSAEncryption[DER_OID_SZ_md2WithRSAEncryption]; ++ ++/* ++ * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } ++ */ ++#define DER_OID_V_md5WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04 ++#define DER_OID_SZ_md5WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md5WithRSAEncryption[DER_OID_SZ_md5WithRSAEncryption]; ++ ++/* ++ * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } ++ */ ++#define DER_OID_V_sha1WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05 ++#define DER_OID_SZ_sha1WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha1WithRSAEncryption[DER_OID_SZ_sha1WithRSAEncryption]; ++ ++/* ++ * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } ++ */ ++#define DER_OID_V_sha224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0E ++#define DER_OID_SZ_sha224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha224WithRSAEncryption[DER_OID_SZ_sha224WithRSAEncryption]; ++ ++/* ++ * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } ++ */ ++#define DER_OID_V_sha256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B ++#define DER_OID_SZ_sha256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha256WithRSAEncryption[DER_OID_SZ_sha256WithRSAEncryption]; ++ ++/* ++ * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } ++ */ ++#define DER_OID_V_sha384WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C ++#define DER_OID_SZ_sha384WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha384WithRSAEncryption[DER_OID_SZ_sha384WithRSAEncryption]; ++ ++/* ++ * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } ++ */ ++#define DER_OID_V_sha512WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D ++#define DER_OID_SZ_sha512WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512WithRSAEncryption[DER_OID_SZ_sha512WithRSAEncryption]; ++ ++/* ++ * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } ++ */ ++#define DER_OID_V_sha512_224WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0F ++#define DER_OID_SZ_sha512_224WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_224WithRSAEncryption[DER_OID_SZ_sha512_224WithRSAEncryption]; ++ ++/* ++ * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } ++ */ ++#define DER_OID_V_sha512_256WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x10 ++#define DER_OID_SZ_sha512_256WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_sha512_256WithRSAEncryption[DER_OID_SZ_sha512_256WithRSAEncryption]; ++ ++/* ++ * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } ++ */ ++#define DER_OID_V_id_mgf1 DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x08 ++#define DER_OID_SZ_id_mgf1 11 ++extern const unsigned char ossl_der_oid_id_mgf1[DER_OID_SZ_id_mgf1]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-224 OBJECT IDENTIFIER ::= { sigAlgs 13 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_224 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0D ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_224[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_224]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-256 OBJECT IDENTIFIER ::= { sigAlgs 14 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_256 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0E ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_256[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_256]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-384 OBJECT IDENTIFIER ::= { sigAlgs 15 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_384 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x0F ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_384[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_384]; ++ ++/* ++ * id-rsassa-pkcs1-v1_5-with-sha3-512 OBJECT IDENTIFIER ::= { sigAlgs 16 } ++ */ ++#define DER_OID_V_id_rsassa_pkcs1_v1_5_with_sha3_512 DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x03, 0x10 ++#define DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512 11 ++extern const unsigned char ossl_der_oid_id_rsassa_pkcs1_v1_5_with_sha3_512[DER_OID_SZ_id_rsassa_pkcs1_v1_5_with_sha3_512]; ++ ++/* ++ * md4WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 3 } ++ */ ++#define DER_OID_V_md4WithRSAEncryption DER_P_OBJECT, 9, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x03 ++#define DER_OID_SZ_md4WithRSAEncryption 11 ++extern const unsigned char ossl_der_oid_md4WithRSAEncryption[DER_OID_SZ_md4WithRSAEncryption]; ++ ++/* ++ * ripemd160WithRSAEncryption OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) teletrust(36) algorithm(3) signatureAlgorithm(3) rsaSignature(1) 2 ++ * } ++ */ ++#define DER_OID_V_ripemd160WithRSAEncryption DER_P_OBJECT, 6, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02 ++#define DER_OID_SZ_ripemd160WithRSAEncryption 8 ++extern const unsigned char ossl_der_oid_ripemd160WithRSAEncryption[DER_OID_SZ_ripemd160WithRSAEncryption]; ++ ++/* ++ * mdc2WithRSASignature OBJECT IDENTIFIER ::= { ++ * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) mdc2WithRSASignature(14) ++ * } ++ */ ++#define DER_OID_V_mdc2WithRSASignature DER_P_OBJECT, 5, 0x2B, 0x0E, 0x03, 0x02, 0x0E ++#define DER_OID_SZ_mdc2WithRSASignature 7 ++extern const unsigned char ossl_der_oid_mdc2WithRSASignature[DER_OID_SZ_mdc2WithRSASignature]; ++ ++ ++/* PSS parameters */ ++int ossl_DER_w_RSASSA_PSS_params(WPACKET *pkt, int tag, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_RSA(WPACKET *pkt, int tag, RSA *rsa); ++int ossl_DER_w_algorithmIdentifier_RSA_PSS(WPACKET *pkt, int tag, ++ int rsa_type, ++ const RSA_PSS_PARAMS_30 *pss); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_MDWithRSAEncryption(WPACKET *pkt, int tag, ++ int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_sm2.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_sm2.h +new file mode 100644 +index 00000000..9d41b312 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_sm2.h +@@ -0,0 +1,37 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_sm2.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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 "crypto/ec.h" ++#include "internal/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * sm2-with-SM3 OBJECT IDENTIFIER ::= { sm-scheme 501 } ++ */ ++#define DER_OID_V_sm2_with_SM3 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x83, 0x75 ++#define DER_OID_SZ_sm2_with_SM3 10 ++extern const unsigned char ossl_der_oid_sm2_with_SM3[DER_OID_SZ_sm2_with_SM3]; ++ ++/* ++ * curveSM2 OBJECT IDENTIFIER ::= { sm-scheme 301 } ++ */ ++#define DER_OID_V_curveSM2 DER_P_OBJECT, 8, 0x2A, 0x81, 0x1C, 0xCF, 0x55, 0x01, 0x82, 0x2D ++#define DER_OID_SZ_curveSM2 10 ++extern const unsigned char ossl_der_oid_curveSM2[DER_OID_SZ_curveSM2]; ++ ++ ++/* Subject Public Key Info */ ++int ossl_DER_w_algorithmIdentifier_SM2(WPACKET *pkt, int cont, EC_KEY *ec); ++/* Signature */ ++int ossl_DER_w_algorithmIdentifier_SM2_with_MD(WPACKET *pkt, int cont, ++ EC_KEY *ec, int mdnid); +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_wrap.h b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_wrap.h +new file mode 100644 +index 00000000..ff295403 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/common/include/prov/der_wrap.h +@@ -0,0 +1,46 @@ ++/* ++ * WARNING: do not edit! ++ * Generated by Makefile from providers/common/include/prov/der_wrap.h.in ++ * ++ * Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved. ++ * ++ * Licensed under the Apache License 2.0 (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/der.h" ++ ++/* Well known OIDs precompiled */ ++ ++/* ++ * id-alg-CMS3DESwrap OBJECT IDENTIFIER ::= { ++ * iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6 ++ * } ++ */ ++#define DER_OID_V_id_alg_CMS3DESwrap DER_P_OBJECT, 11, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x10, 0x03, 0x06 ++#define DER_OID_SZ_id_alg_CMS3DESwrap 13 ++extern const unsigned char ossl_der_oid_id_alg_CMS3DESwrap[DER_OID_SZ_id_alg_CMS3DESwrap]; ++ ++/* ++ * id-aes128-wrap OBJECT IDENTIFIER ::= { aes 5 } ++ */ ++#define DER_OID_V_id_aes128_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x05 ++#define DER_OID_SZ_id_aes128_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes128_wrap[DER_OID_SZ_id_aes128_wrap]; ++ ++/* ++ * id-aes192-wrap OBJECT IDENTIFIER ::= { aes 25 } ++ */ ++#define DER_OID_V_id_aes192_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x19 ++#define DER_OID_SZ_id_aes192_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes192_wrap[DER_OID_SZ_id_aes192_wrap]; ++ ++/* ++ * id-aes256-wrap OBJECT IDENTIFIER ::= { aes 45 } ++ */ ++#define DER_OID_V_id_aes256_wrap DER_P_OBJECT, 9, 0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2D ++#define DER_OID_SZ_id_aes256_wrap 11 ++extern const unsigned char ossl_der_oid_id_aes256_wrap[DER_OID_SZ_id_aes256_wrap]; ++ +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/fips.ld b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/fips.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/fips.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/archs/linux-sw_64/no-asm/providers/legacy.ld b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/legacy.ld +new file mode 100644 +index 00000000..1debaaa7 +--- /dev/null ++++ b/deps/openssl/config/archs/linux-sw_64/no-asm/providers/legacy.ld +@@ -0,0 +1,5 @@ ++{ ++ global: ++ OSSL_provider_init; ++ local: *; ++}; +diff --git a/deps/openssl/config/bn_conf_asm.h b/deps/openssl/config/bn_conf_asm.h +index e9c74868..6ed9e44f 100644 +--- a/deps/openssl/config/bn_conf_asm.h ++++ b/deps/openssl/config/bn_conf_asm.h +@@ -39,6 +39,8 @@ + # include "./archs/linux64-s390x/asm/include/crypto/bn_conf.h" + #elif defined(OPENSSL_LINUX) && defined(__s390__) + # include "./archs/linux32-s390x/asm/include/crypto/bn_conf.h" ++#elif defined(OPENSSL_LINUX) && (defined(__sw_64__) || defined(__sw_64__)) ++# include "./archs/linux-sw_64/asm/crypto/include/internal/bn_conf.h" + #else + # include "./archs/linux-elf/asm/include/crypto/bn_conf.h" + #endif +diff --git a/deps/openssl/config/bn_conf_no-asm.h b/deps/openssl/config/bn_conf_no-asm.h +index 50c1a612..23834dc9 100644 +--- a/deps/openssl/config/bn_conf_no-asm.h ++++ b/deps/openssl/config/bn_conf_no-asm.h +@@ -43,6 +43,8 @@ + # include "./archs/linux64-s390x/no-asm/include/crypto/bn_conf.h" + #elif defined(OPENSSL_LINUX) && defined(__s390__) + # include "./archs/linux32-s390x/no-asm/include/crypto/bn_conf.h" ++#elif defined(OPENSSL_LINUX) && (defined(__sw_64__) || defined(__sw_64__)) ++# include "./archs/linux-sw_64/no-asm/crypto/include/internal/bn_conf.h" + #else + # include "./archs/linux-elf/no-asm/include/crypto/bn_conf.h" + #endif +diff --git a/deps/openssl/config/dso_conf_asm.h b/deps/openssl/config/dso_conf_asm.h +index 1e432555..500028d6 100644 +--- a/deps/openssl/config/dso_conf_asm.h ++++ b/deps/openssl/config/dso_conf_asm.h +@@ -39,6 +39,8 @@ + # include "./archs/linux64-s390x/asm/include/crypto/dso_conf.h" + #elif defined(OPENSSL_LINUX) && defined(__s390__) + # include "./archs/linux32-s390x/asm/include/crypto/dso_conf.h" ++#elif defined(OPENSSL_LINUX) && (defined(__sw_64__) || defined(__sw_64__)) ++# include "./archs/linux-sw_64/asm/crypto/include/internal/dso_conf.h" + #else + # include "./archs/linux-elf/asm/include/crypto/dso_conf.h" + #endif +diff --git a/deps/openssl/config/dso_conf_no-asm.h b/deps/openssl/config/dso_conf_no-asm.h +index 4f1674e2..bfee4564 100644 +--- a/deps/openssl/config/dso_conf_no-asm.h ++++ b/deps/openssl/config/dso_conf_no-asm.h +@@ -43,6 +43,8 @@ + # include "./archs/linux64-s390x/no-asm/include/crypto/dso_conf.h" + #elif defined(OPENSSL_LINUX) && defined(__s390__) + # include "./archs/linux32-s390x/no-asm/include/crypto/dso_conf.h" ++#elif defined(OPENSSL_LINUX) && (defined(__sw_64__) || defined(__sw_64__)) ++# include "./archs/linux-sw_64/no-asm/crypto/include/internal/dso_conf.h" + #else + # include "./archs/linux-elf/no-asm/include/crypto/dso_conf.h" + #endif +diff --git a/deps/openssl/config/opensslconf_asm.h b/deps/openssl/config/opensslconf_asm.h +index f20d6225..e2bb667c 100644 +--- a/deps/openssl/config/opensslconf_asm.h ++++ b/deps/openssl/config/opensslconf_asm.h +@@ -61,6 +61,7 @@ + | ---------- | ----------------- | + | arm | __arm__ | + | arm64 | __aarch64__ | ++ | sw64 | __sw_64__ | + | ia32 | __i386__ | + | ia32(win) | _M_IX86 | + | mips | __mips__ | +@@ -133,6 +134,8 @@ + # include "./archs/linux32-s390x/asm/include/openssl/opensslconf.h" + #elif defined(OPENSSL_LINUX) && defined(__mips64) && defined(__MIPSEL__) + # include "./archs/linux64-mips64/asm/include/openssl/opensslconf.h" ++#elif defined(OPENSSL_LINUX) && (defined(__sw_64__) || defined(__sw_64__)) ++# include "./archs/linux-sw_64/asm/include/openssl/opensslconf.h" + #else + # include "./archs/linux-elf/asm/include/openssl/opensslconf.h" + #endif +diff --git a/deps/openssl/openssl-cl_asm.gypi b/deps/openssl/openssl-cl_asm.gypi +index cd10355c..b03246ec 100644 +--- a/deps/openssl/openssl-cl_asm.gypi ++++ b/deps/openssl/openssl-cl_asm.gypi +@@ -10,6 +10,8 @@ + 'includes': ['config/archs/linux-armv4/asm/openssl-cl.gypi'], + }, 'target_arch=="arm64" and OS=="linux"', { + 'includes': ['config/archs/linux-aarch64/asm/openssl-cl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/asm/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl-cl_asm_avx2.gypi b/deps/openssl/openssl-cl_asm_avx2.gypi +index 50b5a9c3..3ab0fcb7 100644 +--- a/deps/openssl/openssl-cl_asm_avx2.gypi ++++ b/deps/openssl/openssl-cl_asm_avx2.gypi +@@ -10,6 +10,8 @@ + 'includes': ['config/archs/linux-armv4/asm_avx2/openssl-cl.gypi'], + }, 'target_arch=="arm64" and OS=="linux"', { + 'includes': ['config/archs/linux-aarch64/asm_avx2/openssl-cl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/asm_avx2/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm_avx2/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl-cl_no_asm.gypi b/deps/openssl/openssl-cl_no_asm.gypi +index 0964fb36..6f8fc687 100644 +--- a/deps/openssl/openssl-cl_no_asm.gypi ++++ b/deps/openssl/openssl-cl_no_asm.gypi +@@ -12,6 +12,8 @@ + 'includes': ['config/archs/linux-aarch64/no-asm/openssl-cl.gypi'], + }, 'target_arch=="arm64" and OS=="win"', { + 'includes': ['config/archs/VC-WIN64-ARM/no-asm/openssl-cl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/no-asm/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/no-asm/openssl-cl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl-fips_asm.gypi b/deps/openssl/openssl-fips_asm.gypi +index 631df9eb..a04a9aca 100644 +--- a/deps/openssl/openssl-fips_asm.gypi ++++ b/deps/openssl/openssl-fips_asm.gypi +@@ -12,6 +12,8 @@ + 'includes': ['config/archs/linux-aarch64/asm/openssl-fips.gypi'], + }, 'target_arch=="arm64" and OS=="mac"', { + 'includes': ['config/archs/darwin64-arm64-cc/asm/openssl-fips.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/BSD-x86/asm/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl-fips_asm_avx2.gypi b/deps/openssl/openssl-fips_asm_avx2.gypi +index 4d63cacf..cc46da8f 100644 +--- a/deps/openssl/openssl-fips_asm_avx2.gypi ++++ b/deps/openssl/openssl-fips_asm_avx2.gypi +@@ -10,6 +10,8 @@ + 'includes': ['config/archs/linux-armv4/asm_avx2/openssl-fips.gypi'], + }, 'target_arch=="arm64" and OS=="linux"', { + 'includes': ['config/archs/linux-aarch64/asm_avx2/openssl-fips.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/asm_avx2/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm_avx2/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl-fips_no_asm.gypi b/deps/openssl/openssl-fips_no_asm.gypi +index 7fdfd772..1d51e9ca 100644 +--- a/deps/openssl/openssl-fips_no_asm.gypi ++++ b/deps/openssl/openssl-fips_no_asm.gypi +@@ -11,6 +11,8 @@ + 'includes': ['config/archs/linux-armv4/no-asm/openssl-fips.gypi'], + }, 'target_arch=="arm64" and OS in ("linux", "android")', { + 'includes': ['config/archs/linux-aarch64/no-asm/openssl-fips.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/no-asm/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/no-asm/openssl-fips.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl.gypi b/deps/openssl/openssl.gypi +index f590067c..43b18371 100644 +--- a/deps/openssl/openssl.gypi ++++ b/deps/openssl/openssl.gypi +@@ -932,6 +932,31 @@ + 'openssl/crypto/armcap.c', + 'openssl/crypto/arm64cpuid.S', + ], ++ 'openssl_sources_sw64_linux64_gas': [ ++ 'asm/sw64-linux64-gas/aes/aesv8-sw_64.S', ++ 'asm/sw64-linux64-gas/modes/ghashv8-sw_64.S', ++ 'asm/sw64-linux64-gas/sha/sha1-sw_64.S', ++ 'asm/sw64-linux64-gas/sha/sha256-sw_64.S', ++ 'asm/sw64-linux64-gas/sha/sha512-sw_64.S', ++ # No asm available ++ 'openssl/crypto/aes/aes_core.c', ++ 'openssl/crypto/aes/aes_cbc.c', ++ 'openssl/crypto/bn/bn_asm.c', ++ 'openssl/crypto/bf/bf_enc.c', ++ 'openssl/crypto/cast/c_enc.c', ++ 'openssl/crypto/camellia/camellia.c', ++ 'openssl/crypto/camellia/cmll_cbc.c', ++ 'openssl/crypto/camellia/cmll_misc.c', ++ 'openssl/crypto/des/des_enc.c', ++ 'openssl/crypto/des/fcrypt_b.c', ++ 'openssl/crypto/rc4/rc4_enc.c', ++ 'openssl/crypto/rc4/rc4_skey.c', ++ 'openssl/crypto/whrlpool/wp_block.c', ++ 'openssl/crypto/mem_clr.c', ++ # PCAP stuff ++ 'openssl/crypto/sw_64cap.c', ++ 'openssl/crypto/sw_64cpuid.S', ++ ], + 'openssl_sources_asm_ia32_win_masm': [ + 'asm/x86-win32-masm/aes/aes-586.asm', + 'asm/x86-win32-masm/aes/aesni-x86.asm', +@@ -1151,6 +1176,12 @@ + 'SHA256_ASM', + 'SHA512_ASM', + ], ++ 'openssl_defines_sw64': [ ++ 'OPENSSL_CPUID_OBJ', ++ 'SHA1_ASM', ++ 'SHA256_ASM', ++ 'SHA512_ASM', ++ ], + 'openssl_defines_non_arm': [ + 'VPAES_ASM', + 'BN_ASM', +diff --git a/deps/openssl/openssl/Configurations/10-main.conf b/deps/openssl/openssl/Configurations/10-main.conf +index e74adb50..8b3626e7 100644 +--- a/deps/openssl/openssl/Configurations/10-main.conf ++++ b/deps/openssl/openssl/Configurations/10-main.conf +@@ -983,6 +983,13 @@ my %targets = ( + asm_arch => 'alpha', + perlasm_scheme => "void", + }, ++ "linux-sw_64-gcc" => { ++ inherit_from => [ "linux-generic64" ], ++ lib_cppflags => add("-DL_ENDIAN"), ++ bn_ops => "SIXTY_FOUR_BIT_LONG", ++ asm_arch => 'sw_64', ++ perlasm_scheme => "void", ++ }, + "linux-c64xplus" => { + inherit_from => [ "BASE_unix" ], + # TI_CGT_C6000_7.3.x is a requirement +diff --git a/deps/openssl/openssl/apps/lib/vms_term_sock.c b/deps/openssl/openssl/apps/lib/vms_term_sock.c +index 97fb3943..96239771 100644 +--- a/deps/openssl/openssl/apps/lib/vms_term_sock.c ++++ b/deps/openssl/openssl/apps/lib/vms_term_sock.c +@@ -36,7 +36,7 @@ + # include + # include + # include +-# ifdef __alpha ++# if defined(__alpha) || defined(__sw_64__) + # include + # else + typedef struct _iosb { /* Copied from IOSBDEF.H for Alpha */ +@@ -91,7 +91,7 @@ typedef struct _iosb { /* Copied from IOSBDEF.H for Alpha */ + + # include "vms_term_sock.h" + +-# ifdef __alpha ++# if defined(__alpha) || defined(__sw_64__) + static struct _iosb TerminalDeviceIosb; + # else + IOSB TerminalDeviceIosb; +@@ -295,7 +295,7 @@ static int CreateSocketPair (int SocketFamily, + int status; + unsigned int slen; + +-# ifdef __alpha ++# if defined(__alpha) || defined(__sw_64__) + struct _iosb iosb; + # else + IOSB iosb; +diff --git a/deps/openssl/openssl/crypto/bn/build.info b/deps/openssl/openssl/crypto/bn/build.info +index c4ba51b2..1fd559d2 100644 +--- a/deps/openssl/openssl/crypto/bn/build.info ++++ b/deps/openssl/openssl/crypto/bn/build.info +@@ -50,6 +50,9 @@ IF[{- !$disabled{asm} -}] + $BNASM_alpha=bn_asm.c alpha-mont.S + $BNDEF_alpha=OPENSSL_BN_ASM_MONT + ++ $BNASM_sw_64=bn_asm.c sw_64-mont.S ++ $BNDEF_sw_64=OPENSSL_BN_ASM_MONT ++ + $BNASM_mips32=bn-mips.S mips-mont.S + $BNDEF_mips32=OPENSSL_BN_ASM_MONT + $BNASM_mips64=$BNASM_mips32 +@@ -168,6 +171,7 @@ GENERATE[ppc-mont.s]=asm/ppc-mont.pl + GENERATE[ppc64-mont.s]=asm/ppc64-mont.pl + + GENERATE[alpha-mont.S]=asm/alpha-mont.pl ++GENERATE[sw_64-mont.S]=asm/sw_64-mont.pl + + GENERATE[armv4-mont.S]=asm/armv4-mont.pl + INCLUDE[armv4-mont.o]=.. +diff --git a/deps/openssl/openssl/crypto/build.info b/deps/openssl/openssl/crypto/build.info +index a45bf8de..2b1ead3b 100644 +--- a/deps/openssl/openssl/crypto/build.info ++++ b/deps/openssl/openssl/crypto/build.info +@@ -35,6 +35,8 @@ IF[{- !$disabled{asm} && $config{processor} ne '386' -}] + + $CPUIDASM_sparcv9=sparcv9cap.c sparccpuid.S + ++ $CPUIDASM_sw_64=sw_64cpuid.s ++ + $CPUIDASM_alpha=alphacpuid.s + + $CPUIDASM_s390x=s390xcap.c s390xcpuid.S +@@ -123,7 +125,10 @@ GENERATE[x86_64cpuid.s]=x86_64cpuid.pl + GENERATE[ia64cpuid.s]=ia64cpuid.S + GENERATE[ppccpuid.s]=ppccpuid.pl + GENERATE[pariscid.s]=pariscid.pl ++GENERATE[sw_64cpuid.s]=sw_64cpuid.pl + GENERATE[alphacpuid.s]=alphacpuid.pl ++GENERATE[sw_64cpuid.S]=sw_64cpuid.pl $(PERLASM_SCHEME) ++INCLUDE[sw_64cpuid.o]=. + GENERATE[arm64cpuid.S]=arm64cpuid.pl + INCLUDE[arm64cpuid.o]=. + GENERATE[armv4cpuid.S]=armv4cpuid.pl +diff --git a/deps/openssl/openssl/crypto/modes/build.info b/deps/openssl/openssl/crypto/modes/build.info +index f3558fa1..d642539f 100644 +--- a/deps/openssl/openssl/crypto/modes/build.info ++++ b/deps/openssl/openssl/crypto/modes/build.info +@@ -19,6 +19,9 @@ IF[{- !$disabled{asm} -}] + $MODESASM_alpha=ghash-alpha.S + $MODESDEF_alpha=GHASH_ASM + ++ $MODESASM_sw_64=ghash-sw_64.S ++ $MODESDEF_sw_64=GHASH_ASM ++ + $MODESASM_s390x=ghash-s390x.S + $MODESDEF_s390x=GHASH_ASM + +@@ -69,6 +72,7 @@ GENERATE[aesni-gcm-x86_64.s]=asm/aesni-gcm-x86_64.pl + GENERATE[ghash-sparcv9.S]=asm/ghash-sparcv9.pl + INCLUDE[ghash-sparcv9.o]=.. + GENERATE[ghash-alpha.S]=asm/ghash-alpha.pl ++GENERATE[ghash-sw_64.S]=asm/ghash-sw_64.pl + GENERATE[ghash-parisc.s]=asm/ghash-parisc.pl + GENERATE[ghashp8-ppc.s]=asm/ghashp8-ppc.pl + GENERATE[ghash-armv4.S]=asm/ghash-armv4.pl +diff --git a/deps/openssl/openssl/crypto/poly1305/build.info b/deps/openssl/openssl/crypto/poly1305/build.info +index e359a222..d6048c3b 100644 +--- a/deps/openssl/openssl/crypto/poly1305/build.info ++++ b/deps/openssl/openssl/crypto/poly1305/build.info +@@ -48,6 +48,8 @@ GENERATE[poly1305-armv8.S]=asm/poly1305-armv8.pl + INCLUDE[poly1305-armv8.o]=.. + GENERATE[poly1305-mips.S]=asm/poly1305-mips.pl + INCLUDE[poly1305-mips.o]=.. ++GENERATE[poly1305-sw_64.S]=asm/poly1305-sw_64.pl $(PERLASM_SCHEME) ++INCLUDE[poly1305-sw_64.o]=.. + GENERATE[poly1305-c64xplus.S]=asm/poly1305-c64xplus.pl + INCLUDE[poly1305-s390x.o]=.. + GENERATE[poly1305-s390x.S]=asm/poly1305-s390x.pl +diff --git a/deps/openssl/openssl/crypto/sha/build.info b/deps/openssl/openssl/crypto/sha/build.info +index 186ec13c..4de7f4dd 100644 +--- a/deps/openssl/openssl/crypto/sha/build.info ++++ b/deps/openssl/openssl/crypto/sha/build.info +@@ -18,6 +18,9 @@ IF[{- !$disabled{asm} -}] + $SHA1ASM_alpha=sha1-alpha.S + $SHA1DEF_alpha=SHA1_ASM + ++ $SHA1ASM_sw_64=sha1-sw_64.S ++ $SHA1DEF_sw_64=SHA1_ASM ++ + $SHA1ASM_mips32=sha1-mips.S sha256-mips.S + $SHA1DEF_mips32=SHA1_ASM SHA256_ASM + $SHA1ASM_mips64=$SHA1ASM_mips32 sha512-mips.S +@@ -103,6 +106,7 @@ GENERATE[sha256-ia64.s]=asm/sha512-ia64.pl + GENERATE[sha512-ia64.s]=asm/sha512-ia64.pl + + GENERATE[sha1-alpha.S]=asm/sha1-alpha.pl ++GENERATE[sha1-sw_64.S]=asm/sha1-sw_64.pl + + GENERATE[sha1-x86_64.s]=asm/sha1-x86_64.pl + GENERATE[sha1-mb-x86_64.s]=asm/sha1-mb-x86_64.pl +diff --git a/deps/openssl/openssl/crypto/sw64_arch.h b/deps/openssl/openssl/crypto/sw64_arch.h +new file mode 100755 +index 00000000..c2fac4aa +--- /dev/null ++++ b/deps/openssl/openssl/crypto/sw64_arch.h +@@ -0,0 +1,24 @@ ++/* ++ * Copyright 2011-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 __SW64_ARCH_H__ ++# define __SW64_ARCH_H__ ++ ++# ifndef __ASSEMBLER__ ++extern unsigned int OPENSSL_armcap_P; ++# endif ++ ++# define ARMV7_NEON (1<<0) ++# define ARMV7_TICK (1<<1) ++# define ARMV8_AES (1<<2) ++# define ARMV8_SHA1 (1<<3) ++# define ARMV8_SHA256 (1<<4) ++# define ARMV8_PMULL (1<<5) ++ ++#endif +diff --git a/deps/openssl/openssl/crypto/sw_64cap.c b/deps/openssl/openssl/crypto/sw_64cap.c +new file mode 100755 +index 00000000..b332ec0f +--- /dev/null ++++ b/deps/openssl/openssl/crypto/sw_64cap.c +@@ -0,0 +1,183 @@ ++/* ++ * Copyright 2011-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 ++#include ++#include ++#include ++#include ++#include ++ ++#include "sw64_arch.h" ++ ++unsigned int OPENSSL_armcap_P = 0; ++ ++static sigset_t all_masked; ++ ++static sigjmp_buf ill_jmp; ++static void ill_handler(int sig) ++{ ++ siglongjmp(ill_jmp, sig); ++} ++ ++/* ++ * Following subroutines could have been inlined, but it's not all ++ * ARM compilers support inline assembler... ++ */ ++void _armv7_neon_probe(void); ++void _armv8_aes_probe(void); ++void _armv8_sha1_probe(void); ++void _armv8_sha256_probe(void); ++void _armv8_pmull_probe(void); ++unsigned long _armv7_tick(void); ++ ++unsigned long OPENSSL_rdtsc(void) ++{ ++ if (OPENSSL_armcap_P & ARMV7_TICK) ++ return _armv7_tick(); ++ else ++ return 0; ++} ++ ++# if defined(__GNUC__) && __GNUC__>=2 ++void OPENSSL_cpuid_setup(void) __attribute__ ((constructor)); ++# endif ++/* ++ * Use a weak reference to getauxval() so we can use it if it is available but ++ * don't break the build if it is not. ++ */ ++# if defined(__GNUC__) && __GNUC__>=2 && defined(__ELF__) ++extern unsigned long getauxval(unsigned long type) __attribute__ ((weak)); ++# else ++static unsigned long (*getauxval) (unsigned long) = NULL; ++# endif ++ ++/* ++ * ARM puts the feature bits for Crypto Extensions in AT_HWCAP2, whereas ++ * AArch64 used AT_HWCAP. ++ */ ++# if defined(__arm__) || defined (__arm) ++# define HWCAP 16 ++ /* AT_HWCAP */ ++# define HWCAP_NEON (1 << 12) ++ ++# define HWCAP_CE 26 ++ /* AT_HWCAP2 */ ++# define HWCAP_CE_AES (1 << 0) ++# define HWCAP_CE_PMULL (1 << 1) ++# define HWCAP_CE_SHA1 (1 << 2) ++# define HWCAP_CE_SHA256 (1 << 3) ++# elif defined(__aarch64__) ++# define HWCAP 16 ++ /* AT_HWCAP */ ++# define HWCAP_NEON (1 << 1) ++ ++# define HWCAP_CE HWCAP ++# define HWCAP_CE_AES (1 << 3) ++# define HWCAP_CE_PMULL (1 << 4) ++# define HWCAP_CE_SHA1 (1 << 5) ++# define HWCAP_CE_SHA256 (1 << 6) ++# endif ++ ++void OPENSSL_cpuid_setup(void) ++{ ++ char *e; ++ struct sigaction ill_oact, ill_act; ++ sigset_t oset; ++ static int trigger = 0; ++ ++ if (trigger) ++ return; ++ trigger = 1; ++ ++ if ((e = getenv("OPENSSL_armcap"))) { ++ OPENSSL_armcap_P = (unsigned int)strtoul(e, NULL, 0); ++ return; ++ } ++ ++# if defined(__APPLE__) && !defined(__aarch64__) ++ /* ++ * Capability probing by catching SIGILL appears to be problematic ++ * on iOS. But since Apple universe is "monocultural", it's actually ++ * possible to simply set pre-defined processor capability mask. ++ */ ++ if (1) { ++ OPENSSL_armcap_P = ARMV7_NEON; ++ return; ++ } ++ /* ++ * One could do same even for __aarch64__ iOS builds. It's not done ++ * exclusively for reasons of keeping code unified across platforms. ++ * Unified code works because it never triggers SIGILL on Apple ++ * devices... ++ */ ++# endif ++ ++ sigfillset(&all_masked); ++ sigdelset(&all_masked, SIGILL); ++ sigdelset(&all_masked, SIGTRAP); ++ sigdelset(&all_masked, SIGFPE); ++ sigdelset(&all_masked, SIGBUS); ++ sigdelset(&all_masked, SIGSEGV); ++ ++ OPENSSL_armcap_P = 0; ++ ++ memset(&ill_act, 0, sizeof(ill_act)); ++ ill_act.sa_handler = ill_handler; ++ ill_act.sa_mask = all_masked; ++ ++ sigprocmask(SIG_SETMASK, &ill_act.sa_mask, &oset); ++ sigaction(SIGILL, &ill_act, &ill_oact); ++ ++ if (getauxval != NULL) { ++ if (getauxval(HWCAP) & HWCAP_NEON) { ++ unsigned long hwcap = getauxval(HWCAP_CE); ++ ++ OPENSSL_armcap_P |= ARMV7_NEON; ++ ++ if (hwcap & HWCAP_CE_AES) ++ OPENSSL_armcap_P |= ARMV8_AES; ++ ++ if (hwcap & HWCAP_CE_PMULL) ++ OPENSSL_armcap_P |= ARMV8_PMULL; ++ ++ if (hwcap & HWCAP_CE_SHA1) ++ OPENSSL_armcap_P |= ARMV8_SHA1; ++ ++ if (hwcap & HWCAP_CE_SHA256) ++ OPENSSL_armcap_P |= ARMV8_SHA256; ++ } ++ } else if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv7_neon_probe(); ++ OPENSSL_armcap_P |= ARMV7_NEON; ++ if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv8_pmull_probe(); ++ OPENSSL_armcap_P |= ARMV8_PMULL | ARMV8_AES; ++ } else if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv8_aes_probe(); ++ OPENSSL_armcap_P |= ARMV8_AES; ++ } ++ if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv8_sha1_probe(); ++ OPENSSL_armcap_P |= ARMV8_SHA1; ++ } ++ if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv8_sha256_probe(); ++ OPENSSL_armcap_P |= ARMV8_SHA256; ++ } ++ } ++ if (sigsetjmp(ill_jmp, 1) == 0) { ++ _armv7_tick(); ++ OPENSSL_armcap_P |= ARMV7_TICK; ++ } ++ ++ sigaction(SIGILL, &ill_oact, NULL); ++ sigprocmask(SIG_SETMASK, &oset, NULL); ++} +diff --git a/deps/openssl/openssl/crypto/sw_64cpuid.pl b/deps/openssl/openssl/crypto/sw_64cpuid.pl +new file mode 100755 +index 00000000..6c7fd4c9 +--- /dev/null ++++ b/deps/openssl/openssl/crypto/sw_64cpuid.pl +@@ -0,0 +1,257 @@ ++#! /usr/bin/env perl ++# 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 ++ ++ ++$output = pop; ++open STDOUT,">$output"; ++ ++print <<'___'; ++.text ++ ++.set noat ++ ++.globl OPENSSL_cpuid_setup ++.ent OPENSSL_cpuid_setup ++OPENSSL_cpuid_setup: ++ .frame $30,0,$26 ++ .prologue 0 ++ ret ($26) ++.end OPENSSL_cpuid_setup ++ ++.globl OPENSSL_wipe_cpu ++.ent OPENSSL_wipe_cpu ++OPENSSL_wipe_cpu: ++ .frame $30,0,$26 ++ .prologue 0 ++ clr $1 ++ clr $2 ++ clr $3 ++ clr $4 ++ clr $5 ++ clr $6 ++ clr $7 ++ clr $8 ++ clr $16 ++ clr $17 ++ clr $18 ++ clr $19 ++ clr $20 ++ clr $21 ++ clr $22 ++ clr $23 ++ clr $24 ++ clr $25 ++ clr $27 ++ clr $at ++ clr $29 ++ fclr $f0 ++ fclr $f1 ++ fclr $f10 ++ fclr $f11 ++ fclr $f12 ++ fclr $f13 ++ fclr $f14 ++ fclr $f15 ++ fclr $f16 ++ fclr $f17 ++ fclr $f18 ++ fclr $f19 ++ fclr $f20 ++ fclr $f21 ++ fclr $f22 ++ fclr $f23 ++ fclr $f24 ++ fclr $f25 ++ fclr $f26 ++ fclr $f27 ++ fclr $f28 ++ fclr $f29 ++ fclr $f30 ++ mov $sp,$0 ++ ret ($26) ++.end OPENSSL_wipe_cpu ++ ++.globl OPENSSL_atomic_add ++.ent OPENSSL_atomic_add ++OPENSSL_atomic_add: ++ .frame $30,0,$26 ++ .prologue 0 ++1: ldl_l $0,0($16) ++ addl $0,$17,$1 ++ stl_c $1,0($16) ++ beq $1,1b ++ addl $0,$17,$0 ++ ret ($26) ++.end OPENSSL_atomic_add ++ ++.globl OPENSSL_rdtsc ++.ent OPENSSL_rdtsc ++OPENSSL_rdtsc: ++ .frame $30,0,$26 ++ .prologue 0 ++ rpcc $0 ++ ret ($26) ++.end OPENSSL_rdtsc ++ ++.globl OPENSSL_cleanse ++.ent OPENSSL_cleanse ++OPENSSL_cleanse: ++ .frame $30,0,$26 ++ .prologue 0 ++ beq $17,.Ldone ++ and $16,7,$0 ++ bic $17,7,$at ++ beq $at,.Little ++ beq $0,.Laligned ++ ++.Little: ++ subq $0,8,$0 ++ ldq_u $1,0($16) ++ mov $16,$2 ++.Lalign: ++ mskbl $1,$16,$1 ++ lda $16,1($16) ++ subq $17,1,$17 ++ addq $0,1,$0 ++ beq $17,.Lout ++ bne $0,.Lalign ++.Lout: stq_u $1,0($2) ++ beq $17,.Ldone ++ bic $17,7,$at ++ beq $at,.Little ++ ++.Laligned: ++ stq $31,0($16) ++ subq $17,8,$17 ++ lda $16,8($16) ++ bic $17,7,$at ++ bne $at,.Laligned ++ bne $17,.Little ++.Ldone: ret ($26) ++.end OPENSSL_cleanse ++ ++.globl CRYPTO_memcmp ++.ent CRYPTO_memcmp ++CRYPTO_memcmp: ++ .frame $30,0,$26 ++ .prologue 0 ++ xor $0,$0,$0 ++ beq $18,.Lno_data ++ ++ xor $1,$1,$1 ++ nop ++.Loop_cmp: ++ ldq_u $2,0($16) ++ subq $18,1,$18 ++ ldq_u $3,0($17) ++ extbl $2,$16,$2 ++ lda $16,1($16) ++ extbl $3,$17,$3 ++ lda $17,1($17) ++ xor $3,$2,$2 ++ or $2,$0,$0 ++ bne $18,.Loop_cmp ++ ++ subq $31,$0,$0 ++ srl $0,63,$0 ++.Lno_data: ++ ret ($26) ++.end CRYPTO_memcmp ++___ ++{ ++my ($out,$cnt,$max)=("\$16","\$17","\$18"); ++my ($tick,$lasttick)=("\$19","\$20"); ++my ($diff,$lastdiff)=("\$21","\$22"); ++my ($v0,$ra,$sp,$zero)=("\$0","\$26","\$30","\$31"); ++ ++print <<___; ++.globl OPENSSL_instrument_bus ++.ent OPENSSL_instrument_bus ++OPENSSL_instrument_bus: ++ .frame $sp,0,$ra ++ .prologue 0 ++ mov $cnt,$v0 ++ ++ rpcc $lasttick ++ mov 0,$diff ++ ++ ecb ($out) ++ ldl_l $tick,0($out) ++ addl $diff,$tick,$tick ++ mov $tick,$diff ++ stl_c $tick,0($out) ++ stl $diff,0($out) ++ ++.Loop: rpcc $tick ++ subq $tick,$lasttick,$diff ++ mov $tick,$lasttick ++ ++ ecb ($out) ++ ldl_l $tick,0($out) ++ addl $diff,$tick,$tick ++ mov $tick,$diff ++ stl_c $tick,0($out) ++ stl $diff,0($out) ++ ++ subl $cnt,1,$cnt ++ lda $out,4($out) ++ bne $cnt,.Loop ++ ++ ret ($ra) ++.end OPENSSL_instrument_bus ++ ++.globl OPENSSL_instrument_bus2 ++.ent OPENSSL_instrument_bus2 ++OPENSSL_instrument_bus2: ++ .frame $sp,0,$ra ++ .prologue 0 ++ mov $cnt,$v0 ++ ++ rpcc $lasttick ++ mov 0,$diff ++ ++ ecb ($out) ++ ldl_l $tick,0($out) ++ addl $diff,$tick,$tick ++ mov $tick,$diff ++ stl_c $tick,0($out) ++ stl $diff,0($out) ++ ++ rpcc $tick ++ subq $tick,$lasttick,$diff ++ mov $tick,$lasttick ++ mov $diff,$lastdiff ++.Loop2: ++ ecb ($out) ++ ldl_l $tick,0($out) ++ addl $diff,$tick,$tick ++ mov $tick,$diff ++ stl_c $tick,0($out) ++ stl $diff,0($out) ++ ++ subl $max,1,$max ++ beq $max,.Ldone2 ++ ++ rpcc $tick ++ subq $tick,$lasttick,$diff ++ mov $tick,$lasttick ++ subq $lastdiff,$diff,$tick ++ mov $diff,$lastdiff ++ cmovne $tick,1,$tick ++ subl $cnt,$tick,$cnt ++ s4addq $tick,$out,$out ++ bne $cnt,.Loop2 ++ ++.Ldone2: ++ subl $v0,$cnt,$v0 ++ ret ($ra) ++.end OPENSSL_instrument_bus2 ++___ ++} ++ ++close STDOUT; +diff --git a/deps/openssl/openssl/include/crypto/md32_common.h b/deps/openssl/openssl/include/crypto/md32_common.h +index 3b16f1b7..8f6e995e 100644 +--- a/deps/openssl/openssl/include/crypto/md32_common.h ++++ b/deps/openssl/openssl/include/crypto/md32_common.h +@@ -226,7 +226,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c) + } + + #ifndef MD32_REG_T +-# if defined(__alpha) || defined(__sparcv9) || defined(__mips) ++# if defined(__alpha) || defined(__sparcv9) || defined(__mips) || defined(__sw_64__) + # define MD32_REG_T long + /* + * This comment was originally written for MD5, which is why it +diff --git a/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c b/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c +index 750afca5..8a603c1d 100644 +--- a/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c ++++ b/deps/openssl/openssl/providers/implementations/rands/seeding/rand_unix.c +@@ -304,7 +304,7 @@ static ssize_t sysctl_random(char *buf, size_t buflen) + # define __NR_getrandom 347 + # elif defined(__ia64__) + # define __NR_getrandom 1339 +-# elif defined(__alpha__) ++# elif defined(__alpha__) || defined(__sw_64__) + # define __NR_getrandom 511 + # elif defined(__sh__) + # if defined(__SH5__) +diff --git a/deps/openssl/openssl/util/perl/OpenSSL/config.pm b/deps/openssl/openssl/util/perl/OpenSSL/config.pm +index 695d6bab..43f72f06 100755 +--- a/deps/openssl/openssl/util/perl/OpenSSL/config.pm ++++ b/deps/openssl/openssl/util/perl/OpenSSL/config.pm +@@ -577,6 +577,24 @@ EOF + return { target => "linux-alpha", + %config }; + } ++ ], ++ [ 'sw_64-.*-linux2.*', ++ sub { ++ my $ISA = `awk '/cpu model/{print \$4;exit(0);}' /proc/cpuinfo`; ++ $ISA //= 'generic'; ++ my %config = (); ++ if ( $CCVENDOR eq "gcc" ) { ++ if ( $ISA =~ 'sw6' ) { ++ %config = ( cflags => [ '-mcpu=sw6' ], ++ cxxflags => [ '-mcpu=sw6' ] ); ++ } else { ++ %config = ( cflags => [ '-mcpu=sw6a' ], ++ cxxflags => [ '-mcpu=sw6a' ] ); ++ } ++ } ++ return { target => "linux-sw_64-$CCVENDOR", ++ %config }; ++ } + ], + [ 'ppc64-.*-linux2', + sub { +diff --git a/deps/openssl/openssl_asm.gypi b/deps/openssl/openssl_asm.gypi +index dd7e636e..57475dc9 100644 +--- a/deps/openssl/openssl_asm.gypi ++++ b/deps/openssl/openssl_asm.gypi +@@ -14,6 +14,8 @@ + 'includes': ['config/archs/darwin64-arm64-cc/asm/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm/openssl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/asm/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { + 'includes': ['config/archs/linux-elf/asm/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="mac"', { +diff --git a/deps/openssl/openssl_asm_avx2.gypi b/deps/openssl/openssl_asm_avx2.gypi +index 6a9c56d7..e2d2cb01 100644 +--- a/deps/openssl/openssl_asm_avx2.gypi ++++ b/deps/openssl/openssl_asm_avx2.gypi +@@ -10,6 +10,8 @@ + 'includes': ['config/archs/linux-armv4/asm_avx2/openssl.gypi'], + }, 'target_arch=="arm64" and OS=="linux"', { + 'includes': ['config/archs/linux-aarch64/asm_avx2/openssl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/asm_avx2/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/asm_avx2/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/openssl/openssl_no_asm.gypi b/deps/openssl/openssl_no_asm.gypi +index 20663dec..99ab59a2 100644 +--- a/deps/openssl/openssl_no_asm.gypi ++++ b/deps/openssl/openssl_no_asm.gypi +@@ -11,6 +11,8 @@ + 'includes': ['config/archs/linux-armv4/no-asm/openssl.gypi'], + }, 'target_arch=="arm64" and OS in ("linux", "android")', { + 'includes': ['config/archs/linux-aarch64/no-asm/openssl.gypi'], ++ }, 'target_arch=="sw_64" and OS=="linux"', { ++ 'includes': ['config/archs/linux-sw_64/no-asm/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="freebsd"', { + 'includes': ['config/archs/BSD-x86/no-asm/openssl.gypi'], + }, 'target_arch=="ia32" and OS=="linux"', { +diff --git a/deps/v8/BUILD.gn b/deps/v8/BUILD.gn +index c42d5b86..837cb878 100644 +--- a/deps/v8/BUILD.gn ++++ b/deps/v8/BUILD.gn +@@ -309,7 +309,7 @@ declare_args() { + # Enable heap reservation of size 4GB. Only possible for 64bit archs. + cppgc_enable_caged_heap = + v8_current_cpu == "x64" || v8_current_cpu == "arm64" || +- v8_current_cpu == "loong64" ++ v8_current_cpu == "loong64" || v8_current_cpu == "sw_64" + + # Enables additional heap verification phases and checks. + cppgc_enable_verify_heap = "" +@@ -654,7 +654,7 @@ assert(!v8_enable_unconditional_write_barriers || !v8_disable_write_barriers, + "Write barriers can't be both enabled and disabled") + + assert(!cppgc_enable_caged_heap || v8_current_cpu == "x64" || +- v8_current_cpu == "arm64" || v8_current_cpu == "loong64", ++ v8_current_cpu == "arm64" || v8_current_cpu == "loong64" || v8_current_cpu == "sw_64", + "CppGC caged heap requires 64bit platforms") + + assert(!cppgc_enable_young_generation || cppgc_enable_caged_heap, +@@ -1201,6 +1201,10 @@ config("toolchain") { + } + } + ++ if (v8_current_cpu == "sw_64") { ++ defines += [ "V8_TARGET_ARCH_SW64", "SW64" ] ++ } ++ + # Mips64el simulators. + if (target_is_simulator && v8_current_cpu == "mips64el") { + defines += [ "_MIPS_TARGET_SIMULATOR" ] +@@ -2624,6 +2628,11 @@ v8_source_set("v8_initializers") { + ### gcmole(loong64) ### + "src/builtins/loong64/builtins-loong64.cc", + ] ++ } else if(v8_current_cpu == "sw_64") { ++ sources += [ ++ ### gcmole(sw64) ### ++ "src/builtins/sw64/builtins-sw64.cc", ++ ] + } else if (v8_current_cpu == "ppc") { + sources += [ + ### gcmole(ppc) ### +@@ -4079,6 +4088,23 @@ v8_header_set("v8_internal_headers") { + "src/regexp/mips64/regexp-macro-assembler-mips64.h", + "src/wasm/baseline/mips64/liftoff-assembler-mips64.h", + ] ++ } else if (v8_current_cpu == "sw_64" || v8_current_cpu == "sw_64") { ++ sources += [ ++ ### gcmole(arch:sw_64) ### ++ "src/baseline/sw64/baseline-assembler-sw64-inl.h", ++ "src/baseline/sw64/baseline-compiler-sw64-inl.h", ++ "src/codegen/sw64/assembler-sw64-inl.h", ++ "src/codegen/sw64/assembler-sw64.h", ++ "src/codegen/sw64/constants-sw64.h", ++ "src/codegen/sw64/macro-assembler-sw64.h", ++ "src/codegen/sw64/register-sw64.h", ++ "src/codegen/sw64/reglist-sw64.h", ++ "src/compiler/backend/sw64/instruction-codes-sw64.h", ++ "src/execution/sw64/frame-constants-sw64.h", ++ "src/execution/sw64/simulator-sw64.h", ++ "src/regexp/sw64/regexp-macro-assembler-sw64.h", ++ "src/wasm/baseline/sw64/liftoff-assembler-sw64.h", ++ ] + } else if (v8_current_cpu == "loong64") { + sources += [ + ### gcmole(loong64) ### +@@ -5326,6 +5352,24 @@ v8_source_set("v8_base_without_compiler") { + "src/execution/loong64/simulator-loong64.cc", + "src/regexp/loong64/regexp-macro-assembler-loong64.cc", + ] ++ } else if(v8_current_cpu == "sw_64") { ++ sources += [ ++ ### gcmole(arch:sw_64) ### ++ "src/codegen/sw64/assembler-sw64.cc", ++ "src/codegen/sw64/constants-sw64.cc", ++ "src/codegen/sw64/cpu-sw64.cc", ++ "src/codegen/sw64/interface-descriptors-sw64-inl.h", ++ "src/codegen/sw64/macro-assembler-sw64.cc", ++ "src/compiler/backend/sw64/code-generator-sw64.cc", ++ "src/compiler/backend/sw64/instruction-scheduler-sw64.cc", ++ "src/compiler/backend/sw64/instruction-selector-sw64.cc", ++ "src/deoptimizer/sw64/deoptimizer-sw64.cc", ++ "src/diagnostics/sw64/disasm-sw64.cc", ++ "src/diagnostics/sw64/unwinder-sw64.cc", ++ "src/execution/sw64/frame-constants-sw64.cc", ++ "src/execution/sw64/simulator-sw64.cc", ++ "src/regexp/sw64/regexp-macro-assembler-sw64.cc", ++ ] + } else if (v8_current_cpu == "ppc") { + sources += [ + ### gcmole(ppc) ### +@@ -6119,6 +6163,8 @@ v8_source_set("v8_heap_base") { + sources += [ "src/heap/base/asm/loong64/push_registers_asm.cc" ] + } else if (current_cpu == "riscv64" || current_cpu == "riscv32") { + sources += [ "src/heap/base/asm/riscv/push_registers_asm.cc" ] ++ } else if (current_cpu == "sw_64") { ++ sources += [ "src/heap/base/asm/sw64/push_registers_asm.cc" ] + } + } else if (is_win) { + if (current_cpu == "x64") { +diff --git a/deps/v8/gni/snapshot_toolchain.gni b/deps/v8/gni/snapshot_toolchain.gni +index c7faa8ca..e87c5fea 100644 +--- a/deps/v8/gni/snapshot_toolchain.gni ++++ b/deps/v8/gni/snapshot_toolchain.gni +@@ -74,6 +74,8 @@ if (v8_snapshot_toolchain == "") { + # Cross-build from arm64 to intel (likely on an Apple Silicon mac). + v8_snapshot_toolchain = + "//build/toolchain/${host_os}:clang_arm64_v8_$v8_current_cpu" ++ } else if ( host_cpu == "x64" && target_cpu == "sw_64") { ++ v8_snapshot_toolchain = "//build/toolchain/linux:gcc_x64_cross" + } else if (host_cpu == "x64") { + # This is a cross-compile from an x64 host to either a non-Intel target + # cpu or to 32-bit x86 on a different target OS. +diff --git a/deps/v8/include/v8-unwinder-state.h b/deps/v8/include/v8-unwinder-state.h +index 18bb410d..30c7636d 100644 +--- a/deps/v8/include/v8-unwinder-state.h ++++ b/deps/v8/include/v8-unwinder-state.h +@@ -20,7 +20,7 @@ struct CalleeSavedRegisters { + #elif V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_ARM64 || \ + V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || \ + V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_LOONG64 || \ +- V8_TARGET_ARCH_RISCV32 ++ V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_SW64 + struct CalleeSavedRegisters {}; + #else + #error Target architecture was not detected as supported by v8 +diff --git a/deps/v8/include/v8config.h b/deps/v8/include/v8config.h +index bee208ff..26d99568 100644 +--- a/deps/v8/include/v8config.h ++++ b/deps/v8/include/v8config.h +@@ -749,6 +749,9 @@ V8 shared library set USING_V8_SHARED. + #elif defined(__mips64) + #define V8_HOST_ARCH_MIPS64 1 + #define V8_HOST_ARCH_64_BIT 1 ++#elif defined(__sw_64__) ++#define V8_HOST_ARCH_SW64 1 ++#define V8_HOST_ARCH_64_BIT 1 + #elif defined(__loongarch64) + #define V8_HOST_ARCH_LOONG64 1 + #define V8_HOST_ARCH_64_BIT 1 +@@ -788,7 +791,7 @@ V8 shared library set USING_V8_SHARED. + !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_MIPS64 && !V8_TARGET_ARCH_PPC && \ + !V8_TARGET_ARCH_PPC64 && !V8_TARGET_ARCH_S390 && \ + !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_LOONG64 && \ +- !V8_TARGET_ARCH_RISCV32 ++ !V8_TARGET_ARCH_RISCV32 && !V8_TARGET_ARCH_SW64 + #if defined(_M_X64) || defined(__x86_64__) + #define V8_TARGET_ARCH_X64 1 + #elif defined(_M_IX86) || defined(__i386__) +@@ -799,6 +802,8 @@ V8 shared library set USING_V8_SHARED. + #define V8_TARGET_ARCH_ARM 1 + #elif defined(__mips64) + #define V8_TARGET_ARCH_MIPS64 1 ++#elif defined(__sw_64__) ++#define V8_TARGET_ARCH_SW64 1 + #elif defined(__loongarch64) + #define V8_TARGET_ARCH_LOONG64 1 + #elif defined(_ARCH_PPC64) +@@ -842,6 +847,8 @@ V8 shared library set USING_V8_SHARED. + #define V8_TARGET_ARCH_64_BIT 1 + #elif V8_TARGET_ARCH_LOONG64 + #define V8_TARGET_ARCH_64_BIT 1 ++#elif V8_TARGET_ARCH_SW64 ++#define V8_TARGET_ARCH_64_BIT 1 + #elif V8_TARGET_ARCH_PPC + #define V8_TARGET_ARCH_32_BIT 1 + #elif V8_TARGET_ARCH_PPC64 +@@ -889,6 +896,9 @@ V8 shared library set USING_V8_SHARED. + #endif + #if (V8_TARGET_ARCH_LOONG64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_LOONG64)) + #error Target architecture loong64 is only supported on loong64 and x64 host ++#if (V8_TARGET_ARCH_SW64 && !(V8_HOST_ARCH_X64 || V8_HOST_ARCH_SW64)) ++#error Target architecture sw64 is only supported on sw64 and x64 host ++#endif + #endif + + // Determine architecture endianness. +@@ -902,6 +912,8 @@ V8 shared library set USING_V8_SHARED. + #define V8_TARGET_LITTLE_ENDIAN 1 + #elif V8_TARGET_ARCH_LOONG64 + #define V8_TARGET_LITTLE_ENDIAN 1 ++#elif V8_TARGET_ARCH_SW64 ++#define V8_TARGET_LITTLE_ENDIAN 1 + #elif V8_TARGET_ARCH_MIPS64 + #if defined(__MIPSEB__) || defined(V8_TARGET_ARCH_MIPS64_BE) + #define V8_TARGET_BIG_ENDIAN 1 +diff --git a/deps/v8/infra/mb/mb_config.pyl b/deps/v8/infra/mb/mb_config.pyl +index 41e5ed04..d4b40af9 100644 +--- a/deps/v8/infra/mb/mb_config.pyl ++++ b/deps/v8/infra/mb/mb_config.pyl +@@ -37,6 +37,12 @@ + 'riscv64.debug.sim': 'default_debug_riscv64_sim', + 'riscv64.optdebug.sim': 'default_optdebug_riscv64_sim', + 'riscv64.release.sim': 'default_release_riscv64_sim', ++ 'sw_64.debug': 'default_debug_sw64', ++ 'sw_64.optdebug': 'default_optdebug_sw64', ++ 'sw_64.release': 'default_release_sw64', ++ 'sw_64.debug.sim': 'default_debug_sw64_sim', ++ 'sw_64.optdebug.sim': 'default_optdebug_sw64_sim', ++ 'sw_64.release.sim': 'default_release_sw64_sim', + 's390x.debug': 'default_debug_s390x', + 's390x.optdebug': 'default_optdebug_s390x', + 's390x.release': 'default_release_s390x', +@@ -216,6 +222,8 @@ + # RISC-V + 'V8 Linux - riscv32 - sim - builder': 'release_simulate_riscv32', + 'V8 Linux - riscv64 - sim - builder': 'release_simulate_riscv64', ++ # SW64 ++ 'V8 Linux - sw_64 - sim - builder': 'release_simulate_sw64', + # Loongson + 'V8 Linux - loong64 - sim - builder': 'release_simulate_loong64', + }, +@@ -272,6 +280,7 @@ + 'v8_linux64_msan_compile_rel': 'release_simulate_arm64_msan_minimal_symbols', + 'v8_linux_riscv32_compile_rel': 'release_simulate_riscv32', + 'v8_linux64_riscv64_compile_rel': 'release_simulate_riscv64', ++ 'v8_linux64_sw64_compile_rel': 'release_simulate_sw64', + 'v8_linux64_tsan_compile_rel': 'release_x64_tsan_minimal_symbols', + 'v8_linux64_tsan_compile_dbg': 'debug_x64_tsan_minimal_symbols', + 'v8_linux64_tsan_no_cm_compile_rel': 'release_x64_tsan_no_cm', +@@ -363,6 +372,18 @@ + 'debug', 'simulate_riscv64', 'v8_enable_slow_dchecks'], + 'default_release_riscv64_sim': [ + 'release', 'simulate_riscv64'], ++ 'default_debug_sw64': [ ++ 'debug', 'sw_64', 'gcc', 'v8_enable_slow_dchecks', 'v8_full_debug'], ++ 'default_optdebug_sw64': [ ++ 'debug', 'sw_64', 'gcc', 'v8_enable_slow_dchecks'], ++ 'default_release_sw64': [ ++ 'release', 'sw_64', 'gcc'], ++ 'default_debug_sw64_sim': [ ++ 'debug', 'simulate_sw64', 'gcc', 'v8_enable_slow_dchecks', 'v8_full_debug'], ++ 'default_optdebug_sw64_sim': [ ++ 'debug', 'simulate_sw64', 'gcc', 'v8_enable_slow_dchecks'], ++ 'default_release_sw64_sim': [ ++ 'release', 'simulate_sw64', 'gcc'], + 'default_debug_ppc64': [ + 'debug', 'ppc64', 'gcc', 'v8_enable_slow_dchecks', 'v8_full_debug'], + 'default_optdebug_ppc64': [ +@@ -457,6 +478,8 @@ + 'release_bot', 'simulate_riscv32'], + 'release_simulate_riscv64': [ + 'release_bot', 'simulate_riscv64'], ++ 'release_simulate_sw64': [ ++ 'release_bot', 'simulate_sw64'], + 'release_simulate_s390x': [ + 'release_bot', 'simulate_s390x'], + +@@ -950,6 +973,10 @@ + 'gn_args': 'target_cpu="x64" v8_target_cpu="riscv64"', + }, + ++ 'simulate_sw64': { ++ 'gn_args': 'target_cpu="x64" v8_target_cpu="sw_64"', ++ }, ++ + 'simulate_s390x': { + 'gn_args': 'target_cpu="x64" v8_target_cpu="s390x"', + }, +@@ -1103,6 +1130,10 @@ + 'gn_args': 'target_cpu="riscv64" use_custom_libcxx=false', + }, + ++ 'sw_64': { ++ 'gn_args': 'target_cpu="sw_64" use_custom_libcxx=false', ++ }, ++ + 'x64': { + 'gn_args': 'target_cpu="x64"', + }, +diff --git a/deps/v8/src/base/build_config.h b/deps/v8/src/base/build_config.h +index 67333023..e14cd76b 100644 +--- a/deps/v8/src/base/build_config.h ++++ b/deps/v8/src/base/build_config.h +@@ -72,7 +72,7 @@ constexpr int kPageSizeBits = 18; + // to that size needs to be individually protectable via + // {base::OS::SetPermission} and friends. + #if (defined(V8_OS_MACOS) && defined(V8_HOST_ARCH_ARM64)) || \ +- defined(V8_HOST_ARCH_LOONG64) || defined(V8_HOST_ARCH_MIPS64) || \ ++ defined(V8_HOST_ARCH_LOONG64) || defined(V8_HOST_ARCH_MIPS64) || defined(V8_HOST_ARCH_SW64) ||\ + defined(V8_OS_IOS) + // MacOS & iOS on arm64 uses 16kB pages. + // LOONG64 and MIPS64 also use 16kB pages. +diff --git a/deps/v8/src/base/cpu.cc b/deps/v8/src/base/cpu.cc +index fdef3c66..d3a58128 100644 +--- a/deps/v8/src/base/cpu.cc ++++ b/deps/v8/src/base/cpu.cc +@@ -90,7 +90,7 @@ static V8_INLINE void __cpuid(int cpu_info[4], int info_type) { + #endif // !V8_LIBC_MSVCRT + + #elif V8_HOST_ARCH_ARM || V8_HOST_ARCH_ARM64 || V8_HOST_ARCH_MIPS64 || \ +- V8_HOST_ARCH_RISCV64 ++ V8_HOST_ARCH_RISCV64 || V8_HOST_ARCH_SW64 + + #if V8_OS_LINUX + +@@ -410,6 +410,7 @@ CPU::CPU() + has_non_stop_time_stamp_counter_(false), + is_running_in_vm_(false), + has_msa_(false), ++ has_swsa_(false), + has_rvv_(false) { + memcpy(vendor_, "Unknown", 8); + +@@ -703,7 +704,6 @@ CPU::CPU() + #endif // V8_OS_LINUX + + #elif V8_HOST_ARCH_MIPS64 +- + // Simple detection of FPU at runtime for Linux. + // It is based on /proc/cpuinfo, which reveals hardware configuration + // to user-space applications. According to MIPS (early 2010), no similar +@@ -717,6 +717,21 @@ CPU::CPU() + delete[] cpu_model; + delete[] ASEs; + ++#elif V8_HOST_ARCH_SW64 ++ ++ // Simple detection of FPU at runtime for Linux. ++ // It is based on /proc/cpuinfo, which reveals hardware configuration ++ // to user-space applications. ++ CPUInfo cpu_info; ++ char* cpu_model = cpu_info.ExtractField("model name"); ++ has_fpu_ = HasListItem(cpu_model, "FPU"); ++ char* sw_model_name = cpu_info.ExtractField("model name"); ++ use_sw8a_ = HasListItem(sw_model_name, "WX-H8000"); ++ char* ASEs = cpu_info.ExtractField("ASEs implemented"); ++ has_swsa_ = HasListItem(ASEs, "swsa"); ++ delete[] cpu_model; ++ delete[] ASEs; ++ + #elif V8_HOST_ARCH_ARM64 + #ifdef V8_OS_WIN + // Windows makes high-resolution thread timing information available in +diff --git a/deps/v8/src/base/cpu.h b/deps/v8/src/base/cpu.h +index ff227126..ad56441b 100644 +--- a/deps/v8/src/base/cpu.h ++++ b/deps/v8/src/base/cpu.h +@@ -129,10 +129,14 @@ class V8_BASE_EXPORT CPU final { + // mips features + bool is_fp64_mode() const { return is_fp64_mode_; } + bool has_msa() const { return has_msa_; } ++ bool has_swsa() const { return has_swsa_; } + + // riscv features + bool has_rvv() const { return has_rvv_; } + ++ // SW64 features ++ bool use_sw8a() const { return use_sw8a_; } ++ + private: + #if defined(V8_OS_STARBOARD) + bool StarboardDetectCPU(); +@@ -184,7 +188,9 @@ class V8_BASE_EXPORT CPU final { + bool has_non_stop_time_stamp_counter_; + bool is_running_in_vm_; + bool has_msa_; ++ bool has_swsa_; + bool has_rvv_; ++ bool use_sw8a_; + }; + + } // namespace base +diff --git a/deps/v8/src/base/platform/platform-posix.cc b/deps/v8/src/base/platform/platform-posix.cc +index 4b6e6ad8..ada5ce41 100644 +--- a/deps/v8/src/base/platform/platform-posix.cc ++++ b/deps/v8/src/base/platform/platform-posix.cc +@@ -371,6 +371,9 @@ void* OS::GetRandomMmapAddr() { + // 42 bits of virtual addressing. Truncate to 40 bits to allow kernel chance + // to fulfill request. + raw_addr &= uint64_t{0xFFFFFF0000}; ++#elif V8_TARGET_ARCH_SW64 ++ raw_addr &= uint64_t{0x07FF0000}; ++ raw_addr += 0x20000000000; + #else + raw_addr &= 0x3FFFF000; + +@@ -706,6 +709,8 @@ void OS::DebugBreak() { + asm("break"); + #elif V8_HOST_ARCH_LOONG64 + asm("break 0"); ++#elif V8_HOST_ARCH_SW64 ++ asm("sys_call 0x80"); + #elif V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64 + asm("twge 2,2"); + #elif V8_HOST_ARCH_IA32 +diff --git a/deps/v8/src/baseline/baseline-assembler-inl.h b/deps/v8/src/baseline/baseline-assembler-inl.h +index 71c4e7a5..099076d8 100644 +--- a/deps/v8/src/baseline/baseline-assembler-inl.h ++++ b/deps/v8/src/baseline/baseline-assembler-inl.h +@@ -38,6 +38,8 @@ + #include "src/baseline/mips64/baseline-assembler-mips64-inl.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/baseline/loong64/baseline-assembler-loong64-inl.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/baseline/sw64/baseline-assembler-sw64-inl.h" + #else + #error Unsupported target architecture. + #endif +diff --git a/deps/v8/src/baseline/baseline-compiler.cc b/deps/v8/src/baseline/baseline-compiler.cc +index 185d5f49..19acb678 100644 +--- a/deps/v8/src/baseline/baseline-compiler.cc ++++ b/deps/v8/src/baseline/baseline-compiler.cc +@@ -55,6 +55,8 @@ + #include "src/baseline/mips64/baseline-compiler-mips64-inl.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/baseline/loong64/baseline-compiler-loong64-inl.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/baseline/sw64/baseline-compiler-sw64-inl.h" + #else + #error Unsupported target architecture. + #endif +diff --git a/deps/v8/src/baseline/sw64/baseline-assembler-sw64-inl.h b/deps/v8/src/baseline/sw64/baseline-assembler-sw64-inl.h +new file mode 100644 +index 00000000..16a86021 +--- /dev/null ++++ b/deps/v8/src/baseline/sw64/baseline-assembler-sw64-inl.h +@@ -0,0 +1,565 @@ ++// Copyright 2021 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_BASELINE_SW64_BASELINE_ASSEMBLER_SW64_INL_H_ ++#define V8_BASELINE_SW64_BASELINE_ASSEMBLER_SW64_INL_H_ ++ ++#include "src/baseline/baseline-assembler.h" ++#include "src/codegen/interface-descriptors.h" ++#include "src/codegen/sw64/assembler-sw64-inl.h" ++#include "src/objects/literal-objects-inl.h" ++ ++namespace v8 { ++namespace internal { ++namespace baseline { ++ ++class BaselineAssembler::ScratchRegisterScope { ++ public: ++ explicit ScratchRegisterScope(BaselineAssembler* assembler) ++ : assembler_(assembler), ++ prev_scope_(assembler->scratch_register_scope_), ++ wrapped_scope_(assembler->masm()) { ++ if (!assembler_->scratch_register_scope_) { ++ // If we haven't opened a scratch scope yet, for the first one add a ++ // couple of extra registers. ++ wrapped_scope_.Include({t0, t1, t2, t3}); ++ } ++ assembler_->scratch_register_scope_ = this; ++ } ++ ~ScratchRegisterScope() { assembler_->scratch_register_scope_ = prev_scope_; } ++ ++ Register AcquireScratch() { return wrapped_scope_.Acquire(); } ++ ++ private: ++ BaselineAssembler* assembler_; ++ ScratchRegisterScope* prev_scope_; ++ UseScratchRegisterScope wrapped_scope_; ++}; ++ ++namespace detail { ++ ++#ifdef DEBUG ++inline bool Clobbers(Register target, MemOperand op) { ++ return op.is_reg() && op.rm() == target; ++} ++#endif ++ ++} // namespace detail ++ ++#define __ masm_-> ++ ++MemOperand BaselineAssembler::RegisterFrameOperand( ++ interpreter::Register interpreter_register) { ++ return MemOperand(fp, interpreter_register.ToOperand() * kSystemPointerSize); ++} ++void BaselineAssembler::RegisterFrameAddress( ++ interpreter::Register interpreter_register, Register rscratch) { ++ return __ Addl(rscratch, fp, ++ interpreter_register.ToOperand() * kSystemPointerSize); ++} ++MemOperand BaselineAssembler::FeedbackVectorOperand() { ++ return MemOperand(fp, BaselineFrameConstants::kFeedbackVectorFromFp); ++} ++ ++void BaselineAssembler::Bind(Label* label) { __ bind(label); } ++ ++void BaselineAssembler::JumpTarget() { ++ // NOP. ++} ++void BaselineAssembler::Jump(Label* target, Label::Distance distance) { ++ __ Branch(target); ++} ++void BaselineAssembler::JumpIfRoot(Register value, RootIndex index, ++ Label* target, Label::Distance) { ++ __ JumpIfRoot(value, index, target); ++} ++void BaselineAssembler::JumpIfNotRoot(Register value, RootIndex index, ++ Label* target, Label::Distance) { ++ __ JumpIfNotRoot(value, index, target); ++} ++void BaselineAssembler::JumpIfSmi(Register value, Label* target, ++ Label::Distance) { ++ __ JumpIfSmi(value, target); ++} ++void BaselineAssembler::JumpIfNotSmi(Register value, Label* target, ++ Label::Distance) { ++ __ JumpIfNotSmi(value, target); ++} ++void BaselineAssembler::JumpIfImmediate(Condition cc, Register left, int right, ++ Label* target, ++ Label::Distance distance) { ++ JumpIf(cc, left, Operand(right), target, distance); ++} ++ ++void BaselineAssembler::TestAndBranch(Register value, int mask, Condition cc, ++ Label* target, Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ And(scratch, value, Operand(mask)); ++ __ Branch(target, cc, scratch, Operand(zero_reg)); ++} ++ ++void BaselineAssembler::JumpIf(Condition cc, Register lhs, const Operand& rhs, ++ Label* target, Label::Distance) { ++ __ Branch(target, cc, lhs, Operand(rhs)); ++} ++void BaselineAssembler::JumpIfObjectTypeFast(Condition cc, Register object, ++ InstanceType instance_type, ++ Label* target, ++ Label::Distance distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ JumpIfObjectType(cc, object, instance_type, scratch, target, distance); ++} ++void BaselineAssembler::JumpIfObjectType(Condition cc, Register object, ++ InstanceType instance_type, ++ Register map, Label* target, ++ Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register type = temps.AcquireScratch(); ++ __ GetObjectType(object, map, type); ++ __ Branch(target, cc, type, Operand(instance_type)); ++} ++void BaselineAssembler::JumpIfInstanceType(Condition cc, Register map, ++ InstanceType instance_type, ++ Label* target, Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register type = temps.AcquireScratch(); ++ if (v8_flags.debug_code) { ++ __ AssertNotSmi(map); ++ __ GetObjectType(map, type, type); ++ __ Assert(eq, AbortReason::kUnexpectedValue, type, Operand(MAP_TYPE)); ++ } ++ __ Ldl(type, FieldMemOperand(map, Map::kInstanceTypeOffset)); ++ __ Branch(target, cc, type, Operand(instance_type)); ++} ++void BaselineAssembler::JumpIfPointer(Condition cc, Register value, ++ MemOperand operand, Label* target, ++ Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ Ldl(scratch, operand); ++ __ Branch(target, cc, value, Operand(scratch)); ++} ++void BaselineAssembler::JumpIfSmi(Condition cc, Register value, Smi smi, ++ Label* target, Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ li(scratch, Operand(smi)); ++ __ SmiUntag(scratch); ++ __ Branch(target, cc, value, Operand(scratch)); ++} ++void BaselineAssembler::JumpIfSmi(Condition cc, Register lhs, Register rhs, ++ Label* target, Label::Distance) { ++ __ AssertSmi(lhs); ++ __ AssertSmi(rhs); ++ __ Branch(target, cc, lhs, Operand(rhs)); ++} ++void BaselineAssembler::JumpIfTagged(Condition cc, Register value, ++ MemOperand operand, Label* target, ++ Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ Ldl(scratch, operand); ++ __ Branch(target, cc, value, Operand(scratch)); ++} ++void BaselineAssembler::JumpIfTagged(Condition cc, MemOperand operand, ++ Register value, Label* target, ++ Label::Distance) { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ Ldl(scratch, operand); ++ __ Branch(target, cc, scratch, Operand(value)); ++} ++void BaselineAssembler::JumpIfByte(Condition cc, Register value, int32_t byte, ++ Label* target, Label::Distance) { ++ __ Branch(target, cc, value, Operand(byte)); ++} ++ ++void BaselineAssembler::Move(interpreter::Register output, Register source) { ++ Move(RegisterFrameOperand(output), source); ++} ++void BaselineAssembler::Move(Register output, TaggedIndex value) { ++ __ li(output, Operand(value.ptr())); ++} ++void BaselineAssembler::Move(MemOperand output, Register source) { ++ __ Stl(source, output); ++} ++void BaselineAssembler::Move(Register output, ExternalReference reference) { ++ __ li(output, Operand(reference)); ++} ++void BaselineAssembler::Move(Register output, Handle value) { ++ __ li(output, Operand(value)); ++} ++void BaselineAssembler::Move(Register output, int32_t value) { ++ __ li(output, Operand(value)); ++} ++void BaselineAssembler::MoveMaybeSmi(Register output, Register source) { ++ __ Move(output, source); ++} ++void BaselineAssembler::MoveSmi(Register output, Register source) { ++ __ Move(output, source); ++} ++ ++namespace detail { ++ ++template ++inline Register ToRegister(BaselineAssembler* basm, ++ BaselineAssembler::ScratchRegisterScope* scope, ++ Arg arg) { ++ Register reg = scope->AcquireScratch(); ++ basm->Move(reg, arg); ++ return reg; ++} ++inline Register ToRegister(BaselineAssembler* basm, ++ BaselineAssembler::ScratchRegisterScope* scope, ++ Register reg) { ++ return reg; ++} ++ ++template ++struct PushAllHelper; ++template <> ++struct PushAllHelper<> { ++ static int Push(BaselineAssembler* basm) { return 0; } ++ static int PushReverse(BaselineAssembler* basm) { return 0; } ++}; ++// TODO(ishell): try to pack sequence of pushes into one instruction by ++// looking at regiser codes. For example, Push(r1, r2, r5, r0, r3, r4) ++// could be generated as two pushes: Push(r1, r2, r5) and Push(r0, r3, r4). ++template ++struct PushAllHelper { ++ static int Push(BaselineAssembler* basm, Arg arg) { ++ BaselineAssembler::ScratchRegisterScope scope(basm); ++ basm->masm()->Push(ToRegister(basm, &scope, arg)); ++ return 1; ++ } ++ static int PushReverse(BaselineAssembler* basm, Arg arg) { ++ return Push(basm, arg); ++ } ++}; ++// TODO(ishell): try to pack sequence of pushes into one instruction by ++// looking at regiser codes. For example, Push(r1, r2, r5, r0, r3, r4) ++// could be generated as two pushes: Push(r1, r2, r5) and Push(r0, r3, r4). ++template ++struct PushAllHelper { ++ static int Push(BaselineAssembler* basm, Arg arg, Args... args) { ++ PushAllHelper::Push(basm, arg); ++ return 1 + PushAllHelper::Push(basm, args...); ++ } ++ static int PushReverse(BaselineAssembler* basm, Arg arg, Args... args) { ++ int nargs = PushAllHelper::PushReverse(basm, args...); ++ PushAllHelper::Push(basm, arg); ++ return nargs + 1; ++ } ++}; ++template <> ++struct PushAllHelper { ++ static int Push(BaselineAssembler* basm, interpreter::RegisterList list) { ++ for (int reg_index = 0; reg_index < list.register_count(); ++reg_index) { ++ PushAllHelper::Push(basm, list[reg_index]); ++ } ++ return list.register_count(); ++ } ++ static int PushReverse(BaselineAssembler* basm, ++ interpreter::RegisterList list) { ++ for (int reg_index = list.register_count() - 1; reg_index >= 0; ++ --reg_index) { ++ PushAllHelper::Push(basm, list[reg_index]); ++ } ++ return list.register_count(); ++ } ++}; ++ ++template ++struct PopAllHelper; ++template <> ++struct PopAllHelper<> { ++ static void Pop(BaselineAssembler* basm) {} ++}; ++// TODO(ishell): try to pack sequence of pops into one instruction by ++// looking at regiser codes. For example, Pop(r1, r2, r5, r0, r3, r4) ++// could be generated as two pops: Pop(r1, r2, r5) and Pop(r0, r3, r4). ++template <> ++struct PopAllHelper { ++ static void Pop(BaselineAssembler* basm, Register reg) { ++ basm->masm()->Pop(reg); ++ } ++}; ++template ++struct PopAllHelper { ++ static void Pop(BaselineAssembler* basm, Register reg, T... tail) { ++ PopAllHelper::Pop(basm, reg); ++ PopAllHelper::Pop(basm, tail...); ++ } ++}; ++ ++} // namespace detail ++ ++template ++int BaselineAssembler::Push(T... vals) { ++ return detail::PushAllHelper::Push(this, vals...); ++} ++ ++template ++void BaselineAssembler::PushReverse(T... vals) { ++ detail::PushAllHelper::PushReverse(this, vals...); ++} ++ ++template ++void BaselineAssembler::Pop(T... registers) { ++ detail::PopAllHelper::Pop(this, registers...); ++} ++ ++void BaselineAssembler::LoadTaggedField(Register output, Register source, ++ int offset) { ++ __ Ldl(output, FieldMemOperand(source, offset)); ++} ++void BaselineAssembler::LoadTaggedSignedField(Register output, Register source, ++ int offset) { ++ __ Ldl(output, FieldMemOperand(source, offset)); ++} ++void BaselineAssembler::LoadTaggedSignedFieldAndUntag(Register output, ++ Register source, ++ int offset) { ++ LoadTaggedSignedField(output, source, offset); ++ SmiUntag(output); ++} ++void BaselineAssembler::LoadWord16FieldZeroExtend(Register output, ++ Register source, int offset) { ++ __ Ldhu(output, FieldMemOperand(source, offset)); ++} ++void BaselineAssembler::LoadWord8Field(Register output, Register source, ++ int offset) { ++ __ Ldb(output, FieldMemOperand(source, offset)); ++} ++void BaselineAssembler::StoreTaggedSignedField(Register target, int offset, ++ Smi value) { ++ ASM_CODE_COMMENT(masm_); ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ li(scratch, Operand(value)); ++ __ Stl(scratch, FieldMemOperand(target, offset)); ++} ++void BaselineAssembler::StoreTaggedFieldWithWriteBarrier(Register target, ++ int offset, ++ Register value) { ++ ASM_CODE_COMMENT(masm_); ++ __ Stl(value, FieldMemOperand(target, offset)); ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ RecordWriteField(target, offset, value, scratch, kRAHasNotBeenSaved, ++ SaveFPRegsMode::kIgnore); ++} ++void BaselineAssembler::StoreTaggedFieldNoWriteBarrier(Register target, ++ int offset, ++ Register value) { ++ __ Stl(value, FieldMemOperand(target, offset)); ++} ++ ++void BaselineAssembler::TryLoadOptimizedOsrCode(Register scratch_and_result, ++ Register feedback_vector, ++ FeedbackSlot slot, ++ Label* on_result, ++ Label::Distance) { ++ Label fallthrough; ++ LoadTaggedField(scratch_and_result, feedback_vector, ++ FeedbackVector::OffsetOfElementAt(slot.ToInt())); ++ __ LoadWeakValue(scratch_and_result, scratch_and_result, &fallthrough); ++ // Is it marked_for_deoptimization? If yes, clear the slot. ++ { ++ ScratchRegisterScope temps(this); ++ Register scratch = temps.AcquireScratch(); ++ __ TestCodeIsMarkedForDeoptimizationAndJump(scratch_and_result, scratch, eq, ++ on_result); ++ __ li(scratch, __ ClearedValue()); ++ StoreTaggedFieldNoWriteBarrier( ++ feedback_vector, FeedbackVector::OffsetOfElementAt(slot.ToInt()), ++ scratch); ++ } ++ __ bind(&fallthrough); ++ Move(scratch_and_result, 0); ++} ++ ++void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded( ++ int32_t weight, Label* skip_interrupt_label) { ++ ASM_CODE_COMMENT(masm_); ++ ScratchRegisterScope scratch_scope(this); ++ Register feedback_cell = scratch_scope.AcquireScratch(); ++ LoadFunction(feedback_cell); ++ LoadTaggedField(feedback_cell, feedback_cell, ++ JSFunction::kFeedbackCellOffset); ++ ++ Register interrupt_budget = scratch_scope.AcquireScratch(); ++ __ Ldw(interrupt_budget, ++ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); ++ __ Addw(interrupt_budget, interrupt_budget, weight); ++ __ Stw(interrupt_budget, ++ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); ++ if (skip_interrupt_label) { ++ DCHECK_LT(weight, 0); ++ __ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(zero_reg)); ++ } ++} ++void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded( ++ Register weight, Label* skip_interrupt_label) { ++ ASM_CODE_COMMENT(masm_); ++ ScratchRegisterScope scratch_scope(this); ++ Register feedback_cell = scratch_scope.AcquireScratch(); ++ LoadFunction(feedback_cell); ++ LoadTaggedField(feedback_cell, feedback_cell, ++ JSFunction::kFeedbackCellOffset); ++ ++ Register interrupt_budget = scratch_scope.AcquireScratch(); ++ __ Ldw(interrupt_budget, ++ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); ++ __ Addw(interrupt_budget, interrupt_budget, weight); ++ __ Stw(interrupt_budget, ++ FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); ++ if (skip_interrupt_label) ++ __ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(zero_reg)); ++} ++ ++void BaselineAssembler::LdaContextSlot(Register context, uint32_t index, ++ uint32_t depth) { ++ for (; depth > 0; --depth) { ++ LoadTaggedField(context, context, Context::kPreviousOffset); ++ } ++ LoadTaggedField(kInterpreterAccumulatorRegister, context, ++ Context::OffsetOfElementAt(index)); ++} ++ ++void BaselineAssembler::StaContextSlot(Register context, Register value, ++ uint32_t index, uint32_t depth) { ++ for (; depth > 0; --depth) { ++ LoadTaggedField(context, context, Context::kPreviousOffset); ++ } ++ StoreTaggedFieldWithWriteBarrier(context, Context::OffsetOfElementAt(index), ++ value); ++} ++ ++void BaselineAssembler::LdaModuleVariable(Register context, int cell_index, ++ uint32_t depth) { ++ for (; depth > 0; --depth) { ++ LoadTaggedField(context, context, Context::kPreviousOffset); ++ } ++ LoadTaggedField(context, context, Context::kExtensionOffset); ++ if (cell_index > 0) { ++ LoadTaggedField(context, context, SourceTextModule::kRegularExportsOffset); ++ // The actual array index is (cell_index - 1). ++ cell_index -= 1; ++ } else { ++ LoadTaggedField(context, context, SourceTextModule::kRegularImportsOffset); ++ // The actual array index is (-cell_index - 1). ++ cell_index = -cell_index - 1; ++ } ++ LoadFixedArrayElement(context, context, cell_index); ++ LoadTaggedField(kInterpreterAccumulatorRegister, context, Cell::kValueOffset); ++} ++ ++void BaselineAssembler::StaModuleVariable(Register context, Register value, ++ int cell_index, uint32_t depth) { ++ for (; depth > 0; --depth) { ++ LoadTaggedField(context, context, Context::kPreviousOffset); ++ } ++ LoadTaggedField(context, context, Context::kExtensionOffset); ++ LoadTaggedField(context, context, SourceTextModule::kRegularExportsOffset); ++ ++ // The actual array index is (cell_index - 1). ++ cell_index -= 1; ++ LoadFixedArrayElement(context, context, cell_index); ++ StoreTaggedFieldWithWriteBarrier(context, Cell::kValueOffset, value); ++} ++ ++void BaselineAssembler::AddSmi(Register lhs, Smi rhs) { ++ __ Addl(lhs, lhs, Operand(rhs)); ++} ++ ++void BaselineAssembler::Word32And(Register output, Register lhs, int rhs) { ++ __ And(output, lhs, Operand(rhs)); ++} ++ ++void BaselineAssembler::Switch(Register reg, int case_value_base, ++ Label** labels, int num_labels) { ++ ASM_CODE_COMMENT(masm_); ++ Label fallthrough; ++ if (case_value_base != 0) { ++ __ Subl(reg, reg, Operand(case_value_base)); ++ } ++ ++ __ Branch(&fallthrough, kUnsignedGreaterThanEqual, reg, Operand(num_labels)); ++ ++ __ GenerateSwitchTable(reg, num_labels, ++ [labels](size_t i) { return labels[i]; }); ++ ++ __ bind(&fallthrough); ++} ++ ++#undef __ ++ ++#define __ basm. ++ ++void BaselineAssembler::EmitReturn(MacroAssembler* masm) { ++ ASM_CODE_COMMENT(masm); ++ BaselineAssembler basm(masm); ++ ++ Register weight = BaselineLeaveFrameDescriptor::WeightRegister(); ++ Register params_size = BaselineLeaveFrameDescriptor::ParamsSizeRegister(); ++ ++ { ++ ASM_CODE_COMMENT_STRING(masm, "Update Interrupt Budget"); ++ ++ Label skip_interrupt_label; ++ __ AddToInterruptBudgetAndJumpIfNotExceeded(weight, &skip_interrupt_label); ++ __ masm()->SmiTag(params_size); ++ __ masm()->Push(params_size, kInterpreterAccumulatorRegister); ++ ++ __ LoadContext(kContextRegister); ++ __ LoadFunction(kJSFunctionRegister); ++ __ masm()->Push(kJSFunctionRegister); ++ __ CallRuntime(Runtime::kBytecodeBudgetInterrupt_Sparkplug, 1); ++ ++ __ masm()->Pop(params_size, kInterpreterAccumulatorRegister); ++ __ masm()->SmiUntag(params_size); ++ ++ __ Bind(&skip_interrupt_label); ++ } ++ ++ BaselineAssembler::ScratchRegisterScope temps(&basm); ++ Register actual_params_size = temps.AcquireScratch(); ++ // Compute the size of the actual parameters + receiver (in bytes). ++ __ Move(actual_params_size, ++ MemOperand(fp, StandardFrameConstants::kArgCOffset)); ++ ++ // If actual is bigger than formal, then we should use it to free up the stack ++ // arguments. ++ Label corrected_args_count; ++ __ masm()->Branch(&corrected_args_count, ge, params_size, ++ Operand(actual_params_size)); ++ __ masm()->Move(params_size, actual_params_size); ++ __ Bind(&corrected_args_count); ++ ++ // Leave the frame (also dropping the register file). ++ __ masm()->LeaveFrame(StackFrame::BASELINE); ++ ++ // Drop receiver + arguments. ++ __ masm()->DropArguments(params_size, MacroAssembler::kCountIsInteger, ++ MacroAssembler::kCountIncludesReceiver); ++ ++ __ masm()->Ret(); ++} ++ ++#undef __ ++ ++inline void EnsureAccumulatorPreservedScope::AssertEqualToAccumulator( ++ Register reg) { ++ assembler_->masm()->Assert(eq, AbortReason::kAccumulatorClobbered, reg, ++ Operand(kInterpreterAccumulatorRegister)); ++} ++ ++} // namespace baseline ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_BASELINE_SW64_BASELINE_ASSEMBLER_SW64_INL_H_ +diff --git a/deps/v8/src/baseline/sw64/baseline-compiler-sw64-inl.h b/deps/v8/src/baseline/sw64/baseline-compiler-sw64-inl.h +new file mode 100644 +index 00000000..2fc3a7dc +--- /dev/null ++++ b/deps/v8/src/baseline/sw64/baseline-compiler-sw64-inl.h +@@ -0,0 +1,83 @@ ++// Copyright 2021 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_BASELINE_SW64_BASELINE_COMPILER_SW64_INL_H_ ++#define V8_BASELINE_SW64_BASELINE_COMPILER_SW64_INL_H_ ++ ++#include "src/base/logging.h" ++#include "src/baseline/baseline-compiler.h" ++ ++namespace v8 { ++namespace internal { ++namespace baseline { ++ ++#define __ basm_. ++ ++// A builtin call/jump mode that is used then short builtin calls feature is ++// not enabled. ++constexpr BuiltinCallJumpMode kFallbackBuiltinCallJumpModeForBaseline = ++ BuiltinCallJumpMode::kIndirect; ++ ++void BaselineCompiler::Prologue() { ++ ASM_CODE_COMMENT(&masm_); ++ __ masm()->EnterFrame(StackFrame::BASELINE); ++ DCHECK_EQ(kJSFunctionRegister, kJavaScriptCallTargetRegister); ++ int max_frame_size = ++ bytecode_->frame_size() + max_call_args_ * kSystemPointerSize; ++ CallBuiltin( ++ kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister, ++ max_frame_size, kJavaScriptCallNewTargetRegister, bytecode_); ++ ++ PrologueFillFrame(); ++} ++ ++void BaselineCompiler::PrologueFillFrame() { ++ ASM_CODE_COMMENT(&masm_); ++ // Inlined register frame fill ++ interpreter::Register new_target_or_generator_register = ++ bytecode_->incoming_new_target_or_generator_register(); ++ __ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue); ++ int register_count = bytecode_->register_count(); ++ // Magic value ++ const int kLoopUnrollSize = 8; ++ const int new_target_index = new_target_or_generator_register.index(); ++ const bool has_new_target = new_target_index != kMaxInt; ++ if (has_new_target) { ++ DCHECK_LE(new_target_index, register_count); ++ __ masm()->Addl(sp, sp, Operand(-(kPointerSize * new_target_index))); ++ for (int i = 0; i < new_target_index; i++) { ++ __ masm()->Stl(kInterpreterAccumulatorRegister, MemOperand(sp, i * 8)); ++ } ++ // Push new_target_or_generator. ++ __ Push(kJavaScriptCallNewTargetRegister); ++ register_count -= new_target_index + 1; ++ } ++ if (register_count < 2 * kLoopUnrollSize) { ++ // If the frame is small enough, just unroll the frame fill completely. ++ __ masm()->Addl(sp, sp, Operand(-(kPointerSize * register_count))); ++ for (int i = 0; i < register_count; ++i) { ++ __ masm()->Stl(kInterpreterAccumulatorRegister, MemOperand(sp, i * 8)); ++ } ++ } else { ++ __ masm()->Addl(sp, sp, Operand(-(kPointerSize * register_count))); ++ for (int i = 0; i < register_count; ++i) { ++ __ masm()->Stl(kInterpreterAccumulatorRegister, MemOperand(sp, i * 8)); ++ } ++ } ++} ++ ++void BaselineCompiler::VerifyFrameSize() { ++ ASM_CODE_COMMENT(&masm_); ++ __ masm()->Addl(kScratchReg, sp, ++ Operand(InterpreterFrameConstants::kFixedFrameSizeFromFp + ++ bytecode_->frame_size())); ++ __ masm()->Assert(eq, AbortReason::kUnexpectedStackPointer, kScratchReg, ++ Operand(fp)); ++} ++ ++} // namespace baseline ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_BASELINE_SW64_BASELINE_COMPILER_SW64_INL_H_ +diff --git a/deps/v8/src/builtins/builtins-sharedarraybuffer-gen.cc b/deps/v8/src/builtins/builtins-sharedarraybuffer-gen.cc +index c6b824ca..7efcff8e 100644 +--- a/deps/v8/src/builtins/builtins-sharedarraybuffer-gen.cc ++++ b/deps/v8/src/builtins/builtins-sharedarraybuffer-gen.cc +@@ -124,8 +124,8 @@ TNode SharedArrayBufferBuiltinsAssembler::ValidateAtomicAccess( + // 3. Let accessIndex be ? ToIndex(requestIndex). + TNode index_uintptr = ToIndex(context, index, &range_error); + +- // 4. Assert: accessIndex ≥ 0. +- // 5. If accessIndex ≥ length, throw a RangeError exception. ++ // 4. Assert: accessIndex â‰?0. ++ // 5. If accessIndex â‰?length, throw a RangeError exception. + Branch(UintPtrLessThan(index_uintptr, array_length), &done, &range_error); + + BIND(&unreachable); +@@ -406,7 +406,7 @@ TF_BUILTIN(AtomicsExchange, SharedArrayBufferBuiltinsAssembler) { + TNode index_word = + ValidateAtomicAccess(array, index_or_field_name, context); + +-#if V8_TARGET_ARCH_MIPS64 ++#if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_SW64 + TNode index_number = ChangeUintPtrToTagged(index_word); + Return(CallRuntime(Runtime::kAtomicsExchange, context, array, index_number, + value)); +@@ -541,7 +541,7 @@ TF_BUILTIN(AtomicsCompareExchange, SharedArrayBufferBuiltinsAssembler) { + // 2. Let i be ? ValidateAtomicAccess(typedArray, index). + TNode index_word = ValidateAtomicAccess(array, index, context); + +-#if V8_TARGET_ARCH_MIPS64 ++#if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_SW64 + TNode index_number = ChangeUintPtrToTagged(index_word); + Return(CallRuntime(Runtime::kAtomicsCompareExchange, context, array, + index_number, old_value, new_value)); +@@ -711,7 +711,7 @@ void SharedArrayBufferBuiltinsAssembler::AtomicBinopBuiltinCommon( + // 2. Let i be ? ValidateAtomicAccess(typedArray, index). + TNode index_word = ValidateAtomicAccess(array, index, context); + +-#if V8_TARGET_ARCH_MIPS64 ++#if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_SW64 + TNode index_number = ChangeUintPtrToTagged(index_word); + Return(CallRuntime(runtime_function, context, array, index_number, value)); + #else +diff --git a/deps/v8/src/builtins/sw64/builtins-sw64.cc b/deps/v8/src/builtins/sw64/builtins-sw64.cc +new file mode 100644 +index 00000000..c56e4edd +--- /dev/null ++++ b/deps/v8/src/builtins/sw64/builtins-sw64.cc +@@ -0,0 +1,3803 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/api/api-arguments.h" ++#include "src/codegen/code-factory.h" ++#include "src/codegen/interface-descriptors-inl.h" ++#include "src/debug/debug.h" ++#include "src/deoptimizer/deoptimizer.h" ++#include "src/execution/frame-constants.h" ++#include "src/execution/frames.h" ++#include "src/logging/counters.h" ++// For interpreter_entry_return_pc_offset. TODO(jkummerow): Drop. ++#include "src/codegen/macro-assembler-inl.h" ++#include "src/codegen/register-configuration.h" ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/heap/heap-inl.h" ++#include "src/objects/cell.h" ++#include "src/objects/foreign.h" ++#include "src/objects/heap-number.h" ++#include "src/objects/js-generator.h" ++#include "src/objects/objects-inl.h" ++#include "src/objects/smi.h" ++#include "src/runtime/runtime.h" ++ ++#if V8_ENABLE_WEBASSEMBLY ++#include "src/wasm/baseline/liftoff-assembler-defs.h" ++#include "src/wasm/wasm-linkage.h" ++#include "src/wasm/wasm-objects.h" ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++namespace v8 { ++namespace internal { ++ ++#define __ ACCESS_MASM(masm) ++ ++void Builtins::Generate_Adaptor(MacroAssembler* masm, Address address) { ++ __ li(kJavaScriptCallExtraArg1Register, ExternalReference::Create(address)); ++ __ Jump(BUILTIN_CODE(masm->isolate(), AdaptorWithBuiltinExitFrame), ++ RelocInfo::CODE_TARGET); ++} ++ ++namespace { ++ ++enum class ArgumentsElementType { ++ kRaw, // Push arguments as they are. ++ kHandle // Dereference arguments before pushing. ++}; ++ ++void Generate_PushArguments(MacroAssembler* masm, Register array, Register argc, ++ Register scratch, Register scratch2, ++ ArgumentsElementType element_type) { ++ DCHECK(!AreAliased(array, argc, scratch)); ++ Label loop, entry; ++ __ Subl(scratch, argc, Operand(kJSArgcReceiverSlots)); ++ __ Branch(&entry); ++ __ bind(&loop); ++ __ Lsal(scratch2, array, scratch, kSystemPointerSizeLog2); ++ __ Ldl(scratch2, MemOperand(scratch2)); ++ if (element_type == ArgumentsElementType::kHandle) { ++ __ Ldl(scratch2, MemOperand(scratch2)); ++ } ++ __ Push(scratch2); ++ __ bind(&entry); ++ __ Addl(scratch, scratch, Operand(-1)); ++ __ Branch(&loop, greater_equal, scratch, Operand(zero_reg)); ++} ++ ++void Generate_JSBuiltinsConstructStubHelper(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : number of arguments ++ // -- a1 : constructor function ++ // -- a3 : new target ++ // -- cp : context ++ // -- ra : return address ++ // -- sp[...]: constructor arguments ++ // ----------------------------------- ++ ++ // Enter a construct frame. ++ { ++ FrameScope scope(masm, StackFrame::CONSTRUCT); ++ ++ // Preserve the incoming parameters on the stack. ++ __ SmiTag(a0); ++ __ Push(cp, a0); ++ __ SmiUntag(a0); ++ ++ // Set up pointer to first argument (skip receiver). ++ __ Addl( ++ t2, fp, ++ Operand(StandardFrameConstants::kCallerSPOffset + kSystemPointerSize)); ++ // Copy arguments and receiver to the expression stack. ++ // t2: Pointer to start of arguments. ++ // a0: Number of arguments. ++ Generate_PushArguments(masm, t2, a0, t3, t0, ArgumentsElementType::kRaw); ++ // The receiver for the builtin/api call. ++ __ PushRoot(RootIndex::kTheHoleValue); ++ ++ // Call the function. ++ // a0: number of arguments (untagged) ++ // a1: constructor function ++ // a3: new target ++ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall); ++ ++ // Restore context from the frame. ++ __ Ldl(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset)); ++ // Restore smi-tagged arguments count from the frame. ++ __ Ldl(t3, MemOperand(fp, ConstructFrameConstants::kLengthOffset)); ++ // Leave construct frame. ++ } ++ ++ // Remove caller arguments from the stack and return. ++ __ DropArguments(t3, MacroAssembler::kCountIsSmi, ++ MacroAssembler::kCountIncludesReceiver, t3); ++ __ Ret(); ++} ++ ++} // namespace ++ ++// The construct stub for ES5 constructor functions and ES6 class constructors. ++void Builtins::Generate_JSConstructStubGeneric(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0: number of arguments (untagged) ++ // -- a1: constructor function ++ // -- a3: new target ++ // -- cp: context ++ // -- ra: return address ++ // -- sp[...]: constructor arguments ++ // ----------------------------------- ++ ++ // Enter a construct frame. ++ FrameScope scope(masm, StackFrame::MANUAL); ++ Label post_instantiation_deopt_entry, not_create_implicit_receiver; ++ __ EnterFrame(StackFrame::CONSTRUCT); ++ ++ // Preserve the incoming parameters on the stack. ++ __ SmiTag(a0); ++ __ Push(cp, a0, a1); ++ __ PushRoot(RootIndex::kUndefinedValue); ++ __ Push(a3); ++ ++ // ----------- S t a t e ------------- ++ // -- sp[0*kPointerSize]: new target ++ // -- sp[1*kPointerSize]: padding ++ // -- a1 and sp[2*kPointerSize]: constructor function ++ // -- sp[3*kPointerSize]: number of arguments (tagged) ++ // -- sp[4*kPointerSize]: context ++ // ----------------------------------- ++ ++ __ Ldl(t2, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldwu(t2, FieldMemOperand(t2, SharedFunctionInfo::kFlagsOffset)); ++ __ DecodeField(t2); ++ __ JumpIfIsInRange( ++ t2, static_cast(FunctionKind::kDefaultDerivedConstructor), ++ static_cast(FunctionKind::kDerivedConstructor), ++ ¬_create_implicit_receiver); ++ ++ // If not derived class constructor: Allocate the new receiver object. ++ __ Call(BUILTIN_CODE(masm->isolate(), FastNewObject), RelocInfo::CODE_TARGET); ++ __ Branch(&post_instantiation_deopt_entry); ++ ++ // Else: use TheHoleValue as receiver for constructor call ++ __ bind(¬_create_implicit_receiver); ++ __ LoadRoot(v0, RootIndex::kTheHoleValue); ++ ++ // ----------- S t a t e ------------- ++ // -- v0: receiver ++ // -- Slot 4 / sp[0*kPointerSize]: new target ++ // -- Slot 3 / sp[1*kPointerSize]: padding ++ // -- Slot 2 / sp[2*kPointerSize]: constructor function ++ // -- Slot 1 / sp[3*kPointerSize]: number of arguments (tagged) ++ // -- Slot 0 / sp[4*kPointerSize]: context ++ // ----------------------------------- ++ // Deoptimizer enters here. ++ masm->isolate()->heap()->SetConstructStubCreateDeoptPCOffset( ++ masm->pc_offset()); ++ __ bind(&post_instantiation_deopt_entry); ++ ++ // Restore new target. ++ __ Pop(a3); ++ ++ // Push the allocated receiver to the stack. ++ __ Push(v0); ++ ++ // We need two copies because we may have to return the original one ++ // and the calling conventions dictate that the called function pops the ++ // receiver. The second copy is pushed after the arguments, we saved in t9 ++ // since v0 will store the return value of callRuntime. ++ __ mov(t9, v0); ++ ++ // Set up pointer to last argument. ++ __ Addl( ++ t2, fp, ++ Operand(StandardFrameConstants::kCallerSPOffset + kSystemPointerSize)); ++ ++ // ----------- S t a t e ------------- ++ // -- a3: new target ++ // -- sp[0*kPointerSize]: implicit receiver ++ // -- sp[1*kPointerSize]: implicit receiver ++ // -- sp[2*kPointerSize]: padding ++ // -- sp[3*kPointerSize]: constructor function ++ // -- sp[4*kPointerSize]: number of arguments (tagged) ++ // -- sp[5*kPointerSize]: context ++ // ----------------------------------- ++ ++ // Restore constructor function and argument count. ++ __ Ldl(a1, MemOperand(fp, ConstructFrameConstants::kConstructorOffset)); ++ __ Ldl(a0, MemOperand(fp, ConstructFrameConstants::kLengthOffset)); ++ __ SmiUntag(a0); ++ ++ Label stack_overflow; ++ __ StackOverflowCheck(a0, t0, t1, &stack_overflow); ++ ++ // TODO(victorgomes): When the arguments adaptor is completely removed, we ++ // should get the formal parameter count and copy the arguments in its ++ // correct position (including any undefined), instead of delaying this to ++ // InvokeFunction. ++ ++ // Copy arguments and receiver to the expression stack. ++ // t2: Pointer to start of argument. ++ // a0: Number of arguments. ++ Generate_PushArguments(masm, t2, a0, t0, t1, ArgumentsElementType::kRaw); ++ // We need two copies because we may have to return the original one ++ // and the calling conventions dictate that the called function pops the ++ // receiver. The second copy is pushed after the arguments, ++ __ Push(t9); ++ ++ // Call the function. ++ __ InvokeFunctionWithNewTarget(a1, a3, a0, InvokeType::kCall); ++ ++ // ----------- S t a t e ------------- ++ // -- v0: constructor result ++ // -- sp[0*kPointerSize]: implicit receiver ++ // -- sp[1*kPointerSize]: padding ++ // -- sp[2*kPointerSize]: constructor function ++ // -- sp[3*kPointerSize]: number of arguments ++ // -- sp[4*kPointerSize]: context ++ // ----------------------------------- ++ ++ // Store offset of return address for deoptimizer. ++ masm->isolate()->heap()->SetConstructStubInvokeDeoptPCOffset( ++ masm->pc_offset()); ++ ++ // If the result is an object (in the ECMA sense), we should get rid ++ // of the receiver and use the result; see ECMA-262 section 13.2.2-7 ++ // on page 74. ++ Label use_receiver, do_throw, leave_and_return, check_receiver; ++ ++ // If the result is undefined, we jump out to using the implicit receiver. ++ __ JumpIfNotRoot(v0, RootIndex::kUndefinedValue, &check_receiver); ++ ++ // Otherwise we do a smi check and fall through to check if the return value ++ // is a valid receiver. ++ ++ // Throw away the result of the constructor invocation and use the ++ // on-stack receiver as the result. ++ __ bind(&use_receiver); ++ __ Ldl(v0, MemOperand(sp, 0 * kPointerSize)); ++ __ JumpIfRoot(v0, RootIndex::kTheHoleValue, &do_throw); ++ ++ __ bind(&leave_and_return); ++ // Restore smi-tagged arguments count from the frame. ++ __ Ldl(a1, MemOperand(fp, ConstructFrameConstants::kLengthOffset)); ++ // Leave construct frame. ++ __ LeaveFrame(StackFrame::CONSTRUCT); ++ ++ // Remove caller arguments from the stack and return. ++ __ DropArguments(a1, MacroAssembler::kCountIsSmi, ++ MacroAssembler::kCountIncludesReceiver, a4); ++ __ Ret(); ++ ++ __ bind(&check_receiver); ++ __ JumpIfSmi(v0, &use_receiver); ++ ++ // If the type of the result (stored in its map) is less than ++ // FIRST_JS_RECEIVER_TYPE, it is not an object in the ECMA sense. ++ __ GetObjectType(v0, t2, t2); ++ static_assert(LAST_JS_RECEIVER_TYPE == LAST_TYPE); ++ __ Branch(&leave_and_return, greater_equal, t2, ++ Operand(FIRST_JS_RECEIVER_TYPE)); ++ __ Branch(&use_receiver); ++ ++ __ bind(&do_throw); ++ // Restore the context from the frame. ++ __ Ldl(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset)); ++ __ CallRuntime(Runtime::kThrowConstructorReturnedNonObject); ++ __ sys_call(0x80); ++ ++ __ bind(&stack_overflow); ++ // Restore the context from the frame. ++ __ Ldl(cp, MemOperand(fp, ConstructFrameConstants::kContextOffset)); ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ __ sys_call(0x80); ++} ++ ++void Builtins::Generate_JSBuiltinsConstructStub(MacroAssembler* masm) { ++ Generate_JSBuiltinsConstructStubHelper(masm); ++} ++ ++static void AssertCodeIsBaseline(MacroAssembler* masm, Register code, ++ Register scratch) { ++ DCHECK(!AreAliased(code, scratch)); ++ // Verify that the code kind is baseline code via the CodeKind. ++ __ Ldl(scratch, FieldMemOperand(code, Code::kFlagsOffset)); ++ __ DecodeField(scratch); ++ __ Assert(eq, AbortReason::kExpectedBaselineData, scratch, ++ Operand(static_cast(CodeKind::BASELINE))); ++} ++ ++// TODO(v8:11429): Add a path for "not_compiled" and unify the two uses under ++// the more general dispatch. ++static void GetSharedFunctionInfoBytecodeOrBaseline(MacroAssembler* masm, ++ Register sfi_data, ++ Register scratch1, ++ Label* is_baseline) { ++ Label done; ++ ++ __ GetObjectType(sfi_data, scratch1, scratch1); ++ ++#ifndef V8_JITLESS ++ if (v8_flags.debug_code) { ++ Label not_baseline; ++ __ Branch(¬_baseline, ne, scratch1, Operand(CODE_TYPE)); ++ AssertCodeIsBaseline(masm, sfi_data, scratch1); ++ __ Branch(is_baseline); ++ __ bind(¬_baseline); ++ } else { ++ __ Branch(is_baseline, eq, scratch1, Operand(CODE_TYPE)); ++ } ++#endif // !V8_JITLESS ++ ++ __ Branch(&done, ne, scratch1, Operand(INTERPRETER_DATA_TYPE)); ++ __ Ldl(sfi_data, ++ FieldMemOperand(sfi_data, InterpreterData::kBytecodeArrayOffset)); ++ __ bind(&done); ++} ++ ++// static ++void Builtins::Generate_ResumeGeneratorTrampoline(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- v0 : the value to pass to the generator ++ // -- a1 : the JSGeneratorObject to resume ++ // -- ra : return address ++ // ----------------------------------- ++ // Store input value into generator object. ++ __ Stl(v0, FieldMemOperand(a1, JSGeneratorObject::kInputOrDebugPosOffset)); ++ __ RecordWriteField(a1, JSGeneratorObject::kInputOrDebugPosOffset, v0, a3, ++ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore); ++ // Check that a1 is still valid, RecordWrite might have clobbered it. ++ __ AssertGeneratorObject(a1); ++ ++ // Load suspended function and context. ++ __ Ldl(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset)); ++ __ Ldl(cp, FieldMemOperand(a4, JSFunction::kContextOffset)); ++ ++ // Flood function if we are stepping. ++ Label prepare_step_in_if_stepping, prepare_step_in_suspended_generator; ++ Label stepping_prepared; ++ ExternalReference debug_hook = ++ ExternalReference::debug_hook_on_function_call_address(masm->isolate()); ++ __ li(a5, debug_hook); ++ __ Ldb(a5, MemOperand(a5)); ++ __ Branch(&prepare_step_in_if_stepping, ne, a5, Operand(zero_reg)); ++ ++ // Flood function if we need to continue stepping in the suspended generator. ++ ExternalReference debug_suspended_generator = ++ ExternalReference::debug_suspended_generator_address(masm->isolate()); ++ __ li(a5, debug_suspended_generator); ++ __ Ldl(a5, MemOperand(a5)); ++ __ Branch(&prepare_step_in_suspended_generator, eq, a1, Operand(a5)); ++ __ bind(&stepping_prepared); ++ ++ // Check the stack for overflow. We are not trying to catch interruptions ++ // (i.e. debug break and preemption) here, so check the "real stack limit". ++ Label stack_overflow; ++ __ LoadStackLimit(kScratchReg, ++ MacroAssembler::StackLimitKind::kRealStackLimit); ++ __ Branch(&stack_overflow, lo, sp, Operand(kScratchReg)); ++ ++ // ----------- S t a t e ------------- ++ // -- a1 : the JSGeneratorObject to resume ++ // -- a4 : generator function ++ // -- cp : generator context ++ // -- ra : return address ++ // ----------------------------------- ++ ++ // Push holes for arguments to generator function. Since the parser forced ++ // context allocation for any variables in generators, the actual argument ++ // values have already been copied into the context and these dummy values ++ // will never be used. ++ __ Ldl(a3, FieldMemOperand(a4, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldhu(a3, ++ FieldMemOperand(a3, SharedFunctionInfo::kFormalParameterCountOffset)); ++ __ Subl(a3, a3, Operand(kJSArgcReceiverSlots)); ++ __ Ldl(t1, ++ FieldMemOperand(a1, JSGeneratorObject::kParametersAndRegistersOffset)); ++ { ++ Label done_loop, loop; ++ __ bind(&loop); ++ __ Subl(a3, a3, Operand(1)); ++ __ Branch(&done_loop, lt, a3, Operand(zero_reg)); ++ __ s8addl(a3, t1, kScratchReg); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Ldl(kScratchReg, FieldMemOperand(kScratchReg, FixedArray::kHeaderSize)); ++ __ Push(kScratchReg); ++ __ Branch(&loop); ++ __ bind(&done_loop); ++ // Push receiver. ++ __ Ldl(kScratchReg, ++ FieldMemOperand(a1, JSGeneratorObject::kReceiverOffset)); ++ __ Push(kScratchReg); ++ } ++ ++ // Underlying function needs to have bytecode available. ++ if (v8_flags.debug_code) { ++ Label is_baseline; ++ __ Ldl(a3, FieldMemOperand(a4, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldl(a3, FieldMemOperand(a3, SharedFunctionInfo::kFunctionDataOffset)); ++ GetSharedFunctionInfoBytecodeOrBaseline(masm, a3, a0, &is_baseline); ++ __ GetObjectType(a3, a3, a3); ++ __ Assert(eq, AbortReason::kMissingBytecodeArray, a3, ++ Operand(BYTECODE_ARRAY_TYPE)); ++ __ bind(&is_baseline); ++ } ++ ++ // Resume (Ignition/TurboFan) generator object. ++ { ++ __ Ldl(a0, FieldMemOperand(a4, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldhu(a0, FieldMemOperand( ++ a0, SharedFunctionInfo::kFormalParameterCountOffset)); ++ // We abuse new.target both to indicate that this is a resume call and to ++ // pass in the generator object. In ordinary calls, new.target is always ++ // undefined because generator functions are non-constructable. ++ __ Move(a3, a1); ++ __ Move(a1, a4); ++ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch"); ++ __ Ldl(a2, FieldMemOperand(a1, JSFunction::kCodeOffset)); ++ __ JumpCodeObject(a2); ++ } ++ ++ __ bind(&prepare_step_in_if_stepping); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(a1, a4); ++ // Push hole as receiver since we do not use it for stepping. ++ __ PushRoot(RootIndex::kTheHoleValue); ++ __ CallRuntime(Runtime::kDebugOnFunctionCall); ++ __ Pop(a1); ++ } ++ __ Ldl(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset)); ++ __ Branch(&stepping_prepared); ++ ++ __ bind(&prepare_step_in_suspended_generator); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(a1); ++ __ CallRuntime(Runtime::kDebugPrepareStepInSuspendedGenerator); ++ __ Pop(a1); ++ } ++ __ Ldl(a4, FieldMemOperand(a1, JSGeneratorObject::kFunctionOffset)); ++ __ Branch(&stepping_prepared); ++ ++ __ bind(&stack_overflow); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ __ sys_call(0x80); // This should be unreachable. ++ } ++} ++ ++void Builtins::Generate_ConstructedNonConstructable(MacroAssembler* masm) { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(a1); ++ __ CallRuntime(Runtime::kThrowConstructedNonConstructable); ++} ++ ++// Clobbers scratch1 and scratch2; preserves all other registers. ++static void Generate_CheckStackOverflow(MacroAssembler* masm, Register argc, ++ Register scratch1, Register scratch2) { ++ // Check the stack for overflow. We are not trying to catch ++ // interruptions (e.g. debug break and preemption) here, so the "real stack ++ // limit" is checked. ++ Label okay; ++ __ LoadStackLimit(scratch1, MacroAssembler::StackLimitKind::kRealStackLimit); ++ // Make a2 the space we have left. The stack might already be overflowed ++ // here which will cause r2 to become negative. ++ __ Subl(scratch1, sp, scratch1); ++ // Check if the arguments will overflow the stack. ++ __ slll(argc, kPointerSizeLog2, scratch2); ++ __ Branch(&okay, gt, scratch1, Operand(scratch2)); // Signed comparison. ++ ++ // Out of stack space. ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ ++ __ bind(&okay); ++} ++ ++namespace { ++ ++// Called with the native C calling convention. The corresponding function ++// signature is either: ++// ++// using JSEntryFunction = GeneratedCode; ++// or ++// using JSEntryFunction = GeneratedCode; ++void Generate_JSEntryVariant(MacroAssembler* masm, StackFrame::Type type, ++ Builtin entry_trampoline) { ++ Label invoke, handler_entry, exit; ++ ++ { ++ NoRootArrayScope no_root_array(masm); ++ ++ // TODO(plind): unify the ABI description here. ++ // Registers: ++ // either ++ // a0: root register value ++ // a1: entry address ++ // a2: function ++ // a3: receiver ++ // a4: argc ++ // a5: argv ++ // or ++ // a0: root register value ++ // a1: microtask_queue ++ // ++ // Stack: ++ // 0 arg slots on sw64 ++ ++ // Save callee saved registers on the stack. ++ __ MultiPush(kCalleeSaved | ra); ++ ++ // Save callee-saved FPU registers. ++ __ MultiPushFPU(kCalleeSavedFPU); ++ // Set up the reserved register for 0.0. ++ //__ Move(kDoubleRegZero, 0.0); ++ ++ // Initialize the root register. ++ // C calling convention. The first argument is passed in a0. ++ __ mov(kRootRegister, a0); ++ } ++ ++ // a1: entry address ++ // a2: function ++ // a3: receiver ++ // a4: argc ++ // a5: argv ++ ++ // We build an EntryFrame. ++ __ li(s1, Operand(-1)); // Push a bad frame pointer to fail if it is used. ++ __ li(s2, Operand(StackFrame::TypeToMarker(type))); ++ __ li(t7, Operand(StackFrame::TypeToMarker(type))); ++ ExternalReference c_entry_fp = ExternalReference::Create( ++ IsolateAddressId::kCEntryFPAddress, masm->isolate()); ++ __ li(s3, c_entry_fp); ++ __ Ldl(t8, MemOperand(s3)); ++ __ Push(s1, s2, s3, t8); ++ ++ // Clear c_entry_fp, now we've pushed its previous value to the stack. ++ // If the c_entry_fp is not already zero and we don't clear it, the ++ // StackFrameIteratorForProfiler will assume we are executing C++ and miss the ++ // JS frames on top. ++ __ Stl(zero_reg, MemOperand(s3)); ++ ++ // Set up frame pointer for the frame to be pushed. ++ __ addl(sp, -EntryFrameConstants::kNextExitFrameFPOffset, fp); // negtive imm ++ ++ // Registers: ++ // either ++ // a1: entry address ++ // a2: function ++ // a3: receiver ++ // a4: argc ++ // a5: argv ++ // or ++ // a1: microtask_queue ++ // ++ // Stack: ++ // caller fp | ++ // function slot | entry frame ++ // context slot | ++ // bad fp (0xFF...F) | ++ // callee saved registers + ra ++ // [ O32: 4 args slots] ++ // args ++ ++ // If this is the outermost JS call, set js_entry_sp value. ++ Label non_outermost_js; ++ ExternalReference js_entry_sp = ExternalReference::Create( ++ IsolateAddressId::kJSEntrySPAddress, masm->isolate()); ++ __ li(s1, js_entry_sp); ++ __ Ldl(s2, MemOperand(s1)); ++ __ Branch(&non_outermost_js, ne, s2, Operand(zero_reg)); ++ __ Stl(fp, MemOperand(s1)); ++ __ li(s3, Operand(StackFrame::OUTERMOST_JSENTRY_FRAME)); ++ Label cont; ++ __ br(&cont); ++ //__ nop(); // Branch delay slot nop. ++ __ bind(&non_outermost_js); ++ __ li(s3, Operand(StackFrame::INNER_JSENTRY_FRAME)); ++ __ bind(&cont); ++ __ Push(s3); ++ ++ // Jump to a faked try block that does the invoke, with a faked catch ++ // block that sets the pending exception. ++ __ jmp(&invoke); ++ __ bind(&handler_entry); ++ ++ // Store the current pc as the handler offset. It's used later to create the ++ // handler table. ++ masm->isolate()->builtins()->SetJSEntryHandlerOffset(handler_entry.pos()); ++ ++ // Caught exception: Store result (exception) in the pending exception ++ // field in the JSEnv and return a failure sentinel. Coming in here the ++ // fp will be invalid because the PushStackHandler below sets it to 0 to ++ // signal the existence of the JSEntry frame. ++ __ li(s1, ExternalReference::Create( ++ IsolateAddressId::kPendingExceptionAddress, masm->isolate())); ++ __ Stl(v0, MemOperand(s1)); // We come back from 'invoke'. result is in v0. ++ __ LoadRoot(v0, RootIndex::kException); ++ __ br(&exit); // b exposes branch delay slot. ++ //__ nop(); // Branch delay slot nop. ++ ++ // Invoke: Link this frame into the handler chain. ++ __ bind(&invoke); ++ __ PushStackHandler(); ++ // If an exception not caught by another handler occurs, this handler ++ // returns control to the code after the bal(&invoke) above, which ++ // restores all kCalleeSaved registers (including cp and fp) to their ++ // saved values before returning a failure to C. ++ // ++ // Registers: ++ // either ++ // a0: root register value ++ // a1: entry address ++ // a2: function ++ // a3: receiver ++ // a4: argc ++ // a5: argv ++ // or ++ // a0: root register value ++ // a1: microtask_queue ++ // ++ // Stack: ++ // handler frame ++ // entry frame ++ // callee saved registers + ra ++ // [ O32: 4 args slots] ++ // args ++ // ++ // Invoke the function by calling through JS entry trampoline builtin and ++ // pop the faked function when we return. ++ ++ Handle trampoline_code = ++ masm->isolate()->builtins()->code_handle(entry_trampoline); ++ __ Call(trampoline_code, RelocInfo::CODE_TARGET); ++ ++ // Unlink this frame from the handler chain. ++ __ PopStackHandler(); ++ ++ __ bind(&exit); // v0 holds result ++ // Check if the current stack frame is marked as the outermost JS frame. ++ Label non_outermost_js_2; ++ __ pop(a5); ++ __ Branch(&non_outermost_js_2, ne, a5, ++ Operand(StackFrame::OUTERMOST_JSENTRY_FRAME)); ++ __ li(a5, js_entry_sp); ++ __ Stl(zero_reg, MemOperand(a5)); ++ __ bind(&non_outermost_js_2); ++ ++ // Restore the top frame descriptors from the stack. ++ __ pop(a5); ++ __ li(a4, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, ++ masm->isolate())); ++ __ Stl(a5, MemOperand(a4)); ++ ++ // Reset the stack to the callee saved registers. ++ __ addl(sp, -EntryFrameConstants::kNextExitFrameFPOffset, ++ sp); // negative imm ++ ++ // Restore callee-saved fpu registers. ++ __ MultiPopFPU(kCalleeSavedFPU); ++ ++ // Restore callee saved registers from the stack. ++ __ MultiPop(kCalleeSaved | ra); ++ // Return. ++ __ Jump(ra); ++} ++ ++} // namespace ++ ++void Builtins::Generate_JSEntry(MacroAssembler* masm) { ++ Generate_JSEntryVariant(masm, StackFrame::ENTRY, Builtin::kJSEntryTrampoline); ++} ++ ++void Builtins::Generate_JSConstructEntry(MacroAssembler* masm) { ++ Generate_JSEntryVariant(masm, StackFrame::CONSTRUCT_ENTRY, ++ Builtin::kJSConstructEntryTrampoline); ++} ++ ++void Builtins::Generate_JSRunMicrotasksEntry(MacroAssembler* masm) { ++ Generate_JSEntryVariant(masm, StackFrame::ENTRY, ++ Builtin::kRunMicrotasksTrampoline); ++} ++ ++static void Generate_JSEntryTrampolineHelper(MacroAssembler* masm, ++ bool is_construct) { ++ // ----------- S t a t e ------------- ++ // -- a1: new.target ++ // -- a2: function ++ // -- a3: receiver_pointer ++ // -- a4: argc ++ // -- a5: argv ++ // ----------------------------------- ++ ++ // Enter an internal frame. ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ ++ // Setup the context (we need to use the caller context from the isolate). ++ ExternalReference context_address = ExternalReference::Create( ++ IsolateAddressId::kContextAddress, masm->isolate()); ++ __ li(cp, context_address); ++ __ Ldl(cp, MemOperand(cp)); ++ ++ // Push the function onto the stack. ++ __ Push(a2); ++ ++ // Check if we have enough stack space to push all arguments. ++ __ mov(t9, a4); ++ Generate_CheckStackOverflow(masm, t9, a0, s2); ++ ++ // Copy arguments to the stack in a loop. ++ // a4: argc ++ // a5: argv, i.e. points to first arg ++ Generate_PushArguments(masm, a5, a4, s1, s2, ArgumentsElementType::kHandle); ++ ++ // Push the receive. ++ __ Push(a3); ++ ++ // a0: argc ++ // a1: function ++ // a3: new.target ++ __ mov(a3, a1); ++ __ mov(a1, a2); ++ __ mov(a0, a4); ++ ++ // Initialize all JavaScript callee-saved registers, since they will be seen ++ // by the garbage collector as part of handlers. ++ __ LoadRoot(a4, RootIndex::kUndefinedValue); ++ __ mov(a5, a4); ++ __ mov(s1, a4); ++ __ mov(s2, a4); ++ __ mov(s3, a4); // OK. ++ // s4 holds the root address. Do not clobber. ++ // s5 is cp. Do not init. ++ ++ // Invoke the code. ++ Handle builtin = is_construct ++ ? BUILTIN_CODE(masm->isolate(), Construct) ++ : masm->isolate()->builtins()->Call(); ++ __ Call(builtin, RelocInfo::CODE_TARGET); ++ ++ // Leave internal frame. ++ } ++ __ Jump(ra); ++} ++ ++void Builtins::Generate_JSEntryTrampoline(MacroAssembler* masm) { ++ Generate_JSEntryTrampolineHelper(masm, false); ++} ++ ++void Builtins::Generate_JSConstructEntryTrampoline(MacroAssembler* masm) { ++ Generate_JSEntryTrampolineHelper(masm, true); ++} ++ ++void Builtins::Generate_RunMicrotasksTrampoline(MacroAssembler* masm) { ++ // a1: microtask_queue ++ __ mov(RunMicrotasksDescriptor::MicrotaskQueueRegister(), a1); ++ __ Jump(BUILTIN_CODE(masm->isolate(), RunMicrotasks), RelocInfo::CODE_TARGET); ++} ++ ++static void LeaveInterpreterFrame(MacroAssembler* masm, Register scratch1, ++ Register scratch2) { ++ Register params_size = scratch1; ++ ++ // Get the size of the formal parameters + receiver (in bytes). ++ __ Ldl(params_size, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ __ Ldw(params_size, ++ FieldMemOperand(params_size, BytecodeArray::kParameterSizeOffset)); ++ ++ Register actual_params_size = scratch2; ++ // Compute the size of the actual parameters + receiver (in bytes). ++ __ Ldl(actual_params_size, ++ MemOperand(fp, StandardFrameConstants::kArgCOffset)); ++ __ slll(actual_params_size, kPointerSizeLog2, actual_params_size); ++ ++ // If actual is bigger than formal, then we should use it to free up the stack ++ // arguments. ++ __ cmplt(params_size, actual_params_size, t2); ++ __ Selne(params_size, actual_params_size, t2); ++ ++ // Leave the frame (also dropping the register file). ++ __ LeaveFrame(StackFrame::INTERPRETED); ++ ++ // Drop receiver + arguments. ++ __ DropArguments(params_size, MacroAssembler::kCountIsBytes, ++ MacroAssembler::kCountIncludesReceiver); ++} ++ ++// Advance the current bytecode offset. This simulates what all bytecode ++// handlers do upon completion of the underlying operation. Will bail out to a ++// label if the bytecode (without prefix) is a return bytecode. Will not advance ++// the bytecode offset if the current bytecode is a JumpLoop, instead just ++// re-executing the JumpLoop to jump to the correct bytecode. ++static void AdvanceBytecodeOffsetOrReturn(MacroAssembler* masm, ++ Register bytecode_array, ++ Register bytecode_offset, ++ Register bytecode, Register scratch1, ++ Register scratch2, Register scratch3, ++ Label* if_return) { ++ Register bytecode_size_table = scratch1; ++ ++ // The bytecode offset value will be increased by one in wide and extra wide ++ // cases. In the case of having a wide or extra wide JumpLoop bytecode, we ++ // will restore the original bytecode. In order to simplify the code, we have ++ // a backup of it. ++ Register original_bytecode_offset = scratch3; ++ DCHECK(!AreAliased(bytecode_array, bytecode_offset, bytecode, ++ bytecode_size_table, original_bytecode_offset)); ++ __ Move(original_bytecode_offset, bytecode_offset); ++ __ li(bytecode_size_table, ExternalReference::bytecode_size_table_address()); ++ ++ // Check if the bytecode is a Wide or ExtraWide prefix bytecode. ++ Label process_bytecode, extra_wide; ++ static_assert(0 == static_cast(interpreter::Bytecode::kWide)); ++ static_assert(1 == static_cast(interpreter::Bytecode::kExtraWide)); ++ static_assert(2 == static_cast(interpreter::Bytecode::kDebugBreakWide)); ++ static_assert(3 == ++ static_cast(interpreter::Bytecode::kDebugBreakExtraWide)); ++ __ Branch(&process_bytecode, hi, bytecode, Operand(3)); ++ __ And(scratch2, bytecode, Operand(1)); ++ __ Branch(&extra_wide, ne, scratch2, Operand(zero_reg)); ++ ++ // Load the next bytecode and update table to the wide scaled table. ++ __ Addl(bytecode_offset, bytecode_offset, Operand(1)); ++ __ Addl(scratch2, bytecode_array, bytecode_offset); ++ __ Ldbu(bytecode, MemOperand(scratch2)); ++ __ Addl(bytecode_size_table, bytecode_size_table, ++ Operand(kByteSize * interpreter::Bytecodes::kBytecodeCount)); ++ __ jmp(&process_bytecode); ++ ++ __ bind(&extra_wide); ++ // Load the next bytecode and update table to the extra wide scaled table. ++ __ Addl(bytecode_offset, bytecode_offset, Operand(1)); ++ __ Addl(scratch2, bytecode_array, bytecode_offset); ++ __ Ldbu(bytecode, MemOperand(scratch2)); ++ __ Addl(bytecode_size_table, bytecode_size_table, ++ Operand(2 * kByteSize * interpreter::Bytecodes::kBytecodeCount)); ++ ++ __ bind(&process_bytecode); ++ ++// Bailout to the return label if this is a return bytecode. ++#define JUMP_IF_EQUAL(NAME) \ ++ __ Branch(if_return, eq, bytecode, \ ++ Operand(static_cast(interpreter::Bytecode::k##NAME))); ++ RETURN_BYTECODE_LIST(JUMP_IF_EQUAL) ++#undef JUMP_IF_EQUAL ++ ++ // If this is a JumpLoop, re-execute it to perform the jump to the beginning ++ // of the loop. ++ Label end, not_jump_loop; ++ __ Branch(¬_jump_loop, ne, bytecode, ++ Operand(static_cast(interpreter::Bytecode::kJumpLoop))); ++ // We need to restore the original bytecode_offset since we might have ++ // increased it to skip the wide / extra-wide prefix bytecode. ++ __ Move(bytecode_offset, original_bytecode_offset); ++ __ jmp(&end); ++ ++ __ bind(¬_jump_loop); ++ // Otherwise, load the size of the current bytecode and advance the offset. ++ __ Addl(scratch2, bytecode_size_table, bytecode); ++ __ Ldb(scratch2, MemOperand(scratch2)); ++ __ Addl(bytecode_offset, bytecode_offset, scratch2); ++ ++ __ bind(&end); ++} ++ ++namespace { ++void ResetBytecodeAge(MacroAssembler* masm, Register bytecode_array) { ++ __ Sth(zero_reg, ++ FieldMemOperand(bytecode_array, BytecodeArray::kBytecodeAgeOffset)); ++} ++ ++void ResetFeedbackVectorOsrUrgency(MacroAssembler* masm, ++ Register feedback_vector, Register scratch) { ++ DCHECK(!AreAliased(feedback_vector, scratch)); ++ __ Ldbu(scratch, ++ FieldMemOperand(feedback_vector, FeedbackVector::kOsrStateOffset)); ++ __ And(scratch, scratch, ++ Operand(FeedbackVector::MaybeHasOptimizedOsrCodeBit::kMask)); ++ __ Stb(scratch, ++ FieldMemOperand(feedback_vector, FeedbackVector::kOsrStateOffset)); ++} ++} // namespace ++ ++// static ++void Builtins::Generate_BaselineOutOfLinePrologue(MacroAssembler* masm) { ++ UseScratchRegisterScope temps(masm); ++ temps.Include({s1, s2}); ++ auto descriptor = ++ Builtins::CallInterfaceDescriptorFor(Builtin::kBaselineOutOfLinePrologue); ++ Register closure = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kClosure); ++ // Load the feedback vector from the closure. ++ Register feedback_vector = temps.Acquire(); ++ __ Ldl(feedback_vector, ++ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset)); ++ __ Ldl(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset)); ++ { ++ UseScratchRegisterScope temps(masm); ++ Register scratch = temps.Acquire(); ++ __ AssertFeedbackVector(feedback_vector, scratch); ++ } ++ // Check for an tiering state. ++ Label flags_need_processing; ++ Register flags = no_reg; ++ { ++ UseScratchRegisterScope temps(masm); ++ flags = temps.Acquire(); ++ // flags will be used only in |flags_need_processing| ++ // and outside it can be reused. ++ __ LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing( ++ flags, feedback_vector, CodeKind::BASELINE, &flags_need_processing); ++ } ++ { ++ UseScratchRegisterScope temps(masm); ++ ResetFeedbackVectorOsrUrgency(masm, feedback_vector, temps.Acquire()); ++ } ++ // Increment invocation count for the function. ++ { ++ UseScratchRegisterScope temps(masm); ++ Register invocation_count = temps.Acquire(); ++ __ Ldw(invocation_count, ++ FieldMemOperand(feedback_vector, ++ FeedbackVector::kInvocationCountOffset)); ++ __ Addw(invocation_count, invocation_count, Operand(1)); ++ __ Stw(invocation_count, ++ FieldMemOperand(feedback_vector, ++ FeedbackVector::kInvocationCountOffset)); ++ } ++ ++ FrameScope frame_scope(masm, StackFrame::MANUAL); ++ { ++ ASM_CODE_COMMENT_STRING(masm, "Frame Setup"); ++ // Normally the first thing we'd do here is Push(ra, fp), but we already ++ // entered the frame in BaselineCompiler::Prologue, as we had to use the ++ // value lr before the call to this BaselineOutOfLinePrologue builtin. ++ Register callee_context = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kCalleeContext); ++ Register callee_js_function = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kClosure); ++ __ Push(callee_context, callee_js_function); ++ DCHECK_EQ(callee_js_function, kJavaScriptCallTargetRegister); ++ DCHECK_EQ(callee_js_function, kJSFunctionRegister); ++ ++ Register argc = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kJavaScriptCallArgCount); ++ // We'll use the bytecode for both code age/OSR resetting, and pushing onto ++ // the frame, so load it into a register. ++ Register bytecode_array = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kInterpreterBytecodeArray); ++ ResetBytecodeAge(masm, bytecode_array); ++ __ Push(argc, bytecode_array); ++ ++ // Baseline code frames store the feedback vector where interpreter would ++ // store the bytecode offset. ++ { ++ UseScratchRegisterScope temps(masm); ++ Register invocation_count = temps.Acquire(); ++ __ AssertFeedbackVector(feedback_vector, invocation_count); ++ } ++ // Our stack is currently aligned. We have have to push something along with ++ // the feedback vector to keep it that way -- we may as well start ++ // initialising the register frame. ++ // TODO(v8:11429,leszeks): Consider guaranteeing that this call leaves ++ // `undefined` in the accumulator register, to skip the load in the baseline ++ // code. ++ __ Push(feedback_vector); ++ } ++ ++ Label call_stack_guard; ++ Register frame_size = descriptor.GetRegisterParameter( ++ BaselineOutOfLinePrologueDescriptor::kStackFrameSize); ++ { ++ ASM_CODE_COMMENT_STRING(masm, "Stack/interrupt check"); ++ // Stack check. This folds the checks for both the interrupt stack limit ++ // check and the real stack limit into one by just checking for the ++ // interrupt limit. The interrupt limit is either equal to the real stack ++ // limit or tighter. By ensuring we have space until that limit after ++ // building the frame we can quickly precheck both at once. ++ UseScratchRegisterScope temps(masm); ++ Register sp_minus_frame_size = temps.Acquire(); ++ __ Subl(sp_minus_frame_size, sp, frame_size); ++ Register interrupt_limit = temps.Acquire(); ++ __ LoadStackLimit(interrupt_limit, ++ MacroAssembler::StackLimitKind::kInterruptStackLimit); ++ __ Branch(&call_stack_guard, Uless, sp_minus_frame_size, ++ Operand(interrupt_limit)); ++ } ++ ++ // Do "fast" return to the caller pc in ra. ++ // TODO(v8:11429): Document this frame setup better. ++ __ Ret(); ++ ++ __ bind(&flags_need_processing); ++ { ++ ASM_CODE_COMMENT_STRING(masm, "Optimized marker check"); ++ UseScratchRegisterScope temps(masm); ++ temps.Exclude(flags); ++ // Ensure the flags is not allocated again. ++ // Drop the frame created by the baseline call. ++ __ Pop(ra, fp); ++ __ OptimizeCodeOrTailCallOptimizedCodeSlot(flags, feedback_vector); ++ __ Trap(); ++ } ++ ++ __ bind(&call_stack_guard); ++ { ++ ASM_CODE_COMMENT_STRING(masm, "Stack/interrupt call"); ++ FrameScope frame_scope(masm, StackFrame::INTERNAL); ++ // Save incoming new target or generator ++ __ Push(kJavaScriptCallNewTargetRegister); ++ __ SmiTag(frame_size); ++ __ Push(frame_size); ++ __ CallRuntime(Runtime::kStackGuardWithGap); ++ __ Pop(kJavaScriptCallNewTargetRegister); ++ } ++ __ Ret(); ++ temps.Exclude({kScratchReg, kScratchReg2}); ++} ++ ++// static ++void Builtins::Generate_BaselineOutOfLinePrologueDeopt(MacroAssembler* masm) { ++ // We're here because we got deopted during BaselineOutOfLinePrologue's stack ++ // check. Undo all its frame creation and call into the interpreter instead. ++ ++ // Drop bytecode offset (was the feedback vector but got replaced during ++ // deopt) and bytecode array. ++ __ Drop(2); ++ ++ // Context, closure, argc. ++ __ Pop(kContextRegister, kJavaScriptCallTargetRegister, ++ kJavaScriptCallArgCountRegister); ++ ++ // Drop frame pointer ++ __ LeaveFrame(StackFrame::BASELINE); ++ ++ // Enter the interpreter. ++ __ TailCallBuiltin(Builtin::kInterpreterEntryTrampoline); ++} ++ ++// Generate code for entering a JS function with the interpreter. ++// On entry to the function the receiver and arguments have been pushed on the ++// stack left to right. ++// ++// The live registers are: ++// o a0 : actual argument count ++// o a1: the JS function object being called. ++// o a3: the incoming new target or generator object ++// o cp: our context ++// o fp: the caller's frame pointer ++// o sp: stack pointer ++// o ra: return address ++// ++// The function builds an interpreter frame. See InterpreterFrameConstants in ++// frame-constants.h for its layout. ++void Builtins::Generate_InterpreterEntryTrampoline( ++ MacroAssembler* masm, InterpreterEntryTrampolineMode mode) { ++ Register closure = a1; ++ ++ // Get the bytecode array from the function object and load it into ++ // kInterpreterBytecodeArrayRegister. ++ __ Ldl(kScratchReg, ++ FieldMemOperand(closure, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ FieldMemOperand(kScratchReg, SharedFunctionInfo::kFunctionDataOffset)); ++ Label is_baseline; ++ GetSharedFunctionInfoBytecodeOrBaseline( ++ masm, kInterpreterBytecodeArrayRegister, kScratchReg, &is_baseline); ++ ++ // The bytecode array could have been flushed from the shared function info, ++ // if so, call into CompileLazy. ++ Label compile_lazy; ++ __ GetObjectType(kInterpreterBytecodeArrayRegister, kScratchReg, kScratchReg); ++ __ Branch(&compile_lazy, ne, kScratchReg, Operand(BYTECODE_ARRAY_TYPE)); ++ ++#ifndef V8_JITLESS ++ // Load the feedback vector from the closure. ++ Register feedback_vector = a2; ++ __ Ldl(feedback_vector, ++ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset)); ++ __ Ldl(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset)); ++ ++ Label push_stack_frame; ++ // Check if feedback vector is valid. If valid, check for optimized code ++ // and update invocation count. Otherwise, setup the stack frame. ++ __ Ldl(a4, FieldMemOperand(feedback_vector, HeapObject::kMapOffset)); ++ __ Ldhu(a4, FieldMemOperand(a4, Map::kInstanceTypeOffset)); ++ __ Branch(&push_stack_frame, ne, a4, Operand(FEEDBACK_VECTOR_TYPE)); ++ ++ // Check the tiering state. ++ Label flags_need_processing; ++ Register flags = a4; ++ __ LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing( ++ flags, feedback_vector, CodeKind::INTERPRETED_FUNCTION, ++ &flags_need_processing); ++ ++ { ++ UseScratchRegisterScope temps(masm); ++ ResetFeedbackVectorOsrUrgency(masm, feedback_vector, temps.Acquire()); ++ } ++ ++ Label not_optimized; ++ __ bind(¬_optimized); ++ ++ // Increment invocation count for the function. ++ __ Ldw(a4, FieldMemOperand(feedback_vector, ++ FeedbackVector::kInvocationCountOffset)); ++ __ Addw(a4, a4, Operand(1)); ++ __ Stw(a4, FieldMemOperand(feedback_vector, ++ FeedbackVector::kInvocationCountOffset)); ++ ++ // Open a frame scope to indicate that there is a frame on the stack. The ++ // MANUAL indicates that the scope shouldn't actually generate code to set up ++ // the frame (that is done below). ++ __ bind(&push_stack_frame); ++#else ++ // Note: By omitting the above code in jitless mode we also disable: ++ // - kFlagsLogNextExecution: only used for logging/profiling; and ++ // - kInvocationCountOffset: only used for tiering heuristics and code ++ // coverage. ++#endif // !V8_JITLESS ++ FrameScope frame_scope(masm, StackFrame::MANUAL); ++ __ PushStandardFrame(closure); ++ ++ ResetBytecodeAge(masm, kInterpreterBytecodeArrayRegister); ++ ++ // Load initial bytecode offset. ++ __ li(kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); ++ ++ // Push bytecode array and Smi tagged bytecode array offset. ++ __ SmiTag(a4, kInterpreterBytecodeOffsetRegister); ++ __ Push(kInterpreterBytecodeArrayRegister, a4); ++ ++ // Allocate the local and temporary register file on the stack. ++ Label stack_overflow; ++ { ++ // Load frame size (word) from the BytecodeArray object. ++ __ Ldw(a4, FieldMemOperand(kInterpreterBytecodeArrayRegister, ++ BytecodeArray::kFrameSizeOffset)); ++ ++ // Do a stack check to ensure we don't go over the limit. ++ __ Subl(a5, sp, Operand(a4)); ++ __ LoadStackLimit(a2, MacroAssembler::StackLimitKind::kRealStackLimit); ++ __ Branch(&stack_overflow, lo, a5, Operand(a2)); ++ ++ // If ok, push undefined as the initial value for all register file entries. ++ Label loop_header; ++ Label loop_check; ++ __ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue); ++ __ Branch(&loop_check); ++ __ bind(&loop_header); ++ // TODO(rmcilroy): Consider doing more than one push per loop iteration. ++ __ Push(kInterpreterAccumulatorRegister); ++ // Continue loop if not done. ++ __ bind(&loop_check); ++ __ Subl(a4, a4, Operand(kPointerSize)); ++ __ Branch(&loop_header, ge, a4, Operand(zero_reg)); ++ } ++ ++ // If the bytecode array has a valid incoming new target or generator object ++ // register, initialize it with incoming value which was passed in r3. ++ Label no_incoming_new_target_or_generator_register; ++ __ Ldw(a5, FieldMemOperand( ++ kInterpreterBytecodeArrayRegister, ++ BytecodeArray::kIncomingNewTargetOrGeneratorRegisterOffset)); ++ __ Branch(&no_incoming_new_target_or_generator_register, eq, a5, ++ Operand(zero_reg)); ++ __ s8addl(a5, fp, a5); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Stl(a3, MemOperand(a5)); ++ __ bind(&no_incoming_new_target_or_generator_register); ++ ++ // Perform interrupt stack check. ++ // TODO(solanes): Merge with the real stack limit check above. ++ Label stack_check_interrupt, after_stack_check_interrupt; ++ __ LoadStackLimit(a5, MacroAssembler::StackLimitKind::kInterruptStackLimit); ++ __ Branch(&stack_check_interrupt, lo, sp, Operand(a5)); ++ __ bind(&after_stack_check_interrupt); ++ ++ // The accumulator is already loaded with undefined. ++ ++ // Load the dispatch table into a register and dispatch to the bytecode ++ // handler at the current bytecode offset. ++ Label do_dispatch; ++ __ bind(&do_dispatch); ++ __ li(kInterpreterDispatchTableRegister, ++ ExternalReference::interpreter_dispatch_table_address(masm->isolate())); ++ __ Addl(a0, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister); ++ __ Ldbu(t10, MemOperand(a0)); ++ __ s8addl(t10, kInterpreterDispatchTableRegister, kScratchReg); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Ldl(kJavaScriptCallCodeStartRegister, MemOperand(kScratchReg)); ++ __ Call(kJavaScriptCallCodeStartRegister); ++ ++ __ RecordComment("--- InterpreterEntryReturnPC point ---"); ++ if (mode == InterpreterEntryTrampolineMode::kDefault) { ++ masm->isolate()->heap()->SetInterpreterEntryReturnPCOffset( ++ masm->pc_offset()); ++ } else { ++ DCHECK_EQ(mode, InterpreterEntryTrampolineMode::kForProfiling); ++ // Both versions must be the same up to this point otherwise the builtins ++ // will not be interchangable. ++ CHECK_EQ( ++ masm->isolate()->heap()->interpreter_entry_return_pc_offset().value(), ++ masm->pc_offset()); ++ } ++ ++ // Any returns to the entry trampoline are either due to the return bytecode ++ // or the interpreter tail calling a builtin and then a dispatch. ++ ++ // Get bytecode array and bytecode offset from the stack frame. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ __ Ldl(kInterpreterBytecodeOffsetRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ __ SmiUntag(kInterpreterBytecodeOffsetRegister); ++ ++ // Either return, or advance to the next bytecode and dispatch. ++ Label do_return; ++ __ Addl(a1, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister); ++ __ Ldbu(a1, MemOperand(a1)); ++ AdvanceBytecodeOffsetOrReturn(masm, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister, a1, a2, a3, ++ a4, &do_return); ++ __ jmp(&do_dispatch); ++ ++ __ bind(&do_return); ++ // The return value is in v0. ++ LeaveInterpreterFrame(masm, t0, t1); ++ __ Jump(ra); ++ ++ __ bind(&stack_check_interrupt); ++ // Modify the bytecode offset in the stack to be kFunctionEntryBytecodeOffset ++ // for the call to the StackGuard. ++ __ li(kInterpreterBytecodeOffsetRegister, ++ Operand(Smi::FromInt(BytecodeArray::kHeaderSize - kHeapObjectTag + ++ kFunctionEntryBytecodeOffset))); ++ __ Stl(kInterpreterBytecodeOffsetRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ __ CallRuntime(Runtime::kStackGuard); ++ ++ // After the call, restore the bytecode array, bytecode offset and accumulator ++ // registers again. Also, restore the bytecode offset in the stack to its ++ // previous value. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ __ li(kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); ++ __ LoadRoot(kInterpreterAccumulatorRegister, RootIndex::kUndefinedValue); ++ ++ __ SmiTag(a5, kInterpreterBytecodeOffsetRegister); ++ __ Stl(a5, MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ ++ __ jmp(&after_stack_check_interrupt); ++ ++#ifndef V8_JITLESS ++ __ bind(&flags_need_processing); ++ __ OptimizeCodeOrTailCallOptimizedCodeSlot(flags, feedback_vector); ++ __ bind(&is_baseline); ++ { ++ // Load the feedback vector from the closure. ++ __ Ldl(feedback_vector, ++ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset)); ++ __ Ldl(feedback_vector, ++ FieldMemOperand(feedback_vector, Cell::kValueOffset)); ++ ++ Label install_baseline_code; ++ // Check if feedback vector is valid. If not, call prepare for baseline to ++ // allocate it. ++ __ Ldl(t0, FieldMemOperand(feedback_vector, HeapObject::kMapOffset)); ++ __ Ldhu(t0, FieldMemOperand(t0, Map::kInstanceTypeOffset)); ++ __ Branch(&install_baseline_code, ne, t0, Operand(FEEDBACK_VECTOR_TYPE)); ++ ++ // Check for an tiering state. ++ __ LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing( ++ flags, feedback_vector, CodeKind::BASELINE, &flags_need_processing); ++ ++ // Load the baseline code into the closure. ++ __ Move(a2, kInterpreterBytecodeArrayRegister); ++ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch"); ++ __ ReplaceClosureCodeWithOptimizedCode(a2, closure, t0, t1); ++ __ JumpCodeObject(a2); ++ ++ __ bind(&install_baseline_code); ++ __ GenerateTailCallToReturnedCode(Runtime::kInstallBaselineCode); ++ } ++#endif // !V8_JITLESS ++ ++ __ bind(&compile_lazy); ++ __ GenerateTailCallToReturnedCode(Runtime::kCompileLazy); ++ // Unreachable code. ++ __ sys_call(0x80); ++ ++ __ bind(&stack_overflow); ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ // Unreachable code. ++ __ sys_call(0x80); ++} ++ ++static void GenerateInterpreterPushArgs(MacroAssembler* masm, Register num_args, ++ Register start_address, ++ Register scratch, Register scratch2) { ++ // Find the address of the last argument. ++ __ Subl(scratch, num_args, Operand(1)); ++ __ slll(scratch, kPointerSizeLog2, scratch); ++ __ Subl(start_address, start_address, scratch); ++ ++ // Push the arguments. ++ __ PushArray(start_address, num_args, scratch, scratch2, ++ MacroAssembler::PushArrayOrder::kReverse); ++} ++ ++// static ++void Builtins::Generate_InterpreterPushArgsThenCallImpl( ++ MacroAssembler* masm, ConvertReceiverMode receiver_mode, ++ InterpreterPushArgsMode mode) { ++ DCHECK(mode != InterpreterPushArgsMode::kArrayFunction); ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a2 : the address of the first argument to be pushed. Subsequent ++ // arguments should be consecutive above this, in the same order as ++ // they are to be pushed onto the stack. ++ // -- a1 : the target to call (can be any Object). ++ // ----------------------------------- ++ Label stack_overflow; ++ if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ // The spread argument should not be pushed. ++ __ Subl(a0, a0, Operand(1)); ++ } ++ ++ if (receiver_mode == ConvertReceiverMode::kNullOrUndefined) { ++ __ Subl(a3, a0, Operand(kJSArgcReceiverSlots)); ++ } else { ++ __ mov(a3, a0); ++ } ++ ++ __ StackOverflowCheck(a3, a4, t0, &stack_overflow); ++ ++ // This function modifies a2, t0 and a4. ++ GenerateInterpreterPushArgs(masm, a3, a2, a4, t0); ++ ++ if (receiver_mode == ConvertReceiverMode::kNullOrUndefined) { ++ __ PushRoot(RootIndex::kUndefinedValue); ++ } ++ ++ if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ // Pass the spread in the register a2. ++ // a2 already points to the penultime argument, the spread ++ // is below that. ++ __ Ldl(a2, MemOperand(a2, -kSystemPointerSize)); ++ } ++ ++ // Call the target. ++ if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallWithSpread), ++ RelocInfo::CODE_TARGET); ++ } else { ++ __ Jump(masm->isolate()->builtins()->Call(ConvertReceiverMode::kAny), ++ RelocInfo::CODE_TARGET); ++ } ++ ++ __ bind(&stack_overflow); ++ { ++ __ TailCallRuntime(Runtime::kThrowStackOverflow); ++ // Unreachable code. ++ __ sys_call(0x80); ++ } ++} ++ ++// static ++void Builtins::Generate_InterpreterPushArgsThenConstructImpl( ++ MacroAssembler* masm, InterpreterPushArgsMode mode) { ++ // ----------- S t a t e ------------- ++ // -- a0 : argument count ++ // -- a3 : new target ++ // -- a1 : constructor to call ++ // -- a2 : allocation site feedback if available, undefined otherwise. ++ // -- a4 : address of the first argument ++ // ----------------------------------- ++ Label stack_overflow; ++ __ StackOverflowCheck(a0, a5, t0, &stack_overflow); ++ ++ if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ // The spread argument should not be pushed. ++ __ Subl(a0, a0, Operand(1)); ++ } ++ ++ Register argc_without_receiver = t9; ++ __ Subl(argc_without_receiver, a0, Operand(kJSArgcReceiverSlots)); ++ // Push the arguments, This function modifies t0, a4 and a5. ++ GenerateInterpreterPushArgs(masm, argc_without_receiver, a4, a5, t0); ++ ++ // Push a slot for the receiver. ++ __ Push(zero_reg); ++ ++ if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ // Pass the spread in the register a2. ++ // a4 already points to the penultimate argument, the spread ++ // lies in the next interpreter register. ++ __ Ldl(a2, MemOperand(a4, -kSystemPointerSize)); ++ } else { ++ __ AssertUndefinedOrAllocationSite(a2, t0); ++ } ++ ++ if (mode == InterpreterPushArgsMode::kArrayFunction) { ++ __ AssertFunction(a1); ++ ++ // Tail call to the function-specific construct stub (still in the caller ++ // context at this point). ++ __ Jump(BUILTIN_CODE(masm->isolate(), ArrayConstructorImpl), ++ RelocInfo::CODE_TARGET); ++ } else if (mode == InterpreterPushArgsMode::kWithFinalSpread) { ++ // Call the constructor with a0, a1, and a3 unmodified. ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithSpread), ++ RelocInfo::CODE_TARGET); ++ } else { ++ DCHECK_EQ(InterpreterPushArgsMode::kOther, mode); ++ // Call the constructor with a0, a1, and a3 unmodified. ++ __ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET); ++ } ++ ++ __ bind(&stack_overflow); ++ { ++ __ TailCallRuntime(Runtime::kThrowStackOverflow); ++ // Unreachable code. ++ __ sys_call(0x80); ++ } ++} ++ ++static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) { ++ // Set the return address to the correct point in the interpreter entry ++ // trampoline. ++ Label builtin_trampoline, trampoline_loaded; ++ Smi interpreter_entry_return_pc_offset( ++ masm->isolate()->heap()->interpreter_entry_return_pc_offset()); ++ DCHECK_NE(interpreter_entry_return_pc_offset, Smi::zero()); ++ ++ // If the SFI function_data is an InterpreterData, the function will have a ++ // custom copy of the interpreter entry trampoline for profiling. If so, ++ // get the custom trampoline, otherwise grab the entry address of the global ++ // trampoline. ++ __ Ldl(t0, MemOperand(fp, StandardFrameConstants::kFunctionOffset)); ++ __ Ldl(t0, FieldMemOperand(t0, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldl(t0, FieldMemOperand(t0, SharedFunctionInfo::kFunctionDataOffset)); ++ __ GetObjectType(t0, kInterpreterDispatchTableRegister, ++ kInterpreterDispatchTableRegister); ++ __ Branch(&builtin_trampoline, ne, kInterpreterDispatchTableRegister, ++ Operand(INTERPRETER_DATA_TYPE)); ++ ++ __ Ldl(t0, ++ FieldMemOperand(t0, InterpreterData::kInterpreterTrampolineOffset)); ++ __ LoadCodeEntry(t0, t0); ++ __ Branch(&trampoline_loaded); ++ ++ __ bind(&builtin_trampoline); ++ __ li(t0, ExternalReference:: ++ address_of_interpreter_entry_trampoline_instruction_start( ++ masm->isolate())); ++ __ Ldl(t0, MemOperand(t0)); ++ ++ __ bind(&trampoline_loaded); ++ __ Addl(ra, t0, Operand(interpreter_entry_return_pc_offset.value())); ++ ++ // Initialize the dispatch table register. ++ __ li(kInterpreterDispatchTableRegister, ++ ExternalReference::interpreter_dispatch_table_address(masm->isolate())); ++ ++ // Get the bytecode array pointer from the frame. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ ++ if (v8_flags.debug_code) { ++ // Check function data field is actually a BytecodeArray object. ++ __ SmiTst(kInterpreterBytecodeArrayRegister, kScratchReg); ++ __ Assert(ne, ++ AbortReason::kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry, ++ kScratchReg, Operand(zero_reg)); ++ __ GetObjectType(kInterpreterBytecodeArrayRegister, a1, a1); ++ __ Assert(eq, ++ AbortReason::kFunctionDataShouldBeBytecodeArrayOnInterpreterEntry, ++ a1, Operand(BYTECODE_ARRAY_TYPE)); ++ } ++ ++ // Get the target bytecode offset from the frame. ++ __ SmiUntag(kInterpreterBytecodeOffsetRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ ++ if (v8_flags.debug_code) { ++ Label okay; ++ __ Branch(&okay, ge, kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); ++ // Unreachable code. ++ __ sys_call(0x80); ++ __ bind(&okay); ++ } ++ ++ // Dispatch to the target bytecode. ++ __ Addl(a1, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister); ++ __ Ldbu(t10, MemOperand(a1)); ++ __ s8addl(t10, kInterpreterDispatchTableRegister, a1); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Ldl(kJavaScriptCallCodeStartRegister, MemOperand(a1)); ++ __ Jump(kJavaScriptCallCodeStartRegister); ++} ++ ++void Builtins::Generate_InterpreterEnterAtNextBytecode(MacroAssembler* masm) { ++ // Advance the current bytecode offset stored within the given interpreter ++ // stack frame. This simulates what all bytecode handlers do upon completion ++ // of the underlying operation. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ __ Ldl(kInterpreterBytecodeOffsetRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ __ SmiUntag(kInterpreterBytecodeOffsetRegister); ++ ++ Label enter_bytecode, function_entry_bytecode; ++ __ Branch(&function_entry_bytecode, eq, kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag + ++ kFunctionEntryBytecodeOffset)); ++ ++ // Load the current bytecode. ++ __ Addl(a1, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister); ++ __ Ldbu(a1, MemOperand(a1)); ++ ++ // Advance to the next bytecode. ++ Label if_return; ++ AdvanceBytecodeOffsetOrReturn(masm, kInterpreterBytecodeArrayRegister, ++ kInterpreterBytecodeOffsetRegister, a1, a2, a3, ++ a4, &if_return); ++ ++ __ bind(&enter_bytecode); ++ // Convert new bytecode offset to a Smi and save in the stackframe. ++ __ SmiTag(a2, kInterpreterBytecodeOffsetRegister); ++ __ Stl(a2, MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ ++ Generate_InterpreterEnterBytecode(masm); ++ ++ __ bind(&function_entry_bytecode); ++ // If the code deoptimizes during the implicit function entry stack interrupt ++ // check, it will have a bailout ID of kFunctionEntryBytecodeOffset, which is ++ // not a valid bytecode offset. Detect this case and advance to the first ++ // actual bytecode. ++ __ li(kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag)); ++ __ Branch(&enter_bytecode); ++ ++ // We should never take the if_return path. ++ __ bind(&if_return); ++ __ Abort(AbortReason::kInvalidBytecodeAdvance); ++} ++ ++void Builtins::Generate_InterpreterEnterAtBytecode(MacroAssembler* masm) { ++ Generate_InterpreterEnterBytecode(masm); ++} ++ ++namespace { ++void Generate_ContinueToBuiltinHelper(MacroAssembler* masm, ++ bool java_script_builtin, ++ bool with_result) { ++ const RegisterConfiguration* config(RegisterConfiguration::Default()); ++ int allocatable_register_count = config->num_allocatable_general_registers(); ++ UseScratchRegisterScope temps(masm); ++ Register scratch = temps.Acquire(); ++ ++ if (with_result) { ++ if (java_script_builtin) { ++ __ mov(scratch, v0); ++ } else { ++ // Overwrite the hole inserted by the deoptimizer with the return value ++ // from the LAZY deopt point. ++ __ Stl( ++ v0, ++ MemOperand( ++ sp, config->num_allocatable_general_registers() * kPointerSize + ++ BuiltinContinuationFrameConstants::kFixedFrameSize)); ++ } ++ } ++ for (int i = allocatable_register_count - 1; i >= 0; --i) { ++ int code = config->GetAllocatableGeneralCode(i); ++ __ Pop(Register::from_code(code)); ++ if (java_script_builtin && code == kJavaScriptCallArgCountRegister.code()) { ++ __ SmiUntag(Register::from_code(code)); ++ } ++ } ++ ++ if (with_result && java_script_builtin) { ++ // Overwrite the hole inserted by the deoptimizer with the return value from ++ // the LAZY deopt point. t0 contains the arguments count, the return value ++ // from LAZY is always the last argument. ++ constexpr int return_value_offset = ++ BuiltinContinuationFrameConstants::kFixedSlotCount - ++ kJSArgcReceiverSlots; ++ __ Addl(a0, a0, Operand(return_value_offset)); ++ __ Lsal(t0, sp, a0, kSystemPointerSizeLog2); ++ __ Stl(scratch, MemOperand(t0)); ++ // Recover arguments count. ++ __ Subl(a0, a0, Operand(return_value_offset)); ++ } ++ ++ __ Ldl(fp, MemOperand( ++ sp, BuiltinContinuationFrameConstants::kFixedFrameSizeFromFp)); ++ // Load builtin index (stored as a Smi) and use it to get the builtin start ++ // address from the builtins table. ++ __ Pop(t0); ++ __ Addl(sp, sp, ++ Operand(BuiltinContinuationFrameConstants::kFixedFrameSizeFromFp)); ++ __ Pop(ra); ++ __ LoadEntryFromBuiltinIndex(t0); ++ __ Jump(t0); ++} ++} // namespace ++ ++void Builtins::Generate_ContinueToCodeStubBuiltin(MacroAssembler* masm) { ++ Generate_ContinueToBuiltinHelper(masm, false, false); ++} ++ ++void Builtins::Generate_ContinueToCodeStubBuiltinWithResult( ++ MacroAssembler* masm) { ++ Generate_ContinueToBuiltinHelper(masm, false, true); ++} ++ ++void Builtins::Generate_ContinueToJavaScriptBuiltin(MacroAssembler* masm) { ++ Generate_ContinueToBuiltinHelper(masm, true, false); ++} ++ ++void Builtins::Generate_ContinueToJavaScriptBuiltinWithResult( ++ MacroAssembler* masm) { ++ Generate_ContinueToBuiltinHelper(masm, true, true); ++} ++ ++void Builtins::Generate_NotifyDeoptimized(MacroAssembler* masm) { ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ CallRuntime(Runtime::kNotifyDeoptimized); ++ } ++ ++ DCHECK_EQ(kInterpreterAccumulatorRegister.code(), v0.code()); ++ __ Ldl(v0, MemOperand(sp, 0 * kPointerSize)); ++ // Safe to fill delay slot Addw will emit one instruction. ++ __ Addl(sp, sp, Operand(1 * kPointerSize)); // Remove state. ++ __ Ret(); ++} ++ ++namespace { ++ ++void Generate_OSREntry(MacroAssembler* masm, Register entry_address, ++ Operand offset = Operand(zero_reg)) { ++ __ Addl(ra, entry_address, offset); ++ // And "return" to the OSR entry point of the function. ++ __ Ret(); ++} ++ ++enum class OsrSourceTier { ++ kInterpreter, ++ kBaseline, ++}; ++ ++void OnStackReplacement(MacroAssembler* masm, OsrSourceTier source, ++ Register maybe_target_code) { ++ Label jump_to_optimized_code; ++ { ++ // If maybe_target_code is not null, no need to call into runtime. A ++ // precondition here is: if maybe_target_code is a InstructionStream object, ++ // it must NOT be marked_for_deoptimization (callers must ensure this). ++ __ Branch(&jump_to_optimized_code, ne, maybe_target_code, ++ Operand(Smi::zero())); ++ } ++ ++ ASM_CODE_COMMENT(masm); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ CallRuntime(Runtime::kCompileOptimizedOSR); ++ } ++ ++ // If the code object is null, just return to the caller. ++ __ Ret(eq, maybe_target_code, Operand(Smi::zero())); ++ __ bind(&jump_to_optimized_code); ++ DCHECK_EQ(maybe_target_code, v0); // Already in the right spot. ++ ++ // OSR entry tracing. ++ { ++ Label next; ++ __ li(a1, ExternalReference::address_of_log_or_trace_osr()); ++ __ Ldbu(a1, MemOperand(a1)); ++ __ Branch(&next, eq, a1, Operand(zero_reg)); ++ ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(v0); // Preserve the code object. ++ __ CallRuntime(Runtime::kLogOrTraceOptimizedOSREntry, 0); ++ __ Pop(v0); ++ } ++ ++ __ bind(&next); ++ } ++ ++ if (source == OsrSourceTier::kInterpreter) { ++ // Drop the handler frame that is be sitting on top of the actual ++ // JavaScript frame. This is the case then OSR is triggered from bytecode. ++ __ LeaveFrame(StackFrame::STUB); ++ } ++ // Load deoptimization data from the code object. ++ // = [#deoptimization_data_offset] ++ __ Ldl(a1, MemOperand(maybe_target_code, ++ Code::kDeoptimizationDataOrInterpreterDataOffset - ++ kHeapObjectTag)); ++ ++ // Load the OSR entrypoint offset from the deoptimization data. ++ // = [#header_size + #osr_pc_offset] ++ __ SmiUntag(a1, MemOperand(a1, FixedArray::OffsetOfElementAt( ++ DeoptimizationData::kOsrPcOffsetIndex) - ++ kHeapObjectTag)); ++ ++ __ LoadCodeEntry(maybe_target_code, maybe_target_code); ++ ++ // Compute the target address = code_entry + osr_offset ++ // = + ++ Generate_OSREntry(masm, maybe_target_code, Operand(a1)); ++} ++} // namespace ++ ++void Builtins::Generate_InterpreterOnStackReplacement(MacroAssembler* masm) { ++ using D = OnStackReplacementDescriptor; ++ static_assert(D::kParameterCount == 1); ++ OnStackReplacement(masm, OsrSourceTier::kInterpreter, ++ D::MaybeTargetCodeRegister()); ++} ++ ++void Builtins::Generate_BaselineOnStackReplacement(MacroAssembler* masm) { ++ using D = OnStackReplacementDescriptor; ++ static_assert(D::kParameterCount == 1); ++ ++ __ Ldl(kContextRegister, ++ MemOperand(fp, BaselineFrameConstants::kContextOffset)); ++ OnStackReplacement(masm, OsrSourceTier::kBaseline, ++ D::MaybeTargetCodeRegister()); ++} ++ ++// static ++void Builtins::Generate_FunctionPrototypeApply(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : argc ++ // -- sp[0] : receiver ++ // -- sp[4] : thisArg ++ // -- sp[8] : argArray ++ // ----------------------------------- ++ ++ Register argc = a0; ++ Register arg_array = a2; ++ Register receiver = a1; ++ Register this_arg = a5; ++ Register undefined_value = a3; ++ Register scratch = a4; ++ ++ __ LoadRoot(undefined_value, RootIndex::kUndefinedValue); ++ ++ // 1. Load receiver into a1, argArray into a2 (if present), remove all ++ // arguments from the stack (including the receiver), and push thisArg (if ++ // present) instead. ++ { ++ __ Subl(scratch, argc, JSParameterCount(0)); ++ __ Ldl(this_arg, MemOperand(sp, kPointerSize)); ++ __ Ldl(arg_array, MemOperand(sp, 2 * kPointerSize)); ++ __ Seleq(arg_array, undefined_value, scratch); // if argc == 0 ++ __ Seleq(this_arg, undefined_value, scratch); // if argc == 0 ++ __ Subl(scratch, scratch, Operand(1)); ++ __ Seleq(arg_array, undefined_value, scratch); // if argc == 1 ++ __ Ldl(receiver, MemOperand(sp)); ++ __ DropArgumentsAndPushNewReceiver(argc, this_arg, ++ MacroAssembler::kCountIsInteger, ++ MacroAssembler::kCountIncludesReceiver); ++ } ++ ++ // ----------- S t a t e ------------- ++ // -- a2 : argArray ++ // -- a1 : receiver ++ // -- a3 : undefined root value ++ // -- sp[0] : thisArg ++ // ----------------------------------- ++ ++ // 2. We don't need to check explicitly for callable receiver here, ++ // since that's the first thing the Call/CallWithArrayLike builtins ++ // will do. ++ ++ // 3. Tail call with no arguments if argArray is null or undefined. ++ Label no_arguments; ++ __ JumpIfRoot(arg_array, RootIndex::kNullValue, &no_arguments); ++ __ Branch(&no_arguments, eq, arg_array, Operand(undefined_value)); ++ ++ // 4a. Apply the receiver to the given argArray. ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike), ++ RelocInfo::CODE_TARGET); ++ ++ // 4b. The argArray is either null or undefined, so we tail call without any ++ // arguments to the receiver. ++ __ bind(&no_arguments); ++ { ++ __ li(a0, JSParameterCount(0)); ++ DCHECK(receiver == a1); ++ __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); ++ } ++} ++ ++// static ++void Builtins::Generate_FunctionPrototypeCall(MacroAssembler* masm) { ++ // 1. Get the callable to call (passed as receiver) from the stack. ++ { __ Pop(a1); } ++ ++ // 2. Make sure we have at least one argument. ++ // a0: actual number of arguments ++ { ++ Label done; ++ __ Branch(&done, ne, a0, Operand(JSParameterCount(0))); ++ __ PushRoot(RootIndex::kUndefinedValue); ++ __ Addl(a0, a0, Operand(1)); ++ __ bind(&done); ++ } ++ ++ // 3. Adjust the actual number of arguments. ++ __ subl(a0, 1, a0); ++ ++ // 4. Call the callable. ++ __ Jump(masm->isolate()->builtins()->Call(), RelocInfo::CODE_TARGET); ++} ++ ++void Builtins::Generate_ReflectApply(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : argc ++ // -- sp[0] : receiver ++ // -- sp[8] : target (if argc >=1) ++ // -- sp[16] : thisArgument (if argc >= 2) ++ // -- sp[24] : argumentsList (if argc == 3) ++ // ----------------------------------- ++ ++ Register argc = a0; ++ Register arguments_list = a2; ++ Register target = a1; ++ Register this_argument = a5; ++ Register undefined_value = a3; ++ Register scratch = a4; ++ ++ __ LoadRoot(undefined_value, RootIndex::kUndefinedValue); ++ ++ // 1. Load target into a1 (if present), argumentsList into a2 (if present), ++ // remove all arguments from the stack (including the receiver), and push ++ // thisArgument (if present) instead. ++ { ++ // Claim (3 - argc) dummy arguments form the stack, to put the stack in a ++ // consistent state for a simple pop operation. ++ ++ __ Subl(scratch, argc, Operand(JSParameterCount(0))); ++ __ Ldl(target, MemOperand(sp, kPointerSize)); ++ __ Ldl(this_argument, MemOperand(sp, 2 * kPointerSize)); ++ __ Ldl(arguments_list, MemOperand(sp, 3 * kPointerSize)); ++ __ Seleq(arguments_list, undefined_value, scratch); // if argc == 0 ++ __ Seleq(this_argument, undefined_value, scratch); // if argc == 0 ++ __ Seleq(target, undefined_value, scratch); // if argc == 0 ++ __ Subl(scratch, scratch, Operand(1)); ++ __ Seleq(arguments_list, undefined_value, scratch); // if argc == 1 ++ __ Seleq(this_argument, undefined_value, scratch); // if argc == 1 ++ __ Subl(scratch, scratch, Operand(1)); ++ __ Seleq(arguments_list, undefined_value, scratch); // if argc == 2 ++ ++ __ DropArgumentsAndPushNewReceiver(argc, this_argument, ++ MacroAssembler::kCountIsInteger, ++ MacroAssembler::kCountIncludesReceiver); ++ } ++ ++ // ----------- S t a t e ------------- ++ // -- a2 : argumentsList ++ // -- a1 : target ++ // -- a3 : undefined root value ++ // -- sp[0] : thisArgument ++ // ----------------------------------- ++ ++ // 2. We don't need to check explicitly for callable target here, ++ // since that's the first thing the Call/CallWithArrayLike builtins ++ // will do. ++ ++ // 3. Apply the target to the given argumentsList. ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallWithArrayLike), ++ RelocInfo::CODE_TARGET); ++} ++ ++void Builtins::Generate_ReflectConstruct(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : argc ++ // -- sp[0] : receiver ++ // -- sp[8] : target ++ // -- sp[16] : argumentsList ++ // -- sp[24] : new.target (optional) ++ // ----------------------------------- ++ ++ Register argc = a0; ++ Register arguments_list = a2; ++ Register target = a1; ++ Register new_target = a3; ++ Register undefined_value = a4; ++ Register scratch = a5; ++ ++ __ LoadRoot(undefined_value, RootIndex::kUndefinedValue); ++ ++ // 1. Load target into a1 (if present), argumentsList into a2 (if present), ++ // new.target into a3 (if present, otherwise use target), remove all ++ // arguments from the stack (including the receiver), and push thisArgument ++ // (if present) instead. ++ { ++ // Claim (3 - argc) dummy arguments form the stack, to put the stack in a ++ // consistent state for a simple pop operation. ++ ++ __ Subl(scratch, argc, Operand(JSParameterCount(0))); ++ __ Ldl(target, MemOperand(sp, kPointerSize)); ++ __ Ldl(arguments_list, MemOperand(sp, 2 * kPointerSize)); ++ __ Ldl(new_target, MemOperand(sp, 3 * kPointerSize)); ++ __ Seleq(arguments_list, undefined_value, scratch); // if argc == 0 ++ __ Seleq(new_target, undefined_value, scratch); // if argc == 0 ++ __ Seleq(target, undefined_value, scratch); // if argc == 0 ++ __ Subl(scratch, scratch, Operand(1)); ++ __ Seleq(arguments_list, undefined_value, scratch); // if argc == 1 ++ __ Seleq(new_target, target, scratch); // if argc == 1 ++ __ Subl(scratch, scratch, Operand(1)); ++ __ Seleq(new_target, target, scratch); // if argc == 2 ++ ++ __ DropArgumentsAndPushNewReceiver(argc, undefined_value, ++ MacroAssembler::kCountIsInteger, ++ MacroAssembler::kCountIncludesReceiver); ++ } ++ ++ // ----------- S t a t e ------------- ++ // -- a2 : argumentsList ++ // -- a1 : target ++ // -- a3 : new.target ++ // -- sp[0] : receiver (undefined) ++ // ----------------------------------- ++ ++ // 2. We don't need to check explicitly for constructor target here, ++ // since that's the first thing the Construct/ConstructWithArrayLike ++ // builtins will do. ++ ++ // 3. We don't need to check explicitly for constructor new.target here, ++ // since that's the second thing the Construct/ConstructWithArrayLike ++ // builtins will do. ++ ++ // 4. Construct the target with the given new.target and argumentsList. ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructWithArrayLike), ++ RelocInfo::CODE_TARGET); ++} ++ ++namespace { ++ ++// Allocate new stack space for |count| arguments and shift all existing ++// arguments already on the stack. |pointer_to_new_space_out| points to the ++// first free slot on the stack to copy additional arguments to and ++// |argc_in_out| is updated to include |count|. ++void Generate_AllocateSpaceAndShiftExistingArguments( ++ MacroAssembler* masm, Register count, Register argc_in_out, ++ Register pointer_to_new_space_out, Register scratch1, Register scratch2, ++ Register scratch3) { ++ DCHECK(!AreAliased(count, argc_in_out, pointer_to_new_space_out, scratch1, ++ scratch2)); ++ Register old_sp = scratch1; ++ Register new_space = scratch2; ++ __ mov(old_sp, sp); ++ __ slll(count, kPointerSizeLog2, new_space); ++ __ Subl(sp, sp, Operand(new_space)); ++ ++ Register end = scratch2; ++ Register value = scratch3; ++ Register dest = pointer_to_new_space_out; ++ __ mov(dest, sp); ++ __ Lsal(end, old_sp, argc_in_out, kSystemPointerSizeLog2); ++ Label loop, done; ++ __ Branch(&done, ge, old_sp, Operand(end)); ++ __ bind(&loop); ++ __ Ldl(value, MemOperand(old_sp, 0)); ++ __ Stl(value, MemOperand(dest, 0)); ++ __ Addl(old_sp, old_sp, Operand(kSystemPointerSize)); ++ __ Addl(dest, dest, Operand(kSystemPointerSize)); ++ __ Branch(&loop, lt, old_sp, Operand(end)); ++ __ bind(&done); ++ ++ // Update total number of arguments. ++ __ Addl(argc_in_out, argc_in_out, count); ++} ++ ++} // namespace ++ ++// static ++void Builtins::Generate_CallOrConstructVarargs(MacroAssembler* masm, ++ Handle code) { ++ // ----------- S t a t e ------------- ++ // -- a1 : target ++ // -- a0 : number of parameters on the stack ++ // -- a2 : arguments list (a FixedArray) ++ // -- a4 : len (number of elements to push from args) ++ // -- a3 : new.target (for [[Construct]]) ++ // ----------------------------------- ++ if (v8_flags.debug_code) { ++ // Allow a2 to be a FixedArray, or a FixedDoubleArray if a4 == 0. ++ Label ok, fail; ++ __ AssertNotSmi(a2); ++ __ GetObjectType(a2, t8, t8); ++ __ Branch(&ok, eq, t8, Operand(FIXED_ARRAY_TYPE)); ++ __ Branch(&fail, ne, t8, Operand(FIXED_DOUBLE_ARRAY_TYPE)); ++ __ Branch(&ok, eq, a4, Operand(zero_reg)); ++ // Fall through. ++ __ bind(&fail); ++ __ Abort(AbortReason::kOperandIsNotAFixedArray); ++ ++ __ bind(&ok); ++ } ++ ++ Register args = a2; ++ Register len = a4; ++ ++ // Check for stack overflow. ++ Label stack_overflow; ++ __ StackOverflowCheck(len, kScratchReg, a5, &stack_overflow); ++ ++ // Move the arguments already in the stack, ++ // including the receiver and the return address. ++ // a4: Number of arguments to make room for. ++ // a0: Number of arguments already on the stack. ++ // t10: Points to first free slot on the stack after arguments were shifted. ++ Generate_AllocateSpaceAndShiftExistingArguments(masm, a4, a0, t10, t9, t0, ++ t1); ++ ++ // Push arguments onto the stack (thisArgument is already on the stack). ++ { ++ Label done, push, loop; ++ Register src = t9; ++ Register scratch = len; ++ ++ __ Addl(src, args, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); ++ __ slll(len, kPointerSizeLog2, scratch); ++ __ Branch(&done, eq, len, Operand(zero_reg)); ++ __ Subl(scratch, sp, Operand(scratch)); ++ __ LoadRoot(t1, RootIndex::kTheHoleValue); ++ __ bind(&loop); ++ __ Ldl(a5, MemOperand(src)); ++ __ addl(src, kPointerSize, src); ++ __ Branch(&push, ne, a5, Operand(t1)); ++ __ LoadRoot(a5, RootIndex::kUndefinedValue); ++ __ bind(&push); ++ __ Stl(a5, MemOperand(t10, 0)); ++ __ Addl(t10, t10, Operand(kSystemPointerSize)); ++ __ Addl(scratch, scratch, Operand(kSystemPointerSize)); ++ __ Branch(&loop, ne, scratch, Operand(sp)); ++ __ bind(&done); ++ } ++ ++ // Tail-call to the actual Call or Construct builtin. ++ __ Jump(code, RelocInfo::CODE_TARGET); ++ ++ __ bind(&stack_overflow); ++ __ TailCallRuntime(Runtime::kThrowStackOverflow); ++} ++ ++// static ++void Builtins::Generate_CallOrConstructForwardVarargs(MacroAssembler* masm, ++ CallOrConstructMode mode, ++ Handle code) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a3 : the new.target (for [[Construct]] calls) ++ // -- a1 : the target to call (can be any Object) ++ // -- a2 : start index (to support rest parameters) ++ // ----------------------------------- ++ ++ // Check if new.target has a [[Construct]] internal method. ++ if (mode == CallOrConstructMode::kConstruct) { ++ Label new_target_constructor, new_target_not_constructor; ++ __ JumpIfSmi(a3, &new_target_not_constructor); ++ __ Ldl(t1, FieldMemOperand(a3, HeapObject::kMapOffset)); ++ __ Ldbu(t1, FieldMemOperand(t1, Map::kBitFieldOffset)); ++ __ And(t1, t1, Operand(Map::Bits1::IsConstructorBit::kMask)); ++ __ Branch(&new_target_constructor, ne, t1, Operand(zero_reg)); ++ __ bind(&new_target_not_constructor); ++ { ++ FrameScope scope(masm, StackFrame::MANUAL); ++ __ EnterFrame(StackFrame::INTERNAL); ++ __ Push(a3); ++ __ CallRuntime(Runtime::kThrowNotConstructor); ++ } ++ __ bind(&new_target_constructor); ++ } ++ ++ Label stack_done, stack_overflow; ++ __ Ldl(t10, MemOperand(fp, StandardFrameConstants::kArgCOffset)); ++ __ Subl(t10, t10, Operand(kJSArgcReceiverSlots)); ++ __ Subl(t10, t10, a2); ++ __ Branch(&stack_done, le, t10, Operand(zero_reg)); ++ { ++ // Check for stack overflow. ++ __ StackOverflowCheck(t10, a4, a5, &stack_overflow); ++ ++ // Forward the arguments from the caller frame. ++ ++ // Point to the first argument to copy (skipping the receiver). ++ __ Addl(t9, fp, ++ Operand(CommonFrameConstants::kFixedFrameSizeAboveFp + ++ kSystemPointerSize)); ++ __ Lsal(t9, t9, a2, kSystemPointerSizeLog2); ++ ++ // Move the arguments already in the stack, ++ // including the receiver and the return address. ++ // t10: Number of arguments to make room for. ++ // a0: Number of arguments already on the stack. ++ // a2: Points to first free slot on the stack after arguments were shifted. ++ Generate_AllocateSpaceAndShiftExistingArguments(masm, t10, a0, a2, t0, t1, ++ t2); ++ ++ // Copy arguments from the caller frame. ++ // TODO(victorgomes): Consider using forward order as potentially more cache ++ // friendly. ++ { ++ Label loop; ++ __ bind(&loop); ++ { ++ __ Subw(t10, t10, Operand(1)); ++ __ Lsal(t0, t9, t10, kPointerSizeLog2); ++ __ Ldl(kScratchReg, MemOperand(t0)); ++ __ Lsal(t0, a2, t10, kPointerSizeLog2); ++ __ Stl(kScratchReg, MemOperand(t0)); ++ __ Branch(&loop, ne, t10, Operand(zero_reg)); ++ } ++ } ++ } ++ __ Branch(&stack_done); ++ __ bind(&stack_overflow); ++ __ TailCallRuntime(Runtime::kThrowStackOverflow); ++ __ bind(&stack_done); ++ ++ // Tail-call to the {code} handler. ++ __ Jump(code, RelocInfo::CODE_TARGET); ++} ++ ++// static ++void Builtins::Generate_CallFunction(MacroAssembler* masm, ++ ConvertReceiverMode mode) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSFunction) ++ // ----------------------------------- ++ __ AssertCallableFunction(a1); ++ ++ __ Ldl(a2, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); ++ ++ // Enter the context of the function; ToObject has to run in the function ++ // context, and we also need to take the global proxy from the function ++ // context in case of conversion. ++ __ Ldl(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); ++ // We need to convert the receiver for non-native sloppy mode functions. ++ Label done_convert; ++ __ Ldwu(a3, FieldMemOperand(a2, SharedFunctionInfo::kFlagsOffset)); ++ __ And(kScratchReg, a3, ++ Operand(SharedFunctionInfo::IsNativeBit::kMask | ++ SharedFunctionInfo::IsStrictBit::kMask)); ++ __ Branch(&done_convert, ne, kScratchReg, Operand(zero_reg)); ++ { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSFunction) ++ // -- a2 : the shared function info. ++ // -- cp : the function context. ++ // ----------------------------------- ++ ++ if (mode == ConvertReceiverMode::kNullOrUndefined) { ++ // Patch receiver to global proxy. ++ __ LoadGlobalProxy(a3); ++ } else { ++ Label convert_to_object, convert_receiver; ++ __ LoadReceiver(a3, a0); ++ __ JumpIfSmi(a3, &convert_to_object); ++ static_assert(LAST_JS_RECEIVER_TYPE == LAST_TYPE); ++ __ GetObjectType(a3, a4, a4); ++ __ Branch(&done_convert, hs, a4, Operand(FIRST_JS_RECEIVER_TYPE)); ++ if (mode != ConvertReceiverMode::kNotNullOrUndefined) { ++ Label convert_global_proxy; ++ __ JumpIfRoot(a3, RootIndex::kUndefinedValue, &convert_global_proxy); ++ __ JumpIfNotRoot(a3, RootIndex::kNullValue, &convert_to_object); ++ __ bind(&convert_global_proxy); ++ { ++ // Patch receiver to global proxy. ++ __ LoadGlobalProxy(a3); ++ } ++ __ Branch(&convert_receiver); ++ } ++ __ bind(&convert_to_object); ++ { ++ // Convert receiver using ToObject. ++ // TODO(bmeurer): Inline the allocation here to avoid building the frame ++ // in the fast case? (fall back to AllocateInNewSpace?) ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ SmiTag(a0); ++ __ Push(a0, a1); ++ __ mov(a0, a3); ++ __ Push(cp); ++ __ Call(BUILTIN_CODE(masm->isolate(), ToObject), ++ RelocInfo::CODE_TARGET); ++ __ Pop(cp); ++ __ mov(a3, v0); ++ __ Pop(a0, a1); ++ __ SmiUntag(a0); ++ } ++ __ Ldl(a2, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); ++ __ bind(&convert_receiver); ++ } ++ __ StoreReceiver(a3, a0, kScratchReg); ++ } ++ __ bind(&done_convert); ++ ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSFunction) ++ // -- a2 : the shared function info. ++ // -- cp : the function context. ++ // ----------------------------------- ++ ++ __ Ldhu(a2, ++ FieldMemOperand(a2, SharedFunctionInfo::kFormalParameterCountOffset)); ++ __ InvokeFunctionCode(a1, no_reg, a2, a0, InvokeType::kJump); ++} ++ ++// static ++void Builtins::Generate_CallBoundFunctionImpl(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSBoundFunction) ++ // ----------------------------------- ++ __ AssertBoundFunction(a1); ++ ++ // Patch the receiver to [[BoundThis]]. ++ { ++ __ Ldl(t0, FieldMemOperand(a1, JSBoundFunction::kBoundThisOffset)); ++ __ StoreReceiver(t0, a0, kScratchReg); ++ } ++ ++ // Load [[BoundArguments]] into a2 and length of that into a4. ++ __ Ldl(a2, FieldMemOperand(a1, JSBoundFunction::kBoundArgumentsOffset)); ++ __ SmiUntag(a4, FieldMemOperand(a2, FixedArray::kLengthOffset)); ++ ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSBoundFunction) ++ // -- a2 : the [[BoundArguments]] (implemented as FixedArray) ++ // -- a4 : the number of [[BoundArguments]] ++ // ----------------------------------- ++ ++ // Reserve stack space for the [[BoundArguments]]. ++ { ++ Label done; ++ __ slll(a4, kPointerSizeLog2, a5); ++ __ Subl(t0, sp, Operand(a5)); ++ // Check the stack for overflow. We are not trying to catch interruptions ++ // (i.e. debug break and preemption) here, so check the "real stack limit". ++ __ LoadStackLimit(kScratchReg, ++ MacroAssembler::StackLimitKind::kRealStackLimit); ++ __ Branch(&done, hs, t0, Operand(kScratchReg)); ++ { ++ FrameScope scope(masm, StackFrame::MANUAL); ++ __ EnterFrame(StackFrame::INTERNAL); ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ } ++ __ bind(&done); ++ } ++ ++ // Pop receiver. ++ __ Pop(t0); ++ ++ // Push [[BoundArguments]]. ++ { ++ Label loop, done_loop; ++ __ SmiUntag(a4, FieldMemOperand(a2, FixedArray::kLengthOffset)); ++ __ Addl(a0, a0, Operand(a4)); ++ __ Addl(a2, a2, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); ++ __ bind(&loop); ++ __ Subl(a4, a4, Operand(1)); ++ __ Branch(&done_loop, lt, a4, Operand(zero_reg)); ++ __ s8addl(a4, a2, a5); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Ldl(kScratchReg, MemOperand(a5)); ++ __ Push(kScratchReg); ++ __ Branch(&loop); ++ __ bind(&done_loop); ++ } ++ ++ // Push receiver. ++ __ Push(t0); ++ ++ // Call the [[BoundTargetFunction]] via the Call builtin. ++ __ Ldl(a1, FieldMemOperand(a1, JSBoundFunction::kBoundTargetFunctionOffset)); ++ __ Jump(BUILTIN_CODE(masm->isolate(), Call_ReceiverIsAny), ++ RelocInfo::CODE_TARGET); ++} ++ ++// static ++void Builtins::Generate_Call(MacroAssembler* masm, ConvertReceiverMode mode) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the target to call (can be any Object). ++ // ----------------------------------- ++ Register argc = a0; ++ Register target = a1; ++ Register map = t1; ++ Register instance_type = t2; ++ Register scratch = t11; ++ DCHECK(!AreAliased(argc, target, map, instance_type, scratch)); ++ ++ Label non_callable, class_constructor; ++ __ JumpIfSmi(target, &non_callable); ++ __ LoadMap(map, target); ++ __ GetInstanceTypeRange(map, instance_type, FIRST_CALLABLE_JS_FUNCTION_TYPE, ++ scratch); ++ __ Jump(masm->isolate()->builtins()->CallFunction(mode), ++ RelocInfo::CODE_TARGET, ls, scratch, ++ Operand(LAST_CALLABLE_JS_FUNCTION_TYPE - ++ FIRST_CALLABLE_JS_FUNCTION_TYPE)); ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallBoundFunction), ++ RelocInfo::CODE_TARGET, eq, instance_type, ++ Operand(JS_BOUND_FUNCTION_TYPE)); ++ ++ // Check if target has a [[Call]] internal method. ++ { ++ Register flags = t1; ++ __ Ldbu(flags, FieldMemOperand(map, Map::kBitFieldOffset)); ++ map = no_reg; ++ __ And(flags, flags, Operand(Map::Bits1::IsCallableBit::kMask)); ++ __ Branch(&non_callable, eq, flags, Operand(zero_reg)); ++ } ++ ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallProxy), RelocInfo::CODE_TARGET, eq, ++ instance_type, Operand(JS_PROXY_TYPE)); ++ ++ // Check if target is a wrapped function and call CallWrappedFunction external ++ // builtin ++ __ Jump(BUILTIN_CODE(masm->isolate(), CallWrappedFunction), ++ RelocInfo::CODE_TARGET, eq, instance_type, ++ Operand(JS_WRAPPED_FUNCTION_TYPE)); ++ ++ // ES6 section 9.2.1 [[Call]] ( thisArgument, argumentsList) ++ // Check that the function is not a "classConstructor". ++ __ Branch(&class_constructor, eq, instance_type, ++ Operand(JS_CLASS_CONSTRUCTOR_TYPE)); ++ ++ // 2. Call to something else, which might have a [[Call]] internal method (if ++ // not we raise an exception). ++ // Overwrite the original receiver with the (original) target. ++ __ StoreReceiver(target, argc, kScratchReg); ++ // Let the "call_as_function_delegate" take care of the rest. ++ __ LoadNativeContextSlot(target, Context::CALL_AS_FUNCTION_DELEGATE_INDEX); ++ __ Jump(masm->isolate()->builtins()->CallFunction( ++ ConvertReceiverMode::kNotNullOrUndefined), ++ RelocInfo::CODE_TARGET); ++ ++ // 3. Call to something that is not callable. ++ __ bind(&non_callable); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(target); ++ __ CallRuntime(Runtime::kThrowCalledNonCallable); ++ } ++ ++ // 4. The function is a "classConstructor", need to raise an exception. ++ __ bind(&class_constructor); ++ { ++ FrameScope frame(masm, StackFrame::INTERNAL); ++ __ Push(target); ++ __ CallRuntime(Runtime::kThrowConstructorNonCallableError); ++ } ++} ++ ++void Builtins::Generate_ConstructFunction(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the constructor to call (checked to be a JSFunction) ++ // -- a3 : the new target (checked to be a constructor) ++ // ----------------------------------- ++ __ AssertConstructor(a1); ++ __ AssertFunction(a1); ++ ++ // Calling convention for function specific ConstructStubs require ++ // a2 to contain either an AllocationSite or undefined. ++ __ LoadRoot(a2, RootIndex::kUndefinedValue); ++ ++ Label call_generic_stub; ++ ++ // Jump to JSBuiltinsConstructStub or JSConstructStubGeneric. ++ __ Ldl(a4, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldwu(a4, FieldMemOperand(a4, SharedFunctionInfo::kFlagsOffset)); ++ __ And(a4, a4, Operand(SharedFunctionInfo::ConstructAsBuiltinBit::kMask)); ++ __ Branch(&call_generic_stub, eq, a4, Operand(zero_reg)); ++ ++ __ Jump(BUILTIN_CODE(masm->isolate(), JSBuiltinsConstructStub), ++ RelocInfo::CODE_TARGET); ++ ++ __ bind(&call_generic_stub); ++ __ Jump(BUILTIN_CODE(masm->isolate(), JSConstructStubGeneric), ++ RelocInfo::CODE_TARGET); ++} ++ ++// static ++void Builtins::Generate_ConstructBoundFunction(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSBoundFunction) ++ // -- a3 : the new target (checked to be a constructor) ++ // ----------------------------------- ++ __ AssertConstructor(a1); ++ __ AssertBoundFunction(a1); ++ ++ // Load [[BoundArguments]] into a2 and length of that into a4. ++ __ Ldl(a2, FieldMemOperand(a1, JSBoundFunction::kBoundArgumentsOffset)); ++ __ SmiUntag(a4, FieldMemOperand(a2, FixedArray::kLengthOffset)); ++ ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the function to call (checked to be a JSBoundFunction) ++ // -- a2 : the [[BoundArguments]] (implemented as FixedArray) ++ // -- a3 : the new target (checked to be a constructor) ++ // -- a4 : the number of [[BoundArguments]] ++ // ----------------------------------- ++ ++ // Reserve stack space for the [[BoundArguments]]. ++ { ++ Label done; ++ __ slll(a4, kPointerSizeLog2, a5); ++ __ Subl(t0, sp, Operand(a5)); ++ // Check the stack for overflow. We are not trying to catch interruptions ++ // (i.e. debug break and preemption) here, so check the "real stack limit". ++ __ LoadStackLimit(kScratchReg, ++ MacroAssembler::StackLimitKind::kRealStackLimit); ++ __ Branch(&done, hs, t0, Operand(kScratchReg)); ++ { ++ FrameScope scope(masm, StackFrame::MANUAL); ++ __ EnterFrame(StackFrame::INTERNAL); ++ __ CallRuntime(Runtime::kThrowStackOverflow); ++ } ++ __ bind(&done); ++ } ++ ++ // Pop receiver. ++ __ Pop(t0); ++ ++ // Push [[BoundArguments]]. ++ { ++ Label loop, done_loop; ++ __ SmiUntag(a4, FieldMemOperand(a2, FixedArray::kLengthOffset)); ++ __ Addl(a0, a0, Operand(a4)); ++ __ Addl(a2, a2, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); ++ __ bind(&loop); ++ __ Subl(a4, a4, Operand(1)); ++ __ Branch(&done_loop, lt, a4, Operand(zero_reg)); ++ __ s8addl(a4, a2, a5); ++ DCHECK_EQ(kSystemPointerSizeLog2, 3); ++ __ Ldl(kScratchReg, MemOperand(a5)); ++ __ Push(kScratchReg); ++ __ Branch(&loop); ++ __ bind(&done_loop); ++ } ++ ++ // Push receiver. ++ __ Push(t0); ++ ++ // Patch new.target to [[BoundTargetFunction]] if new.target equals target. ++ { ++ Label skip_load; ++ __ Branch(&skip_load, ne, a1, Operand(a3)); ++ __ Ldl(a3, ++ FieldMemOperand(a1, JSBoundFunction::kBoundTargetFunctionOffset)); ++ __ bind(&skip_load); ++ } ++ ++ // Construct the [[BoundTargetFunction]] via the Construct builtin. ++ __ Ldl(a1, FieldMemOperand(a1, JSBoundFunction::kBoundTargetFunctionOffset)); ++ __ Jump(BUILTIN_CODE(masm->isolate(), Construct), RelocInfo::CODE_TARGET); ++} ++ ++// static ++void Builtins::Generate_Construct(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- a0 : the number of arguments ++ // -- a1 : the constructor to call (can be any Object) ++ // -- a3 : the new target (either the same as the constructor or ++ // the JSFunction on which new was invoked initially) ++ // ----------------------------------- ++ ++ Register argc = a0; ++ Register target = a1; ++ Register map = t1; ++ Register instance_type = t2; ++ Register scratch = t11; ++ DCHECK(!AreAliased(argc, target, map, instance_type, scratch)); ++ ++ // Check if target is a Smi. ++ Label non_constructor, non_proxy; ++ __ JumpIfSmi(target, &non_constructor); ++ ++ // Check if target has a [[Construct]] internal method. ++ __ ldl(map, FieldMemOperand(target, HeapObject::kMapOffset)); ++ { ++ Register flags = t3; ++ __ Ldbu(flags, FieldMemOperand(map, Map::kBitFieldOffset)); ++ __ And(flags, flags, Operand(Map::Bits1::IsConstructorBit::kMask)); ++ __ Branch(&non_constructor, eq, flags, Operand(zero_reg)); ++ } ++ ++ // Dispatch based on instance type. ++ __ GetInstanceTypeRange(map, instance_type, FIRST_JS_FUNCTION_TYPE, scratch); ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructFunction), ++ RelocInfo::CODE_TARGET, ls, scratch, ++ Operand(LAST_JS_FUNCTION_TYPE - FIRST_JS_FUNCTION_TYPE)); ++ ++ // Only dispatch to bound functions after checking whether they are ++ // constructors. ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructBoundFunction), ++ RelocInfo::CODE_TARGET, eq, instance_type, ++ Operand(JS_BOUND_FUNCTION_TYPE)); ++ ++ // Only dispatch to proxies after checking whether they are constructors. ++ __ Branch(&non_proxy, ne, instance_type, Operand(JS_PROXY_TYPE)); ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructProxy), ++ RelocInfo::CODE_TARGET); ++ ++ // Called Construct on an exotic Object with a [[Construct]] internal method. ++ __ bind(&non_proxy); ++ { ++ // Overwrite the original receiver with the (original) target. ++ __ StoreReceiver(target, argc, kScratchReg); ++ // Let the "call_as_constructor_delegate" take care of the rest. ++ __ LoadNativeContextSlot(target, ++ Context::CALL_AS_CONSTRUCTOR_DELEGATE_INDEX); ++ __ Jump(masm->isolate()->builtins()->CallFunction(), ++ RelocInfo::CODE_TARGET); ++ } ++ ++ // Called Construct on an Object that doesn't have a [[Construct]] internal ++ // method. ++ __ bind(&non_constructor); ++ __ Jump(BUILTIN_CODE(masm->isolate(), ConstructedNonConstructable), ++ RelocInfo::CODE_TARGET); ++} ++ ++#if V8_ENABLE_WEBASSEMBLY ++// Compute register lists for parameters to be saved. We save all parameter ++// registers (see wasm-linkage.h). They might be overwritten in the runtime ++// call below. We don't have any callee-saved registers in wasm, so no need to ++// store anything else. ++constexpr RegList kSavedGpRegs = ([]() constexpr { ++ RegList saved_gp_regs; ++ for (Register gp_param_reg : wasm::kGpParamRegisters) { ++ saved_gp_regs.set(gp_param_reg); ++ } ++ ++ // The instance has already been stored in the fixed part of the frame. ++ saved_gp_regs.clear(kWasmInstanceRegister); ++ // All set registers were unique. ++ CHECK_EQ(saved_gp_regs.Count(), arraysize(wasm::kGpParamRegisters) - 1); ++ CHECK_EQ(WasmLiftoffSetupFrameConstants::kNumberOfSavedGpParamRegs, ++ saved_gp_regs.Count()); ++ return saved_gp_regs; ++})(); ++ ++constexpr DoubleRegList kSavedFpRegs = ([]() constexpr { ++ DoubleRegList saved_fp_regs; ++ for (DoubleRegister fp_param_reg : wasm::kFpParamRegisters) { ++ saved_fp_regs.set(fp_param_reg); ++ } ++ ++ CHECK_EQ(saved_fp_regs.Count(), arraysize(wasm::kFpParamRegisters)); ++ CHECK_EQ(WasmLiftoffSetupFrameConstants::kNumberOfSavedFpParamRegs, ++ saved_fp_regs.Count()); ++ return saved_fp_regs; ++})(); ++ ++// Save all parameter registers (see wasm-linkage.h). They might be ++// overwritten in the runtime call below. We don't have any callee-saved ++// registers in wasm, so no need to store anything else. ++/* RegList kSavedGpRegs; ++ for (Register gp_param_reg : wasm::kGpParamRegisters) { ++ kSavedGpRegs.set(gp_param_reg); ++ } ++// kSavedGpRegs.set(a1); ++ ++ DoubleRegList kSavedFpRegs; ++ for (DoubleRegister fp_param_reg : wasm::kFpParamRegisters) { ++ kSavedFpRegs.set(fp_param_reg); ++ } ++ ++ CHECK_EQ(kSavedGpRegs.Count(), arraysize(wasm::kGpParamRegisters) ); ++ CHECK_EQ(kSavedFpRegs.Count(), arraysize(wasm::kFpParamRegisters)); ++ CHECK_EQ(WasmCompileLazyFrameConstants::kNumberOfSavedGpParamRegs + 1, ++ kSavedGpRegs.Count()); ++ CHECK_EQ(WasmCompileLazyFrameConstants::kNumberOfSavedFpParamRegs, ++ kSavedFpRegs.Count()); ++*/ ++// When entering this builtin, we have just created a Wasm stack frame: ++// ++// [ Wasm instance ] <-- sp ++// [ WASM frame marker ] ++// [ saved fp ] <-- fp ++// ++// Add the feedback vector to the stack. ++// ++// [ feedback vector ] <-- sp ++// [ Wasm instance ] ++// [ WASM frame marker ] ++// [ saved fp ] <-- fp ++void Builtins::Generate_WasmLiftoffFrameSetup(MacroAssembler* masm) { ++ Register func_index = wasm::kLiftoffFrameSetupFunctionReg; ++ Register vector = t1; ++ Register scratch = t2; ++ Label allocate_vector, done; ++ ++ __ Ldl(vector, FieldMemOperand(kWasmInstanceRegister, ++ WasmInstanceObject::kFeedbackVectorsOffset)); ++ __ Lsal(vector, vector, func_index, kTaggedSizeLog2); ++ __ Ldl(vector, FieldMemOperand(vector, FixedArray::kHeaderSize)); ++ __ JumpIfSmi(vector, &allocate_vector); ++ __ bind(&done); ++ __ Push(vector); ++ __ Ret(); ++ ++ __ bind(&allocate_vector); ++ // Feedback vector doesn't exist yet. Call the runtime to allocate it. ++ // We temporarily change the frame type for this, because we need special ++ // handling by the stack walker in case of GC. ++ __ li(scratch, StackFrame::TypeToMarker(StackFrame::WASM_LIFTOFF_SETUP)); ++ __ Stl(scratch, MemOperand(fp, TypedFrameConstants::kFrameTypeOffset)); ++ ++ // Save registers. ++ __ MultiPush(kSavedGpRegs); ++ __ MultiPushFPU(kSavedFpRegs); ++ __ Push(ra); ++ ++ // Arguments to the runtime function: instance, func_index, and an ++ // additional stack slot for the NativeModule. ++ __ SmiTag(func_index); ++ __ Push(kWasmInstanceRegister, func_index, zero_reg); ++ __ Move(cp, Smi::zero()); ++ __ CallRuntime(Runtime::kWasmAllocateFeedbackVector, 3); ++ __ mov(vector, kReturnRegister0); ++ ++ // Restore registers and frame type. ++ __ Pop(ra); ++ __ MultiPopFPU(kSavedFpRegs); ++ __ MultiPop(kSavedGpRegs); ++ __ Ldl(kWasmInstanceRegister, ++ MemOperand(fp, WasmFrameConstants::kWasmInstanceOffset)); ++ __ li(scratch, StackFrame::TypeToMarker(StackFrame::WASM)); ++ __ Stl(scratch, MemOperand(fp, TypedFrameConstants::kFrameTypeOffset)); ++ __ Branch(&done); ++} ++ ++void Builtins::Generate_WasmCompileLazy(MacroAssembler* masm) { ++ // The function index was put in t0 by the jump table trampoline. ++ // Convert to Smi for the runtime call ++ __ SmiTag(kWasmCompileLazyFuncIndexRegister); ++ ++ { ++ HardAbortScope hard_abort(masm); // Avoid calls to Abort. ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ ++ // Save registers that we need to keep alive across the runtime call. ++ __ Push(kWasmInstanceRegister); ++ __ MultiPush(kSavedGpRegs); ++#if 0 ++ // Check if machine has simd enabled, if so push vector registers. If not ++ // then only push double registers. ++ Label push_doubles, simd_pushed; ++ __ li(a1, ExternalReference::supports_wasm_simd_128_address()); ++ // If > 0 then simd is available. ++ __ Ldbu(a1, MemOperand(a1)); ++ __ Branch(&push_doubles, le, a1, Operand(zero_reg)); ++ // Save vector registers. ++#endif ++ __ MultiPushFPU(kSavedFpRegs); ++#if 0 ++ __ Branch(&simd_pushed); ++ __ bind(&push_doubles); ++ __ MultiPushFPU(kSavedFpRegs); ++ // kFixedFrameSizeFromFp is hard coded to include space for Simd ++ // registers, so we still need to allocate extra (unused) space on the stack ++ // as if they were saved. ++ __ Subl(sp, sp, kSavedFpRegs.Count() * kDoubleSize); ++ __ bind(&simd_pushed); ++#endif ++ // Pass instance and function index as an explicit arguments to the runtime ++ // function. ++ // Allocate a stack slot, where the runtime function can spill a pointer to ++ // the the NativeModule. ++ __ Push(kWasmInstanceRegister, kWasmCompileLazyFuncIndexRegister); ++ ++ // Initialize the JavaScript context with 0. CEntry will use it to ++ // set the current context on the isolate. ++ __ Move(kContextRegister, Smi::zero()); ++ __ CallRuntime(Runtime::kWasmCompileLazy, 2); ++ ++ // Restore registers. ++#if 0 ++ Label pop_doubles, simd_popped; ++ __ li(a1, ExternalReference::supports_wasm_simd_128_address()); ++ // If > 0 then simd is available. ++ __ Ldbu(a1, MemOperand(a1)); ++ __ Branch(&pop_doubles, le, a1, Operand(zero_reg)); ++ // Pop vector registers. ++ { ++ CpuFeatureScope swsa_scope( ++ masm, SW64_SIMD, CpuFeatureScope::CheckPolicy::kDontCheckSupported); ++ __ MultiPopSWSA(kSavedFpRegs); ++ } ++ __ Branch(&simd_popped); ++ __ bind(&pop_doubles); ++ __ Addl(sp, sp, kSavedFpRegs.Count() * kDoubleSize); ++#endif ++ __ MultiPopFPU(kSavedFpRegs); ++ //__ bind(&simd_popped); ++ __ MultiPop(kSavedGpRegs); ++ __ Pop(kWasmInstanceRegister); ++ } ++ ++ // Untag the returned Smi, for later use. ++ // static_assert(!kSavedGpRegs.has(v0)); ++ __ SmiUntag(v0); ++ ++ // The runtime function returned the jump table slot offset as a Smi (now in ++ // t11). Use that to compute the jump target. ++ // static_assert(!kSavedGpRegs.has(t11)); ++ __ Ldl(t11, FieldMemOperand(kWasmInstanceRegister, ++ WasmInstanceObject::kJumpTableStartOffset)); ++ __ Addl(t11, v0, t11); ++ ++ // Finally, jump to the jump table slot for the function. ++ __ Jump(t11); ++} ++ ++void Builtins::Generate_WasmDebugBreak(MacroAssembler* masm) { ++ HardAbortScope hard_abort(masm); // Avoid calls to Abort. ++ { ++ FrameScope scope(masm, StackFrame::WASM_DEBUG_BREAK); ++ ++ // Save all parameter registers. They might hold live values, we restore ++ // them after the runtime call. ++ __ MultiPush(WasmDebugBreakFrameConstants::kPushedGpRegs); ++ __ MultiPushFPU(WasmDebugBreakFrameConstants::kPushedFpRegs); ++ ++ // Initialize the JavaScript context with 0. CEntry will use it to ++ // set the current context on the isolate. ++ __ Move(cp, Smi::zero()); ++ __ CallRuntime(Runtime::kWasmDebugBreak, 0); ++ ++ // Restore registers. ++ __ MultiPopFPU(WasmDebugBreakFrameConstants::kPushedFpRegs); ++ __ MultiPop(WasmDebugBreakFrameConstants::kPushedGpRegs); ++ } ++ __ Ret(); ++} ++ ++void Builtins::Generate_GenericJSToWasmWrapper(MacroAssembler* masm) { ++ __ Trap(); ++} ++ ++void Builtins::Generate_WasmReturnPromiseOnSuspend(MacroAssembler* masm) { ++ // TODO(v8:12191): Implement for this platform. ++ __ Trap(); ++} ++ ++void Builtins::Generate_WasmSuspend(MacroAssembler* masm) { ++ // TODO(v8:12191): Implement for this platform. ++ __ Trap(); ++} ++ ++void Builtins::Generate_WasmResume(MacroAssembler* masm) { ++ // TODO(v8:12191): Implement for this platform. ++ __ Trap(); ++} ++ ++void Builtins::Generate_WasmReject(MacroAssembler* masm) { ++ // TODO(v8:12191): Implement for this platform. ++ __ Trap(); ++} ++ ++void Builtins::Generate_WasmOnStackReplace(MacroAssembler* masm) { ++ // Only needed on x64. ++ __ Trap(); ++} ++ ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++void Builtins::Generate_CEntry(MacroAssembler* masm, int result_size, ++ ArgvMode argv_mode, bool builtin_exit_frame) { ++ // Called from JavaScript; parameters are on stack as if calling JS function ++ // a0: number of arguments including receiver ++ // a1: pointer to builtin function ++ // fp: frame pointer (restored after C call) ++ // sp: stack pointer (restored as callee's sp after C call) ++ // cp: current context (C callee-saved) ++ // ++ // If argv_mode == ArgvMode::kRegister: ++ // a2: pointer to the first argument ++ ++ if (argv_mode == ArgvMode::kRegister) { ++ // Move argv into the correct register. ++ __ mov(s1, a2); ++ } else { ++ // Compute the argv pointer in a callee-saved register. ++ __ s8addl(a0, sp, s1); ++ DCHECK_EQ(kPointerSizeLog2, 3); ++ __ Subl(s1, s1, kPointerSize); ++ } ++ ++ // Enter the exit frame that transitions from JavaScript to C++. ++ FrameScope scope(masm, StackFrame::MANUAL); ++ __ EnterExitFrame( ++ 0, builtin_exit_frame ? StackFrame::BUILTIN_EXIT : StackFrame::EXIT); ++ ++ // s0: number of arguments including receiver (C callee-saved) ++ // s1: pointer to first argument (C callee-saved) ++ // s2: pointer to builtin function (C callee-saved) ++ ++ // Prepare arguments for C routine. ++ // a0 = argc ++ __ mov(s0, a0); ++ __ mov(s2, a1); ++ ++ // We are calling compiled C/C++ code. a0 and a1 hold our two arguments. We ++ // also need to reserve the 4 argument slots on the stack. ++ ++ __ AssertStackIsAligned(); ++ ++ // a0 = argc, a1 = argv, a2 = isolate ++ __ li(a2, ExternalReference::isolate_address(masm->isolate())); ++ __ mov(a1, s1); ++ ++ __ StoreReturnAddressAndCall(s2); ++ ++ // Result returned in v0 or v1:v0 (a5:v0) - do not destroy these registers! ++ ++ // Check result for exception sentinel. ++ Label exception_returned; ++ __ LoadRoot(a4, RootIndex::kException); ++ __ Branch(&exception_returned, eq, a4, Operand(v0)); ++ ++ // Check that there is no pending exception, otherwise we ++ // should have returned the exception sentinel. ++ if (v8_flags.debug_code) { ++ Label okay; ++ ExternalReference pending_exception_address = ExternalReference::Create( ++ IsolateAddressId::kPendingExceptionAddress, masm->isolate()); ++ __ li(a2, pending_exception_address); ++ __ Ldl(a2, MemOperand(a2)); ++ __ LoadRoot(a4, RootIndex::kTheHoleValue); ++ // Cannot use check here as it attempts to generate call into runtime. ++ __ Branch(&okay, eq, a4, Operand(a2)); ++ __ halt(); // stop("Unexpected pending exception"); ++ __ bind(&okay); ++ } ++ ++ // Exit C frame and return. ++ // v0:v1(v0:a5): result ++ // sp: stack pointer ++ // fp: frame pointer ++ Register argc = argv_mode == ArgvMode::kRegister ++ // We don't want to pop arguments so set argc to no_reg. ++ ? no_reg ++ // s0: still holds argc (callee-saved). ++ : s0; ++ __ LeaveExitFrame(argc, EMIT_RETURN); ++ ++ // Handling of exception. ++ __ bind(&exception_returned); ++ ++ ExternalReference pending_handler_context_address = ExternalReference::Create( ++ IsolateAddressId::kPendingHandlerContextAddress, masm->isolate()); ++ ExternalReference pending_handler_entrypoint_address = ++ ExternalReference::Create( ++ IsolateAddressId::kPendingHandlerEntrypointAddress, masm->isolate()); ++ ExternalReference pending_handler_fp_address = ExternalReference::Create( ++ IsolateAddressId::kPendingHandlerFPAddress, masm->isolate()); ++ ExternalReference pending_handler_sp_address = ExternalReference::Create( ++ IsolateAddressId::kPendingHandlerSPAddress, masm->isolate()); ++ ++ // Ask the runtime for help to determine the handler. This will set v0 to ++ // contain the current pending exception, don't clobber it. ++ ExternalReference find_handler = ++ ExternalReference::Create(Runtime::kUnwindAndFindExceptionHandler); ++ { ++ FrameScope scope(masm, StackFrame::MANUAL); ++ __ PrepareCallCFunction(3, 0, a0); ++ __ mov(a0, zero_reg); ++ __ mov(a1, zero_reg); ++ __ li(a2, ExternalReference::isolate_address(masm->isolate())); ++ __ CallCFunction(find_handler, 3); ++ } ++ ++ // Retrieve the handler context, SP and FP. ++ __ li(cp, pending_handler_context_address); ++ __ Ldl(cp, MemOperand(cp)); ++ __ li(sp, pending_handler_sp_address); ++ __ Ldl(sp, MemOperand(sp)); ++ __ li(fp, pending_handler_fp_address); ++ __ Ldl(fp, MemOperand(fp)); ++ ++ // If the handler is a JS frame, restore the context to the frame. Note that ++ // the context will be set to (cp == 0) for non-JS frames. ++ Label zero; ++ __ Branch(&zero, eq, cp, Operand(zero_reg)); ++ __ Stl(cp, MemOperand(fp, StandardFrameConstants::kContextOffset)); ++ __ bind(&zero); ++ ++ // Clear c_entry_fp, like we do in `LeaveExitFrame`. ++ { ++ // scratch may conficts to in li. ++ Register scratch = t11; ++ __ li(scratch, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, ++ masm->isolate())); ++ __ Stl(zero_reg, MemOperand(scratch)); ++ } ++ ++ // Compute the handler entry address and jump to it. ++ __ li(t12, pending_handler_entrypoint_address); ++ __ Ldl(t12, MemOperand(t12)); ++ __ Jump(t12); ++} ++ ++void Builtins::Generate_DoubleToI(MacroAssembler* masm) { ++ Label done; ++ Register result_reg = t0; ++ ++ Register scratch = GetRegisterThatIsNotOneOf(result_reg); ++ Register scratch2 = GetRegisterThatIsNotOneOf(result_reg, scratch); ++ Register scratch3 = GetRegisterThatIsNotOneOf(result_reg, scratch, scratch2); ++ ++ // Account for saved regs. ++ const int kArgumentOffset = 4 * kPointerSize; ++ ++ __ Push(result_reg, scratch, scratch2, scratch3); ++ ++ // Load the double value and perform a manual truncation. ++ Register input_high = scratch2; ++ Register input_low = scratch3; ++ ++ __ Ldw(input_low, ++ MemOperand(sp, kArgumentOffset + Register::kMantissaOffset)); ++ __ Ldw(input_high, ++ MemOperand(sp, kArgumentOffset + Register::kExponentOffset)); ++ ++ Label normal_exponent; ++ // Extract the biased exponent in result. ++ __ Extl(result_reg, input_high, HeapNumber::kExponentShift, ++ HeapNumber::kExponentBits); ++ ++ // Check for Infinity and NaNs, which should return 0. ++ __ Subw(scratch, result_reg, HeapNumber::kExponentMask); ++ __ Seleq(result_reg, zero_reg, scratch); ++ __ Branch(&done, eq, scratch, Operand(zero_reg)); ++ ++ // Express exponent as delta to (number of mantissa bits + 31). ++ __ Subw(result_reg, result_reg, ++ Operand(HeapNumber::kExponentBias + HeapNumber::kMantissaBits + 31)); ++ ++ // If the delta is strictly positive, all bits would be shifted away, ++ // which means that we can return 0. ++ __ Branch(&normal_exponent, le, result_reg, Operand(zero_reg)); ++ __ mov(result_reg, zero_reg); ++ __ Branch(&done); ++ ++ __ bind(&normal_exponent); ++ const int kShiftBase = HeapNumber::kNonMantissaBitsInTopWord - 1; ++ // Calculate shift. ++ __ Addw(scratch, result_reg, Operand(kShiftBase + HeapNumber::kMantissaBits)); ++ ++ // Save the sign. ++ Register sign = result_reg; ++ result_reg = no_reg; ++ __ And(sign, input_high, Operand(HeapNumber::kSignMask)); ++ ++ // On ARM shifts > 31 bits are valid and will result in zero. On SW64 we need ++ // to check for this specific case. ++ Label high_shift_needed, high_shift_done; ++ __ Branch(&high_shift_needed, lt, scratch, Operand(32)); ++ __ mov(input_high, zero_reg); ++ __ Branch(&high_shift_done); ++ __ bind(&high_shift_needed); ++ ++ // Set the implicit 1 before the mantissa part in input_high. ++ __ Or(input_high, input_high, ++ Operand(1 << HeapNumber::kMantissaBitsInTopWord)); ++ // Shift the mantissa bits to the correct position. ++ // We don't need to clear non-mantissa bits as they will be shifted away. ++ // If they weren't, it would mean that the answer is in the 32bit range. ++ __ Sllw(input_high, input_high, scratch); ++ ++ __ bind(&high_shift_done); ++ ++ // Replace the shifted bits with bits from the lower mantissa word. ++ Label pos_shift, shift_done; ++ __ li(kScratchReg, 32); ++ __ Subw(scratch, kScratchReg, scratch); ++ __ Branch(&pos_shift, ge, scratch, Operand(zero_reg)); ++ ++ // Negate scratch. ++ __ Subw(scratch, zero_reg, scratch); ++ __ Sllw(input_low, input_low, scratch); ++ __ Branch(&shift_done); ++ ++ __ bind(&pos_shift); ++ __ Srlw(input_low, input_low, scratch); ++ ++ __ bind(&shift_done); ++ __ Or(input_high, input_high, Operand(input_low)); ++ // Restore sign if necessary. ++ __ mov(scratch, sign); ++ result_reg = sign; ++ sign = no_reg; ++ __ Subw(result_reg, zero_reg, input_high); ++ __ Seleq(result_reg, input_high, scratch); ++ ++ __ bind(&done); ++ ++ __ Stl(result_reg, MemOperand(sp, kArgumentOffset)); ++ __ Pop(result_reg, scratch, scratch2, scratch3); ++ __ Ret(); ++} ++ ++namespace { ++ ++int AddressOffset(ExternalReference ref0, ExternalReference ref1) { ++ int64_t offset = (ref0.address() - ref1.address()); ++ DCHECK(static_cast(offset) == offset); ++ return static_cast(offset); ++} ++ ++// Calls an API function. Allocates HandleScope, extracts returned value ++// from handle and propagates exceptions. Restores context. stack_space ++// - space to be unwound on exit (includes the call JS arguments space and ++// the additional space allocated for the fast call). ++void CallApiFunctionAndReturn(MacroAssembler* masm, Register function_address, ++ ExternalReference thunk_ref, int stack_space, ++ MemOperand* stack_space_operand, ++ MemOperand return_value_operand) { ++ Isolate* isolate = masm->isolate(); ++ ExternalReference next_address = ++ ExternalReference::handle_scope_next_address(isolate); ++ const int kNextOffset = 0; ++ const int kLimitOffset = AddressOffset( ++ ExternalReference::handle_scope_limit_address(isolate), next_address); ++ const int kLevelOffset = AddressOffset( ++ ExternalReference::handle_scope_level_address(isolate), next_address); ++ ++ DCHECK(function_address == a1 || function_address == a2); ++ ++ // Allocate HandleScope in callee-save registers. ++ __ li(s3, next_address); ++ __ Ldl(s0, MemOperand(s3, kNextOffset)); ++ __ Ldl(s1, MemOperand(s3, kLimitOffset)); ++ __ Ldw(s2, MemOperand(s3, kLevelOffset)); ++ __ Addw(s2, s2, Operand(1)); ++ __ Stw(s2, MemOperand(s3, kLevelOffset)); ++ ++ Label profiler_enabled, done_api_call; ++ __ Ldb(t12, __ ExternalReferenceAsOperand( ++ ExternalReference::is_profiling_address(isolate), t12)); ++ __ Branch(&profiler_enabled, ne, t12, Operand(zero_reg)); ++#ifdef V8_RUNTIME_CALL_STATS ++ __ li(t12, ExternalReference::address_of_runtime_stats_flag()); ++ __ Ldw(t12, MemOperand(t12, 0)); ++ __ Branch(&profiler_enabled, ne, t12, Operand(zero_reg)); ++#endif // V8_RUNTIME_CALL_STATS ++ ++ // Call the api function directly. ++ __ mov(t12, function_address); ++ __ StoreReturnAddressAndCall(t12); ++ __ bind(&done_api_call); ++ ++ Label promote_scheduled_exception; ++ Label delete_allocated_handles; ++ Label leave_exit_frame; ++ Label return_value_loaded; ++ ++ // Load value from ReturnValue. ++ __ Ldl(v0, return_value_operand); ++ __ bind(&return_value_loaded); ++ ++ // No more valid handles (the result handle was the last one). Restore ++ // previous handle scope. ++ __ Stl(s0, MemOperand(s3, kNextOffset)); ++ if (v8_flags.debug_code) { ++ __ Ldw(a1, MemOperand(s3, kLevelOffset)); ++ __ Check(eq, AbortReason::kUnexpectedLevelAfterReturnFromApiCall, a1, ++ Operand(s2)); ++ } ++ __ Subw(s2, s2, Operand(1)); ++ __ Stw(s2, MemOperand(s3, kLevelOffset)); ++ __ Ldl(kScratchReg, MemOperand(s3, kLimitOffset)); ++ __ Branch(&delete_allocated_handles, ne, s1, Operand(kScratchReg)); ++ ++ // Leave the API exit frame. ++ __ bind(&leave_exit_frame); ++ ++ if (stack_space_operand == nullptr) { ++ DCHECK_NE(stack_space, 0); ++ __ li(s0, Operand(stack_space)); ++ } else { ++ DCHECK_EQ(stack_space, 0); ++ static_assert(kCArgSlotCount == 0); ++ __ Ldl(s0, *stack_space_operand); ++ } ++ ++ static constexpr bool kRegisterContainsSlotCount = false; ++ __ LeaveExitFrame(s0, NO_EMIT_RETURN, kRegisterContainsSlotCount); ++ ++ // Check if the function scheduled an exception. ++ __ LoadRoot(a4, RootIndex::kTheHoleValue); ++ __ li(kScratchReg, ExternalReference::scheduled_exception_address(isolate)); ++ __ Ldl(a5, MemOperand(kScratchReg)); ++ __ Branch(&promote_scheduled_exception, ne, a4, Operand(a5)); ++ ++ __ Ret(); ++ ++ // Call the api function via thunk wrapper. ++ __ bind(&profiler_enabled); ++ // Additional parameter is the address of the actual callback. ++ __ li(t12, thunk_ref); ++ __ StoreReturnAddressAndCall(t12); ++ __ Branch(&done_api_call); ++ ++ // Re-throw by promoting a scheduled exception. ++ __ bind(&promote_scheduled_exception); ++ __ TailCallRuntime(Runtime::kPromoteScheduledException); ++ ++ // HandleScope limit has changed. Delete allocated extensions. ++ __ bind(&delete_allocated_handles); ++ __ Stl(s1, MemOperand(s3, kLimitOffset)); ++ __ mov(s0, v0); ++ __ mov(a0, v0); ++ __ PrepareCallCFunction(1, s1); ++ __ li(a0, ExternalReference::isolate_address(isolate)); ++ __ CallCFunction(ExternalReference::delete_handle_scope_extensions(), 1); ++ __ mov(v0, s0); ++ __ jmp(&leave_exit_frame); ++} ++ ++} // namespace ++ ++void Builtins::Generate_CallApiCallback(MacroAssembler* masm) { ++ // ----------- S t a t e ------------- ++ // -- cp : context ++ // -- a1 : api function address ++ // -- a2 : arguments count ++ // -- a3 : call data ++ // -- a0 : holder ++ // -- sp[0] : receiver ++ // -- sp[8] : first argument ++ // -- ... ++ // -- sp[(argc) * 8] : last argument ++ // ----------------------------------- ++ ++ Register api_function_address = a1; ++ Register argc = a2; ++ Register call_data = a3; ++ Register holder = a0; ++ Register scratch = t0; ++ Register base = t1; // For addressing MemOperands on the stack. ++ ++ DCHECK(!AreAliased(api_function_address, argc, call_data, holder, scratch, ++ base)); ++ ++ using FCA = FunctionCallbackArguments; ++ ++ static_assert(FCA::kArgsLength == 6); ++ static_assert(FCA::kNewTargetIndex == 5); ++ static_assert(FCA::kDataIndex == 4); ++ static_assert(FCA::kReturnValueIndex == 3); ++ static_assert(FCA::kReturnValueDefaultValueIndex == 2); ++ static_assert(FCA::kIsolateIndex == 1); ++ static_assert(FCA::kHolderIndex == 0); ++ ++ // Set up FunctionCallbackInfo's implicit_args on the stack as follows: ++ // ++ // Target state: ++ // sp[0 * kPointerSize]: kHolder ++ // sp[1 * kPointerSize]: kIsolate ++ // sp[2 * kPointerSize]: undefined (kReturnValueDefaultValue) ++ // sp[3 * kPointerSize]: undefined (kReturnValue) ++ // sp[4 * kPointerSize]: kData ++ // sp[5 * kPointerSize]: undefined (kNewTarget) ++ ++ // Set up the base register for addressing through MemOperands. It will point ++ // at the receiver (located at sp + argc * kPointerSize). ++ __ s8addl(argc, sp, base); ++ DCHECK_EQ(kPointerSizeLog2, 3); ++ ++ // Reserve space on the stack. ++ __ Subl(sp, sp, Operand(FCA::kArgsLength * kPointerSize)); ++ ++ // kHolder. ++ __ Stl(holder, MemOperand(sp, 0 * kPointerSize)); ++ ++ // kIsolate. ++ __ li(scratch, ExternalReference::isolate_address(masm->isolate())); ++ __ Stl(scratch, MemOperand(sp, 1 * kPointerSize)); ++ ++ // kReturnValueDefaultValue and kReturnValue. ++ __ LoadRoot(scratch, RootIndex::kUndefinedValue); ++ __ Stl(scratch, MemOperand(sp, 2 * kPointerSize)); ++ __ Stl(scratch, MemOperand(sp, 3 * kPointerSize)); ++ ++ // kData. ++ __ Stl(call_data, MemOperand(sp, 4 * kPointerSize)); ++ ++ // kNewTarget. ++ __ Stl(scratch, MemOperand(sp, 5 * kPointerSize)); ++ ++ // Keep a pointer to kHolder (= implicit_args) in a scratch register. ++ // We use it below to set up the FunctionCallbackInfo object. ++ __ mov(scratch, sp); ++ ++ // Allocate the v8::Arguments structure in the arguments' space since ++ // it's not controlled by GC. ++ static constexpr int kApiStackSpace = 4; ++ FrameScope frame_scope(masm, StackFrame::MANUAL); ++ __ EnterExitFrame(kApiStackSpace, StackFrame::EXIT); ++ ++ // EnterExitFrame may align the sp. ++ ++ // FunctionCallbackInfo::implicit_args_ (points at kHolder as set up above). ++ // Arguments are after the return address (pushed by EnterExitFrame()). ++ __ Stl(scratch, MemOperand(sp, 1 * kPointerSize)); ++ ++ // FunctionCallbackInfo::values_ (points at the first varargs argument passed ++ // on the stack). ++ __ Addl(scratch, scratch, ++ Operand((FCA::kArgsLength + 1) * kSystemPointerSize)); ++ ++ __ Stl(scratch, MemOperand(sp, 2 * kPointerSize)); ++ ++ // FunctionCallbackInfo::length_. ++ // Stored as int field, 32-bit integers within struct on stack always left ++ // justified by n64 ABI. ++ __ Stw(argc, MemOperand(sp, 3 * kPointerSize)); ++ ++ // We also store the number of bytes to drop from the stack after returning ++ // from the API function here. ++ // Note: Unlike on other architectures, this stores the number of slots to ++ // drop, not the number of bytes. ++ __ Addl(scratch, argc, Operand(FCA::kArgsLength + 1 /* receiver */)); ++ __ Stl(scratch, MemOperand(sp, 4 * kPointerSize)); ++ ++ // v8::InvocationCallback's argument. ++ DCHECK(!AreAliased(api_function_address, scratch, a0)); ++ __ Addl(a0, sp, Operand(1 * kPointerSize)); ++ ++ ExternalReference thunk_ref = ExternalReference::invoke_function_callback(); ++ ++ // There are two stack slots above the arguments we constructed on the stack. ++ // TODO(jgruber): Document what these arguments are. ++ static constexpr int kStackSlotsAboveFCA = 2; ++ MemOperand return_value_operand( ++ fp, (kStackSlotsAboveFCA + FCA::kReturnValueIndex) * kPointerSize); ++ ++ static constexpr int kUseStackSpaceOperand = 0; ++ MemOperand stack_space_operand(sp, 4 * kPointerSize); ++ ++ AllowExternalCallThatCantCauseGC scope(masm); ++ CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, ++ kUseStackSpaceOperand, &stack_space_operand, ++ return_value_operand); ++} ++ ++void Builtins::Generate_CallApiGetter(MacroAssembler* masm) { ++ // Build v8::PropertyCallbackInfo::args_ array on the stack and push property ++ // name below the exit frame to make GC aware of them. ++ static_assert(PropertyCallbackArguments::kShouldThrowOnErrorIndex == 0); ++ static_assert(PropertyCallbackArguments::kHolderIndex == 1); ++ static_assert(PropertyCallbackArguments::kIsolateIndex == 2); ++ static_assert(PropertyCallbackArguments::kReturnValueDefaultValueIndex == 3); ++ static_assert(PropertyCallbackArguments::kReturnValueIndex == 4); ++ static_assert(PropertyCallbackArguments::kDataIndex == 5); ++ static_assert(PropertyCallbackArguments::kThisIndex == 6); ++ static_assert(PropertyCallbackArguments::kArgsLength == 7); ++ ++ Register receiver = ApiGetterDescriptor::ReceiverRegister(); ++ Register holder = ApiGetterDescriptor::HolderRegister(); ++ Register callback = ApiGetterDescriptor::CallbackRegister(); ++ Register scratch = a4; ++ DCHECK(!AreAliased(receiver, holder, callback, scratch)); ++ ++ Register api_function_address = a2; ++ ++ // Here and below +1 is for name() pushed after the args_ array. ++ using PCA = PropertyCallbackArguments; ++ __ Subl(sp, sp, (PCA::kArgsLength + 1) * kPointerSize); ++ __ Stl(receiver, MemOperand(sp, (PCA::kThisIndex + 1) * kPointerSize)); ++ __ Ldl(scratch, FieldMemOperand(callback, AccessorInfo::kDataOffset)); ++ __ Stl(scratch, MemOperand(sp, (PCA::kDataIndex + 1) * kPointerSize)); ++ __ LoadRoot(scratch, RootIndex::kUndefinedValue); ++ __ Stl(scratch, MemOperand(sp, (PCA::kReturnValueIndex + 1) * kPointerSize)); ++ __ Stl(scratch, MemOperand(sp, (PCA::kReturnValueDefaultValueIndex + 1) * ++ kPointerSize)); ++ __ li(scratch, ExternalReference::isolate_address(masm->isolate())); ++ __ Stl(scratch, MemOperand(sp, (PCA::kIsolateIndex + 1) * kPointerSize)); ++ __ Stl(holder, MemOperand(sp, (PCA::kHolderIndex + 1) * kPointerSize)); ++ // should_throw_on_error -> false ++ DCHECK_EQ(0, Smi::zero().ptr()); ++ __ Stl(zero_reg, ++ MemOperand(sp, (PCA::kShouldThrowOnErrorIndex + 1) * kPointerSize)); ++ __ Ldl(scratch, FieldMemOperand(callback, AccessorInfo::kNameOffset)); ++ __ Stl(scratch, MemOperand(sp, 0 * kPointerSize)); ++ ++ // v8::PropertyCallbackInfo::args_ array and name handle. ++ const int kStackUnwindSpace = PropertyCallbackArguments::kArgsLength + 1; ++ ++ // Load address of v8::PropertyAccessorInfo::args_ array and name handle. ++ __ mov(a0, sp); // a0 = Handle ++ __ Addl(a1, a0, Operand(1 * kPointerSize)); // a1 = v8::PCI::args_ ++ ++ const int kApiStackSpace = 1; ++ FrameScope frame_scope(masm, StackFrame::MANUAL); ++ __ EnterExitFrame(kApiStackSpace, StackFrame::EXIT); ++ ++ // Create v8::PropertyCallbackInfo object on the stack and initialize ++ // it's args_ field. ++ __ Stl(a1, MemOperand(sp, 1 * kPointerSize)); ++ __ Addl(a1, sp, Operand(1 * kPointerSize)); ++ // a1 = v8::PropertyCallbackInfo& ++ ++ ExternalReference thunk_ref = ++ ExternalReference::invoke_accessor_getter_callback(); ++ ++ __ Ldl(api_function_address, ++ FieldMemOperand(callback, AccessorInfo::kMaybeRedirectedGetterOffset)); ++ ++ // +3 is to skip prolog, return address and name handle. ++ MemOperand return_value_operand( ++ fp, (PropertyCallbackArguments::kReturnValueIndex + 3) * kPointerSize); ++ MemOperand* const kUseStackSpaceConstant = nullptr; ++ CallApiFunctionAndReturn(masm, api_function_address, thunk_ref, ++ kStackUnwindSpace, kUseStackSpaceConstant, ++ return_value_operand); ++} ++ ++void Builtins::Generate_DirectCEntry(MacroAssembler* masm) { ++ // The sole purpose of DirectCEntry is for movable callers (e.g. any general ++ // purpose InstructionStream object) to be able to call into C functions that ++ // may trigger GC and thus move the caller. ++ // ++ // DirectCEntry places the return address on the stack (updated by the GC), ++ // making the call GC safe. The irregexp backend relies on this. ++ ++ // Make place for arguments to fit C calling convention. Callers use ++ // EnterExitFrame/LeaveExitFrame so they handle stack restoring and we don't ++ // have to do that here. Any caller must drop kCArgsSlotsSize stack space ++ // after the call. ++ __ subl(sp, kCArgsSlotsSize, sp); ++ ++ __ Stl(ra, MemOperand(sp, kCArgsSlotsSize)); // Store the return address. ++ __ Call(t12); // Call the C++ function. ++ // set fpec 1 while return from C++. ++ __ setfpec1(); ++ __ Ldl(t12, MemOperand(sp, kCArgsSlotsSize)); // Return to calling code. ++ ++ if (v8_flags.debug_code && v8_flags.enable_slow_asserts) { ++ // In case of an error the return address may point to a memory area ++ // filled with kZapValue by the GC. Dereference the address and check for ++ // this. ++ __ Ldl_u(a4, MemOperand(t12)); ++ __ Assert(ne, AbortReason::kReceivedInvalidReturnAddress, a4, ++ Operand(reinterpret_cast(kZapValue))); ++ } ++ ++ __ Jump(t12); ++} ++ ++namespace { ++ ++// This code tries to be close to ia32 code so that any changes can be ++// easily ported. ++void Generate_DeoptimizationEntry(MacroAssembler* masm, ++ DeoptimizeKind deopt_kind) { ++ Isolate* isolate = masm->isolate(); ++ ++ // Unlike on ARM we don't save all the registers, just the useful ones. ++ // For the rest, there are gaps on the stack, so the offsets remain the same. ++ const int kNumberOfRegisters = Register::kNumRegisters; ++ ++ RegList restored_regs = kJSCallerSaved | kCalleeSaved; ++ RegList saved_regs = restored_regs | sp | ra; ++ ++ const int kDoubleRegsSize = kDoubleSize * DoubleRegister::kNumRegisters; ++ ++ // Save all double FPU registers before messing with them. ++ __ Subl(sp, sp, Operand(kDoubleRegsSize)); ++ const RegisterConfiguration* config = RegisterConfiguration::Default(); ++ for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { ++ int code = config->GetAllocatableDoubleCode(i); ++ const DoubleRegister fpu_reg = DoubleRegister::from_code(code); ++ int offset = code * kDoubleSize; ++ __ Fstd(fpu_reg, MemOperand(sp, offset)); ++ } ++ ++ // Push saved_regs (needed to populate FrameDescription::registers_). ++ // Leave gaps for other registers. ++ __ Subl(sp, sp, kNumberOfRegisters * kPointerSize); ++ for (int16_t i = kNumberOfRegisters - 1; i >= 0; i--) { ++ if ((saved_regs.bits() & (1 << i)) != 0) { ++ __ Stl(ToRegister(i), MemOperand(sp, kPointerSize * i)); ++ } ++ } ++ ++ __ li(a2, ++ ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, isolate)); ++ __ Stl(fp, MemOperand(a2)); ++ ++ const int kSavedRegistersAreaSize = ++ (kNumberOfRegisters * kPointerSize) + kDoubleRegsSize; ++ ++ // Get the address of the location in the code object (a2) (return ++ // address for lazy deoptimization) and compute the fp-to-sp delta in ++ // register a3. ++ __ mov(a2, ra); ++ __ Addl(a3, sp, Operand(kSavedRegistersAreaSize)); ++ ++ __ Subl(a3, fp, a3); ++ ++ // Allocate a new deoptimizer object. ++ __ PrepareCallCFunction(5, a4); ++ // Pass six arguments, according to n64 ABI. ++ __ mov(a0, zero_reg); ++ Label context_check; ++ __ Ldl(a1, MemOperand(fp, CommonFrameConstants::kContextOrFrameTypeOffset)); ++ __ JumpIfSmi(a1, &context_check); ++ __ Ldl(a0, MemOperand(fp, StandardFrameConstants::kFunctionOffset)); ++ __ bind(&context_check); ++ __ li(a1, Operand(static_cast(deopt_kind))); ++ // a2: code address or 0 already loaded. ++ // a3: already has fp-to-sp delta. ++ __ li(a4, ExternalReference::isolate_address(isolate)); ++ ++ // Call Deoptimizer::New(). ++ { ++ AllowExternalCallThatCantCauseGC scope(masm); ++ __ CallCFunction(ExternalReference::new_deoptimizer_function(), 5); ++ } ++ ++ // Preserve "deoptimizer" object in register v0 and get the input ++ // frame descriptor pointer to a1 (deoptimizer->input_); ++ // Move deopt-obj to a0 for call to Deoptimizer::ComputeOutputFrames() below. ++ __ mov(a0, v0); ++ __ Ldl(a1, MemOperand(v0, Deoptimizer::input_offset())); ++ ++ // Copy core registers into FrameDescription::registers_[kNumRegisters]. ++ DCHECK_EQ(Register::kNumRegisters, kNumberOfRegisters); ++ for (int i = 0; i < kNumberOfRegisters; i++) { ++ int offset = (i * kPointerSize) + FrameDescription::registers_offset(); ++ if ((saved_regs.bits() & (1 << i)) != 0) { ++ __ Ldl(a2, MemOperand(sp, i * kPointerSize)); ++ __ Stl(a2, MemOperand(a1, offset)); ++ } else if (v8_flags.debug_code) { ++ __ li(a2, kDebugZapValue); ++ __ Stl(a2, MemOperand(a1, offset)); ++ } ++ } ++ ++ int double_regs_offset = FrameDescription::double_registers_offset(); ++ // Copy FPU registers to ++ // double_registers_[DoubleRegister::kNumAllocatableRegisters] ++ for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { ++ int code = config->GetAllocatableDoubleCode(i); ++ int dst_offset = code * kDoubleSize + double_regs_offset; ++ int src_offset = code * kDoubleSize + kNumberOfRegisters * kPointerSize; ++ __ Fldd(f0, MemOperand(sp, src_offset)); ++ __ Fstd(f0, MemOperand(a1, dst_offset)); ++ } ++ ++ // Remove the saved registers from the stack. ++ __ Addl(sp, sp, Operand(kSavedRegistersAreaSize)); ++ ++ // Compute a pointer to the unwinding limit in register a2; that is ++ // the first stack slot not part of the input frame. ++ __ Ldl(a2, MemOperand(a1, FrameDescription::frame_size_offset())); ++ __ Addl(a2, a2, sp); ++ ++ // Unwind the stack down to - but not including - the unwinding ++ // limit and copy the contents of the activation frame to the input ++ // frame description. ++ __ Addl(a3, a1, Operand(FrameDescription::frame_content_offset())); ++ Label pop_loop; ++ Label pop_loop_header; ++ __ BranchShort(&pop_loop_header); ++ __ bind(&pop_loop); ++ __ pop(a4); ++ __ Stl(a4, MemOperand(a3, 0)); ++ __ addl(a3, sizeof(uint64_t), a3); ++ __ bind(&pop_loop_header); ++ __ BranchShort(&pop_loop, ne, a2, Operand(sp)); ++ // Compute the output frame in the deoptimizer. ++ __ Push(a0); // Preserve deoptimizer object across call. ++ // a0: deoptimizer object; a1: scratch. ++ __ PrepareCallCFunction(1, a1); ++ // Call Deoptimizer::ComputeOutputFrames(). ++ { ++ AllowExternalCallThatCantCauseGC scope(masm); ++ __ CallCFunction(ExternalReference::compute_output_frames_function(), 1); ++ } ++ __ pop(a0); // Restore deoptimizer object (class Deoptimizer). ++ ++ __ Ldl(sp, MemOperand(a0, Deoptimizer::caller_frame_top_offset())); ++ ++ // Replace the current (input) frame with the output frames. ++ Label outer_push_loop, inner_push_loop, outer_loop_header, inner_loop_header; ++ // Outer loop state: a4 = current "FrameDescription** output_", ++ // a1 = one past the last FrameDescription**. ++ __ Ldw(a1, MemOperand(a0, Deoptimizer::output_count_offset())); ++ __ Ldl(a4, MemOperand(a0, Deoptimizer::output_offset())); // a4 is output_. ++ __ Lsal(a1, a4, a1, kPointerSizeLog2); ++ __ BranchShort(&outer_loop_header); ++ __ bind(&outer_push_loop); ++ // Inner loop state: a2 = current FrameDescription*, a3 = loop index. ++ __ Ldl(a2, MemOperand(a4, 0)); // output_[ix] ++ __ Ldl(a3, MemOperand(a2, FrameDescription::frame_size_offset())); ++ __ BranchShort(&inner_loop_header); ++ __ bind(&inner_push_loop); ++ __ Subl(a3, a3, Operand(sizeof(uint64_t))); ++ __ Addl(t9, a2, Operand(a3)); ++ __ Ldl(t10, MemOperand(t9, FrameDescription::frame_content_offset())); ++ __ Push(t10); ++ __ bind(&inner_loop_header); ++ __ BranchShort(&inner_push_loop, ne, a3, Operand(zero_reg)); ++ ++ __ Addl(a4, a4, Operand(kPointerSize)); ++ __ bind(&outer_loop_header); ++ __ BranchShort(&outer_push_loop, lt, a4, Operand(a1)); ++ ++ __ Ldl(a1, MemOperand(a0, Deoptimizer::input_offset())); ++ for (int i = 0; i < config->num_allocatable_double_registers(); ++i) { ++ int code = config->GetAllocatableDoubleCode(i); ++ const DoubleRegister fpu_reg = DoubleRegister::from_code(code); ++ int src_offset = code * kDoubleSize + double_regs_offset; ++ __ Fldd(fpu_reg, MemOperand(a1, src_offset)); ++ } ++ ++ // Push pc and continuation from the last output frame. ++ __ Ldl(t9, MemOperand(a2, FrameDescription::pc_offset())); ++ __ Push(t9); ++ __ Ldl(t9, MemOperand(a2, FrameDescription::continuation_offset())); ++ __ Push(t9); ++ ++ // Technically restoring 'at' should work unless zero_reg is also restored ++ // but it's safer to check for this. ++ DCHECK(!(restored_regs.has(at))); ++ // Restore the registers from the last output frame. ++ __ mov(at, a2); ++ for (int i = kNumberOfRegisters - 1; i >= 0; i--) { ++ int offset = (i * kPointerSize) + FrameDescription::registers_offset(); ++ if ((restored_regs.bits() & (1 << i)) != 0) { ++ __ Ldl(ToRegister(i), MemOperand(at, offset)); ++ } ++ } ++ ++ __ pop(at); // Get continuation, leave pc on stack. ++ __ pop(ra); ++ __ Jump(at); ++ __ halt(); ++} ++ ++} // namespace ++ ++void Builtins::Generate_DeoptimizationEntry_Eager(MacroAssembler* masm) { ++ Generate_DeoptimizationEntry(masm, DeoptimizeKind::kEager); ++} ++ ++void Builtins::Generate_DeoptimizationEntry_Lazy(MacroAssembler* masm) { ++ Generate_DeoptimizationEntry(masm, DeoptimizeKind::kLazy); ++} ++ ++namespace { ++ ++// Restarts execution either at the current or next (in execution order) ++// bytecode. If there is baseline code on the shared function info, converts an ++// interpreter frame into a baseline frame and continues execution in baseline ++// code. Otherwise execution continues with bytecode. ++void Generate_BaselineOrInterpreterEntry(MacroAssembler* masm, ++ bool next_bytecode, ++ bool is_osr = false) { ++ Label start; ++ __ bind(&start); ++ ++ // Get function from the frame. ++ Register closure = a1; ++ __ Ldl(closure, MemOperand(fp, StandardFrameConstants::kFunctionOffset)); ++ ++ // Get the InstructionStream object from the shared function info. ++ Register code_obj = s1; ++ __ Ldl(code_obj, ++ FieldMemOperand(closure, JSFunction::kSharedFunctionInfoOffset)); ++ __ Ldl(code_obj, ++ FieldMemOperand(code_obj, SharedFunctionInfo::kFunctionDataOffset)); ++ ++ // Check if we have baseline code. For OSR entry it is safe to assume we ++ // always have baseline code. ++ if (!is_osr) { ++ Label start_with_baseline; ++ __ GetObjectType(code_obj, t2, t2); ++ __ Branch(&start_with_baseline, eq, t2, Operand(CODE_TYPE)); ++ ++ // Start with bytecode as there is no baseline code. ++ Builtin builtin_id = next_bytecode ++ ? Builtin::kInterpreterEnterAtNextBytecode ++ : Builtin::kInterpreterEnterAtBytecode; ++ __ Jump(masm->isolate()->builtins()->code_handle(builtin_id), ++ RelocInfo::CODE_TARGET); ++ ++ // Start with baseline code. ++ __ bind(&start_with_baseline); ++ } else if (v8_flags.debug_code) { ++ __ GetObjectType(code_obj, t2, t2); ++ __ Assert(eq, AbortReason::kExpectedBaselineData, t2, Operand(CODE_TYPE)); ++ } ++ ++ if (v8_flags.debug_code) { ++ AssertCodeIsBaseline(masm, code_obj, t2); ++ } ++ ++ // Replace BytecodeOffset with the feedback vector. ++ Register feedback_vector = a2; ++ __ Ldl(feedback_vector, ++ FieldMemOperand(closure, JSFunction::kFeedbackCellOffset)); ++ __ Ldl(feedback_vector, FieldMemOperand(feedback_vector, Cell::kValueOffset)); ++ ++ Label install_baseline_code; ++ // Check if feedback vector is valid. If not, call prepare for baseline to ++ // allocate it. ++ __ GetObjectType(feedback_vector, t2, t2); ++ __ Branch(&install_baseline_code, ne, t2, Operand(FEEDBACK_VECTOR_TYPE)); ++ ++ // Save BytecodeOffset from the stack frame. ++ __ SmiUntag(kInterpreterBytecodeOffsetRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ // Replace BytecodeOffset with the feedback vector. ++ __ Stl(feedback_vector, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeOffsetFromFp)); ++ feedback_vector = no_reg; ++ ++ // Compute baseline pc for bytecode offset. ++ ExternalReference get_baseline_pc_extref; ++ if (next_bytecode || is_osr) { ++ get_baseline_pc_extref = ++ ExternalReference::baseline_pc_for_next_executed_bytecode(); ++ } else { ++ get_baseline_pc_extref = ++ ExternalReference::baseline_pc_for_bytecode_offset(); ++ } ++ ++ Register get_baseline_pc = a3; ++ __ li(get_baseline_pc, get_baseline_pc_extref); ++ ++ // If the code deoptimizes during the implicit function entry stack interrupt ++ // check, it will have a bailout ID of kFunctionEntryBytecodeOffset, which is ++ // not a valid bytecode offset. ++ // TODO(pthier): Investigate if it is feasible to handle this special case ++ // in TurboFan instead of here. ++ Label valid_bytecode_offset, function_entry_bytecode; ++ if (!is_osr) { ++ __ Branch(&function_entry_bytecode, eq, kInterpreterBytecodeOffsetRegister, ++ Operand(BytecodeArray::kHeaderSize - kHeapObjectTag + ++ kFunctionEntryBytecodeOffset)); ++ } ++ ++ __ Subl(kInterpreterBytecodeOffsetRegister, ++ kInterpreterBytecodeOffsetRegister, ++ (BytecodeArray::kHeaderSize - kHeapObjectTag)); ++ ++ __ bind(&valid_bytecode_offset); ++ // Get bytecode array from the stack frame. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ // Save the accumulator register, since it's clobbered by the below call. ++ __ Push(kInterpreterAccumulatorRegister); ++ { ++ Register arg_reg_1 = a0; ++ Register arg_reg_2 = a1; ++ Register arg_reg_3 = a2; ++ __ Move(arg_reg_1, code_obj); ++ __ Move(arg_reg_2, kInterpreterBytecodeOffsetRegister); ++ __ Move(arg_reg_3, kInterpreterBytecodeArrayRegister); ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ PrepareCallCFunction(3, 0, a4); ++ __ CallCFunction(get_baseline_pc, 3, 0); ++ } ++ __ LoadCodeEntry(code_obj, code_obj); ++ __ Addl(code_obj, code_obj, kReturnRegister0); ++ __ Pop(kInterpreterAccumulatorRegister); ++ ++ if (is_osr) { ++ // TODO(pthier): Separate baseline Sparkplug from TF arming and don't disarm ++ // Sparkplug here. ++ // TODO(liuyu): Remove Ld as arm64 after register reallocation. ++ __ Ldl(kInterpreterBytecodeArrayRegister, ++ MemOperand(fp, InterpreterFrameConstants::kBytecodeArrayFromFp)); ++ ResetBytecodeAge(masm, kInterpreterBytecodeArrayRegister); ++ Generate_OSREntry(masm, code_obj); ++ } else { ++ __ Jump(code_obj); ++ } ++ __ Trap(); // Unreachable. ++ ++ if (!is_osr) { ++ __ bind(&function_entry_bytecode); ++ // If the bytecode offset is kFunctionEntryOffset, get the start address of ++ // the first bytecode. ++ __ mov(kInterpreterBytecodeOffsetRegister, zero_reg); ++ if (next_bytecode) { ++ __ li(get_baseline_pc, ++ ExternalReference::baseline_pc_for_bytecode_offset()); ++ } ++ __ Branch(&valid_bytecode_offset); ++ } ++ ++ __ bind(&install_baseline_code); ++ { ++ FrameScope scope(masm, StackFrame::INTERNAL); ++ __ Push(kInterpreterAccumulatorRegister); ++ __ Push(closure); ++ __ CallRuntime(Runtime::kInstallBaselineCode, 1); ++ __ Pop(kInterpreterAccumulatorRegister); ++ } ++ // Retry from the start after installing baseline code. ++ __ Branch(&start); ++} ++ ++} // namespace ++ ++void Builtins::Generate_BaselineOrInterpreterEnterAtBytecode( ++ MacroAssembler* masm) { ++ Generate_BaselineOrInterpreterEntry(masm, false); ++} ++ ++void Builtins::Generate_BaselineOrInterpreterEnterAtNextBytecode( ++ MacroAssembler* masm) { ++ Generate_BaselineOrInterpreterEntry(masm, true); ++} ++ ++void Builtins::Generate_InterpreterOnStackReplacement_ToBaseline( ++ MacroAssembler* masm) { ++ Generate_BaselineOrInterpreterEntry(masm, false, true); ++} ++ ++void Builtins::Generate_RestartFrameTrampoline(MacroAssembler* masm) { ++ // Frame is being dropped: ++ // - Look up current function on the frame. ++ // - Leave the frame. ++ // - Restart the frame by calling the function. ++ ++ __ Ldl(a1, MemOperand(fp, StandardFrameConstants::kFunctionOffset)); ++ __ Ldl(a0, MemOperand(fp, StandardFrameConstants::kArgCOffset)); ++ ++ // Pop return address and frame. ++ __ LeaveFrame(StackFrame::INTERPRETED); ++ ++ __ li(a2, Operand(kDontAdaptArgumentsSentinel)); ++ ++ __ InvokeFunction(a1, a2, a0, InvokeType::kJump); ++} ++ ++#undef __ ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/codegen/assembler-arch.h b/deps/v8/src/codegen/assembler-arch.h +index cb9f7456..713f10f7 100644 +--- a/deps/v8/src/codegen/assembler-arch.h ++++ b/deps/v8/src/codegen/assembler-arch.h +@@ -21,6 +21,8 @@ + #include "src/codegen/mips64/assembler-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/assembler-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/assembler-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/codegen/s390/assembler-s390.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/codegen/assembler-inl.h b/deps/v8/src/codegen/assembler-inl.h +index 3618e243..4f4fec41 100644 +--- a/deps/v8/src/codegen/assembler-inl.h ++++ b/deps/v8/src/codegen/assembler-inl.h +@@ -21,6 +21,8 @@ + #include "src/codegen/mips64/assembler-mips64-inl.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/assembler-loong64-inl.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/assembler-sw64-inl.h" + #elif V8_TARGET_ARCH_S390 + #include "src/codegen/s390/assembler-s390-inl.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/codegen/constants-arch.h b/deps/v8/src/codegen/constants-arch.h +index 1c8a0f54..1073185e 100644 +--- a/deps/v8/src/codegen/constants-arch.h ++++ b/deps/v8/src/codegen/constants-arch.h +@@ -15,6 +15,8 @@ + #include "src/codegen/mips64/constants-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/constants-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/constants-sw64.h" + #elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 + #include "src/codegen/ppc/constants-ppc.h" + #elif V8_TARGET_ARCH_S390 +diff --git a/deps/v8/src/codegen/cpu-features.h b/deps/v8/src/codegen/cpu-features.h +index 05164475..3186569f 100644 +--- a/deps/v8/src/codegen/cpu-features.h ++++ b/deps/v8/src/codegen/cpu-features.h +@@ -59,6 +59,13 @@ enum CpuFeature { + #elif V8_TARGET_ARCH_LOONG64 + FPU, + ++#elif V8_TARGET_ARCH_SW64 ++ FPU, ++//SKTODO ++ FP64FPU, ++ SW64_SIMD, // SSA instructions ++ SW_8A, // SW 8A instructions ++ + #elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 + PPC_6_PLUS, + PPC_7_PLUS, +diff --git a/deps/v8/src/codegen/external-reference.cc b/deps/v8/src/codegen/external-reference.cc +index 7990f521..d694b5db 100644 +--- a/deps/v8/src/codegen/external-reference.cc ++++ b/deps/v8/src/codegen/external-reference.cc +@@ -805,6 +805,8 @@ ExternalReference ExternalReference::invoke_accessor_getter_callback() { + #define re_stack_check_func RegExpMacroAssemblerMIPS::CheckStackGuardState + #elif V8_TARGET_ARCH_LOONG64 + #define re_stack_check_func RegExpMacroAssemblerLOONG64::CheckStackGuardState ++#elif V8_TARGET_ARCH_SW64 ++#define re_stack_check_func RegExpMacroAssemblerSW64::CheckStackGuardState + #elif V8_TARGET_ARCH_S390 + #define re_stack_check_func RegExpMacroAssemblerS390::CheckStackGuardState + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +@@ -1614,6 +1616,101 @@ static int EnterMicrotaskContextWrapper(HandleScopeImplementer* hsi, + + FUNCTION_REFERENCE(call_enter_context_function, EnterMicrotaskContextWrapper) + ++ ++// ===================================================================== ++// add start for SW64. ++ ++#define SW_CONST64(x) (x ## LL) ++ ++const int sw_min_int = (int)1 << (sizeof(int)*8-1); // 0x80000000 == smallest int ++const long sw_min_long = SW_CONST64(0x8000000000000000); ++ ++static int sw_div(int x, int y) { ++ if (x == sw_min_int && y == SW_CONST64(-1)) { ++ return x; ++ } else { ++#if defined(USE_SIMULATOR) ++ if (0 == y) return 0; ++#endif ++ ++ return x / y; ++ } ++} ++ ++static int sw_divu(uint32_t x, uint32_t y) { ++ return (int)(x / y); ++} ++ ++static long sw_ddiv(long x, long y) { ++ if (x == sw_min_long && y == SW_CONST64(-1)) { ++ return x; ++ } else { ++ return x / y; ++ } ++} ++ ++static long sw_ddivu(uint64_t x, uint64_t y) { ++ return (long)(x / y); ++} ++ ++static int sw_mod(int x, int y) { ++ if (x == sw_min_int && y == SW_CONST64(-1)) { ++ return 0; ++ } else { ++ return x % y; ++ } ++} ++ ++static int sw_modu(uint32_t x, uint32_t y) { ++ return (int)(x % y); ++} ++ ++static long sw_dmod(long x, long y) { ++ if (x == sw_min_long && y == SW_CONST64(-1)) { ++ return 0; ++ } else { ++ return x % y; ++ } ++} ++ ++static long sw_dmodu(uint64_t x, uint64_t y) { ++ return (long)(x % y); ++} ++ ++ExternalReference ExternalReference::math_sw_div_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_div))); ++} ++ ++ExternalReference ExternalReference::math_sw_divu_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_divu))); ++} ++ ++ExternalReference ExternalReference::math_sw_ddiv_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_ddiv))); ++} ++ ++ExternalReference ExternalReference::math_sw_ddivu_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_ddivu))); ++} ++ ++ExternalReference ExternalReference::math_sw_mod_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_mod))); ++} ++ ++ExternalReference ExternalReference::math_sw_modu_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_modu))); ++} ++ ++ExternalReference ExternalReference::math_sw_dmod_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_dmod))); ++} ++ ++ExternalReference ExternalReference::math_sw_dmodu_function() { ++ return ExternalReference(Redirect(FUNCTION_ADDR(sw_dmodu))); ++} ++// add end for SW64. ++// ====================================================================== ++ + FUNCTION_REFERENCE( + js_finalization_registry_remove_cell_from_unregister_token_map, + JSFinalizationRegistry::RemoveCellFromUnregisterTokenMap) +diff --git a/deps/v8/src/codegen/external-reference.h b/deps/v8/src/codegen/external-reference.h +index 503b5b68..8487db12 100644 +--- a/deps/v8/src/codegen/external-reference.h ++++ b/deps/v8/src/codegen/external-reference.h +@@ -141,6 +141,14 @@ class StatsCounter; + V(f64_acos_wrapper_function, "f64_acos_wrapper") \ + V(f64_asin_wrapper_function, "f64_asin_wrapper") \ + V(f64_mod_wrapper_function, "f64_mod_wrapper") \ ++ V(math_sw_div_function, "sw_div") \ ++ V(math_sw_divu_function, "sw_divu") \ ++ V(math_sw_ddiv_function, "sw_ddiv") \ ++ V(math_sw_ddivu_function, "sw_ddivu") \ ++ V(math_sw_mod_function, "sw_mod") \ ++ V(math_sw_modu_function, "sw_modu") \ ++ V(math_sw_dmod_function, "sw_dmod") \ ++ V(math_sw_dmodu_function, "sw_dmodu") \ + V(get_date_field_function, "JSDate::GetField") \ + V(get_or_create_hash_raw, "get_or_create_hash_raw") \ + V(gsab_byte_length, "GsabByteLength") \ +diff --git a/deps/v8/src/codegen/interface-descriptors-inl.h b/deps/v8/src/codegen/interface-descriptors-inl.h +index f94e5040..3005fe81 100644 +--- a/deps/v8/src/codegen/interface-descriptors-inl.h ++++ b/deps/v8/src/codegen/interface-descriptors-inl.h +@@ -27,6 +27,8 @@ + #include "src/codegen/mips64/interface-descriptors-mips64-inl.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/interface-descriptors-loong64-inl.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/interface-descriptors-sw64-inl.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 + #include "src/codegen/riscv/interface-descriptors-riscv-inl.h" + #else +@@ -244,7 +246,7 @@ constexpr RegList WriteBarrierDescriptor::ComputeSavedRegisters( + saved_registers.set(SlotAddressRegister()); + } + #elif V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_LOONG64 || \ +- V8_TARGET_ARCH_MIPS64 ++ V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_SW64 + if (object != ObjectRegister()) saved_registers.set(ObjectRegister()); + // The slot address is always clobbered. + saved_registers.set(SlotAddressRegister()); +@@ -361,7 +363,7 @@ constexpr auto BaselineOutOfLinePrologueDescriptor::registers() { + #if V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_ARM || \ + V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_S390 || \ + V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_MIPS64 || \ +- V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 ++ V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_SW64 + return RegisterArray( + kContextRegister, kJSFunctionRegister, kJavaScriptCallArgCountRegister, + kJavaScriptCallExtraArg1Register, kJavaScriptCallNewTargetRegister, +@@ -382,7 +384,7 @@ constexpr auto BaselineLeaveFrameDescriptor::registers() { + #if V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_ARM64 || \ + V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 || \ + V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_MIPS64 || \ +- V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 ++ V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_SW64 + return RegisterArray(ParamsSizeRegister(), WeightRegister()); + #else + return DefaultRegisterArray(); +@@ -391,7 +393,14 @@ constexpr auto BaselineLeaveFrameDescriptor::registers() { + + // static + constexpr auto OnStackReplacementDescriptor::registers() { ++#if V8_TARGET_ARCH_SW64 ++ return RegisterArray(kReturnRegister0, kJavaScriptCallArgCountRegister, ++ kJavaScriptCallTargetRegister, ++ kJavaScriptCallCodeStartRegister, ++ kJavaScriptCallNewTargetRegister); ++#else + return DefaultRegisterArray(); ++#endif + } + + // static +diff --git a/deps/v8/src/codegen/macro-assembler.h b/deps/v8/src/codegen/macro-assembler.h +index 3e5d8380..0e199929 100644 +--- a/deps/v8/src/codegen/macro-assembler.h ++++ b/deps/v8/src/codegen/macro-assembler.h +@@ -57,6 +57,9 @@ enum class SmiCheck { kOmit, kInline }; + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/constants-loong64.h" + #include "src/codegen/loong64/macro-assembler-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/codegen/sw64/macro-assembler-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/codegen/s390/constants-s390.h" + #include "src/codegen/s390/macro-assembler-s390.h" +diff --git a/deps/v8/src/codegen/register-arch.h b/deps/v8/src/codegen/register-arch.h +index a97c2cc2..785a8272 100644 +--- a/deps/v8/src/codegen/register-arch.h ++++ b/deps/v8/src/codegen/register-arch.h +@@ -21,6 +21,8 @@ + #include "src/codegen/mips64/register-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/register-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/register-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/codegen/s390/register-s390.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/codegen/register-configuration.cc b/deps/v8/src/codegen/register-configuration.cc +index 8b7b9f00..87e10e36 100644 +--- a/deps/v8/src/codegen/register-configuration.cc ++++ b/deps/v8/src/codegen/register-configuration.cc +@@ -94,6 +94,8 @@ static int get_num_allocatable_double_registers() { + kMaxAllocatableDoubleRegisterCount; + #elif V8_TARGET_ARCH_LOONG64 + kMaxAllocatableDoubleRegisterCount; ++#elif V8_TARGET_ARCH_SW64 ++ kMaxAllocatableDoubleRegisterCount; + #elif V8_TARGET_ARCH_PPC + kMaxAllocatableDoubleRegisterCount; + #elif V8_TARGET_ARCH_PPC64 +diff --git a/deps/v8/src/codegen/reglist.h b/deps/v8/src/codegen/reglist.h +index 2aa37940..e06d7511 100644 +--- a/deps/v8/src/codegen/reglist.h ++++ b/deps/v8/src/codegen/reglist.h +@@ -17,6 +17,8 @@ + #include "src/codegen/ppc/reglist-ppc.h" + #elif V8_TARGET_ARCH_MIPS64 + #include "src/codegen/mips64/reglist-mips64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/codegen/sw64/reglist-sw64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/codegen/loong64/reglist-loong64.h" + #elif V8_TARGET_ARCH_S390 +diff --git a/deps/v8/src/codegen/reloc-info.cc b/deps/v8/src/codegen/reloc-info.cc +index a7c4be40..52c33e06 100644 +--- a/deps/v8/src/codegen/reloc-info.cc ++++ b/deps/v8/src/codegen/reloc-info.cc +@@ -327,7 +327,7 @@ bool RelocInfo::OffHeapTargetIsCodedSpecially() { + #elif defined(V8_TARGET_ARCH_IA32) || defined(V8_TARGET_ARCH_MIPS64) || \ + defined(V8_TARGET_ARCH_PPC) || defined(V8_TARGET_ARCH_PPC64) || \ + defined(V8_TARGET_ARCH_S390) || defined(V8_TARGET_ARCH_RISCV64) || \ +- defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_RISCV32) ++ defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_RISCV32) || defined(V8_TARGET_ARCH_SW64) + return true; + #endif + } +diff --git a/deps/v8/src/codegen/sw64/assembler-sw64-inl.h b/deps/v8/src/codegen/sw64/assembler-sw64-inl.h +new file mode 100644 +index 00000000..666ed7ed +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/assembler-sw64-inl.h +@@ -0,0 +1,265 @@ ++ ++// Copyright (c) 1994-2006 Sun Microsystems Inc. ++// All Rights Reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions are ++// met: ++// ++// - Redistributions of source code must retain the above copyright notice, ++// this list of conditions and the following disclaimer. ++// ++// - Redistribution in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// ++// - Neither the name of Sun Microsystems or the names of contributors may ++// be used to endorse or promote products derived from this software without ++// specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER OR ++// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ++// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ++// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++// The original source code covered by the above license above has been ++// modified significantly by Google Inc. ++// Copyright 2012 the V8 project authors. All rights reserved. ++ ++#ifndef V8_CODEGEN_SW64_ASSEMBLER_SW64_INL_H_ ++#define V8_CODEGEN_SW64_ASSEMBLER_SW64_INL_H_ ++ ++#include "src/codegen/assembler.h" ++#include "src/codegen/flush-instruction-cache.h" ++#include "src/codegen/sw64/assembler-sw64.h" ++#include "src/debug/debug.h" ++#include "src/objects/objects-inl.h" ++ ++namespace v8 { ++namespace internal { ++ ++bool CpuFeatures::SupportsOptimizer() { return IsSupported(FPU); } ++ ++// ----------------------------------------------------------------------------- ++// Operand and MemOperand. ++ ++bool Operand::is_reg() const { return rm_.is_valid(); } ++ ++int64_t Operand::immediate() const { ++ DCHECK(!is_reg()); ++ DCHECK(!IsHeapNumberRequest()); ++ return value_.immediate; ++} ++ ++// ----------------------------------------------------------------------------- ++// RelocInfo. ++ ++void RelocInfo::apply(intptr_t delta) { ++ if (IsInternalReference(rmode_) || IsInternalReferenceEncoded(rmode_)) { ++ // Absolute code pointer inside code object moves with the code object. ++ Assembler::RelocateInternalReference(rmode_, pc_, delta); ++ } ++} ++ ++Address RelocInfo::target_address() { ++ DCHECK(IsCodeTarget(rmode_) || IsWasmCall(rmode_) || IsWasmStubCall(rmode_)); ++ return Assembler::target_address_at(pc_, constant_pool_); ++} ++ ++Address RelocInfo::target_address_address() { ++ DCHECK(HasTargetAddressAddress()); ++ // Read the address of the word containing the target_address in an ++ // instruction stream. ++ // The only architecture-independent user of this function is the serializer. ++ // The serializer uses it to find out how many raw bytes of instruction to ++ // output before the next target. ++ // For an instruction like LUI/ORI where the target bits are mixed into the ++ // instruction bits, the size of the target will be zero, indicating that the ++ // serializer should not step forward in memory after a target is resolved ++ // and written. In this case the target_address_address function should ++ // return the end of the instructions to be patched, allowing the ++ // deserializer to deserialize the instructions as raw bytes and put them in ++ // place, ready to be patched with the target. After jump optimization, ++ // that is the address of the instruction that follows J/JAL/JR/JALR ++ // instruction. ++ return pc_ + Assembler::kInstructionsFor64BitConstant * kInstrSize; ++} ++ ++Address RelocInfo::constant_pool_entry_address() { UNREACHABLE(); } ++ ++int RelocInfo::target_address_size() { return Assembler::kSpecialTargetSize; } ++ ++void Assembler::deserialization_set_special_target_at( ++ Address instruction_payload, Code code, Address target) { ++ set_target_address_at(instruction_payload, ++ !code.is_null() ? code.constant_pool() : kNullAddress, ++ target); ++} ++ ++int Assembler::deserialization_special_target_size( ++ Address instruction_payload) { ++ return kSpecialTargetSize; ++} ++ ++void Assembler::set_target_internal_reference_encoded_at(Address pc, ++ Address target) { ++ // Encoded internal references are j/jal instructions. ++ Instr instr = Assembler::instr_at(pc + 0 * kInstrSize); ++ ++ uint64_t imm28 = target & static_cast(kImm28Mask); ++ ++ instr &= ~kImm26Mask; ++ uint64_t imm26 = imm28 >> 2; ++ DCHECK(is_uint26(imm26)); ++ ++ instr_at_put(pc, instr | (imm26 & kImm26Mask)); ++ // Currently used only by deserializer, and all code will be flushed ++ // after complete deserialization, no need to flush on each reference. ++} ++ ++void Assembler::deserialization_set_target_internal_reference_at( ++ Address pc, Address target, RelocInfo::Mode mode) { ++ if (mode == RelocInfo::INTERNAL_REFERENCE_ENCODED) { ++ UNREACHABLE(); // DCHECK(IsJ(instr_at(pc))); ++ set_target_internal_reference_encoded_at(pc, target); ++ } else { ++ DCHECK(mode == RelocInfo::INTERNAL_REFERENCE); ++ Memory
(pc) = target; ++ } ++} ++ ++HeapObject RelocInfo::target_object(PtrComprCageBase cage_base) { ++ DCHECK(IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_)); ++ return HeapObject::cast( ++ Object(Assembler::target_address_at(pc_, constant_pool_))); ++} ++ ++Handle RelocInfo::target_object_handle(Assembler* origin) { ++ DCHECK(IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_)); ++ return Handle(reinterpret_cast( ++ Assembler::target_address_at(pc_, constant_pool_))); ++} ++ ++void RelocInfo::set_target_object(Heap* heap, HeapObject target, ++ WriteBarrierMode write_barrier_mode, ++ ICacheFlushMode icache_flush_mode) { ++ DCHECK(IsCodeTarget(rmode_) || IsFullEmbeddedObject(rmode_)); ++ Assembler::set_target_address_at(pc_, constant_pool_, target.ptr(), ++ icache_flush_mode); ++ if (!instruction_stream().is_null() && !v8_flags.disable_write_barriers) { ++ WriteBarrierForCode(instruction_stream(), this, target, write_barrier_mode); ++ } ++} ++ ++Address RelocInfo::target_external_reference() { ++ DCHECK(rmode_ == EXTERNAL_REFERENCE); ++ return Assembler::target_address_at(pc_, constant_pool_); ++} ++ ++void RelocInfo::set_target_external_reference( ++ Address target, ICacheFlushMode icache_flush_mode) { ++ DCHECK(rmode_ == RelocInfo::EXTERNAL_REFERENCE); ++ Assembler::set_target_address_at(pc_, constant_pool_, target, ++ icache_flush_mode); ++} ++ ++Address RelocInfo::target_internal_reference() { ++ if (rmode_ == INTERNAL_REFERENCE) { ++ return Memory
(pc_); ++ } else { ++ // Encoded internal references are j/jal instructions. ++ DCHECK(rmode_ == INTERNAL_REFERENCE_ENCODED); ++ Instr instr = Assembler::instr_at(pc_ + 0 * kInstrSize); ++ instr &= kImm26Mask; ++ uint64_t imm28 = instr << 2; ++ uint64_t segment = pc_ & ~static_cast(kImm28Mask); ++ return static_cast
(segment | imm28); ++ } ++} ++ ++Address RelocInfo::target_internal_reference_address() { ++ DCHECK(rmode_ == INTERNAL_REFERENCE || rmode_ == INTERNAL_REFERENCE_ENCODED); ++ return pc_; ++} ++ ++Builtin RelocInfo::target_builtin_at(Assembler* origin) { UNREACHABLE(); } ++ ++Address RelocInfo::target_off_heap_target() { ++ DCHECK(IsOffHeapTarget(rmode_)); ++ return Assembler::target_address_at(pc_, constant_pool_); ++} ++ ++void RelocInfo::WipeOut() { ++ DCHECK(IsFullEmbeddedObject(rmode_) || IsCodeTarget(rmode_) || ++ IsExternalReference(rmode_) || IsInternalReference(rmode_) || ++ IsInternalReferenceEncoded(rmode_) || IsOffHeapTarget(rmode_)); ++ if (IsInternalReference(rmode_)) { ++ Memory
(pc_) = kNullAddress; ++ } else if (IsInternalReferenceEncoded(rmode_)) { ++ Assembler::set_target_internal_reference_encoded_at(pc_, kNullAddress); ++ } else { ++ Assembler::set_target_address_at(pc_, constant_pool_, kNullAddress); ++ } ++} ++ ++// ----------------------------------------------------------------------------- ++// Assembler. ++ ++void Assembler::CheckBuffer() { ++ if (buffer_space() <= kGap) { ++ GrowBuffer(); ++ } ++} ++ ++void Assembler::CheckForEmitInForbiddenSlot() { ++ if (!is_buffer_growth_blocked()) { ++ CheckBuffer(); ++ } ++} ++ ++template ++void Assembler::EmitHelper(T x) { ++ *reinterpret_cast(pc_) = x; ++ pc_ += sizeof(x); ++ CheckTrampolinePoolQuick(); ++} ++ ++void Assembler::EmitHelper(Instr x) { ++ *reinterpret_cast(pc_) = x; ++ pc_ += kInstrSize; ++ CheckTrampolinePoolQuick(); ++} ++ ++void Assembler::EmitHelper(uint8_t x) { ++ *reinterpret_cast(pc_) = x; ++ pc_ += sizeof(x); ++ if (reinterpret_cast(pc_) % kInstrSize == 0) { ++ CheckTrampolinePoolQuick(); ++ } ++} ++ ++void Assembler::emit(Instr x) { ++ if (!is_buffer_growth_blocked()) { ++ CheckBuffer(); ++ } ++ EmitHelper(x); ++} ++ ++void Assembler::emit(uint64_t data) { ++ CheckForEmitInForbiddenSlot(); ++ EmitHelper(data); ++} ++ ++EnsureSpace::EnsureSpace(Assembler* assembler) { assembler->CheckBuffer(); } ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_SW64_ASSEMBLER_SW64_INL_H_ +diff --git a/deps/v8/src/codegen/sw64/assembler-sw64.cc b/deps/v8/src/codegen/sw64/assembler-sw64.cc +new file mode 100644 +index 00000000..a32f0470 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/assembler-sw64.cc +@@ -0,0 +1,3868 @@ ++// Copyright (c) 1994-2006 Sun Microsystems Inc. ++// All Rights Reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions are ++// met: ++// ++// - Redistributions of source code must retain the above copyright notice, ++// this list of conditions and the following disclaimer. ++// ++// - Redistribution in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// ++// - Neither the name of Sun Microsystems or the names of contributors may ++// be used to endorse or promote products derived from this software without ++// specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER OR ++// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ++// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ++// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++// The original source code covered by the above license above has been ++// modified significantly by Google Inc. ++// Copyright 2012 the V8 project authors. All rights reserved. ++ ++#include "src/codegen/sw64/assembler-sw64.h" ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/base/cpu.h" ++#include "src/codegen/flush-instruction-cache.h" ++#include "src/codegen/machine-type.h" ++#include "src/codegen/safepoint-table.h" ++#include "src/codegen/string-constants.h" ++#include "src/codegen/sw64/assembler-sw64-inl.h" ++#include "src/deoptimizer/deoptimizer.h" ++#include "src/objects/heap-number-inl.h" ++ ++namespace v8 { ++namespace internal { ++ ++// Get the CPU features enabled by the build. For cross compilation the ++// preprocessor symbols CAN_USE_FPU_INSTRUCTIONS ++// can be defined to enable FPU instructions when building the ++// snapshot. ++static unsigned CpuFeaturesImpliedByCompiler() { ++ unsigned answer = 0; ++ ++ // If the compiler is allowed to use FPU then we can use FPU too in our code ++ // generation even when generating snapshots. This won't work for cross ++ // compilation. ++ answer |= 1u << FPU; ++ ++ return answer; ++} ++ ++bool CpuFeatures::SupportsWasmSimd128() { return false; } ++ ++void CpuFeatures::ProbeImpl(bool cross_compile) { ++ supported_ |= CpuFeaturesImpliedByCompiler(); ++ ++ // Only use statically determined features for cross compile (snapshot). ++ if (cross_compile) return; ++ ++ // Probe for additional features at runtime. ++ base::CPU cpu; ++ if (cpu.has_fpu()) supported_ |= 1u << FPU; ++ if (cpu.has_swsa()) supported_ |= 1u << SW64_SIMD; ++ if (strcmp(v8_flags.sw64_arch, "native") == 0) { ++ if (cpu.use_sw8a()) { ++ supported_ |= 1u << SW_8A; ++ v8_flags.use_sw8a = true; ++ if (v8_flags.use_sw8a) { ++ v8_flags.use_cmovdw = true; ++ v8_flags.use_cmovdwu = true; ++ v8_flags.use_cmovdl = true; ++ v8_flags.use_cmovdlu = true; ++ v8_flags.use_cmovls = true; ++ v8_flags.use_cmovuls = true; ++ v8_flags.use_cmovld = true; ++ v8_flags.use_cmovuld = true; ++ v8_flags.use_cmovws = true; ++ v8_flags.use_cmovuws = true; ++ v8_flags.use_cmovwd = true; ++ v8_flags.use_cmovuwd = true; ++ ++ v8_flags.use_frecx = true; ++ v8_flags.use_frisx = true; ++ v8_flags.use_fridx = true; ++ v8_flags.use_revbx = true; ++ v8_flags.use_sllx = true; ++ v8_flags.use_divx = true; ++ ++ v8_flags.use_ldx_a = true; ++ v8_flags.use_lldx = true; ++ v8_flags.use_csax = true; ++ v8_flags.use_addpi = true; ++ } ++ } ++ } ++} ++ ++void CpuFeatures::PrintTarget() {} ++void CpuFeatures::PrintFeatures() {} ++ ++int ToNumber(Register reg) { ++ DCHECK(reg.is_valid()); ++ const int kNumbers[] = { ++ // (SW64) ++ 0, // v0 ++ 1, // t0 ++ 2, // t1 ++ 3, // t2 ++ 4, // t3 ++ 5, // t4 ++ 6, // t5 ++ 7, // t6 ++ 8, // t7 ++ 9, // s0 ++ 10, // s1 ++ 11, // s2 ++ 12, // s3 ++ 13, // s4 ++ 14, // s5 ++ 15, // fp ++ 16, // a0 ++ 17, // a1 ++ 18, // a2 ++ 19, // a3 ++ 20, // a4 ++ 21, // a5 ++ 22, // t8 ++ 23, // t9 ++ 24, // t10 ++ 25, // t11 ++ 26, // ra ++ 27, // t12 ++ 28, // at ++ 29, // gp ++ 30, // sp ++ 31 // zero_reg ++ }; ++ return kNumbers[reg.code()]; ++} ++ ++Register ToRegister(int num) { ++ DCHECK(num >= 0 && num < kNumRegisters); ++ const Register kRegisters[] = { ++ v0, t0, t1, t2, t3, t4, t5, t6, t7, s0, s1, s2, s3, s4, s5, fp, ++ a0, a1, a2, a3, a4, a5, t8, t9, t10, t11, ra, t12, at, gp, sp, zero_reg}; ++ return kRegisters[num]; ++} ++ ++// ----------------------------------------------------------------------------- ++// Implementation of RelocInfo. ++ ++const int RelocInfo::kApplyMask = ++ RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE) | ++ RelocInfo::ModeMask(RelocInfo::INTERNAL_REFERENCE_ENCODED); ++ ++bool RelocInfo::IsCodedSpecially() { ++ // The deserializer needs to know whether a pointer is specially coded. Being ++ // specially coded on SW64 means that it is a ldih/ldi instruction, and that ++ // is always the case inside code objects. ++ return true; ++} ++ ++bool RelocInfo::IsInConstantPool() { return false; } ++ ++uint32_t RelocInfo::wasm_call_tag() const { ++ DCHECK(rmode_ == WASM_CALL || rmode_ == WASM_STUB_CALL); ++ return static_cast( ++ Assembler::target_address_at(pc_, constant_pool_)); ++} ++ ++// ----------------------------------------------------------------------------- ++// Implementation of Operand and MemOperand. ++// See assembler-sw64-inl.h for inlined constructors. ++ ++Operand::Operand(Handle handle) ++ : rm_(no_reg), rmode_(RelocInfo::FULL_EMBEDDED_OBJECT) { ++ value_.immediate = static_cast(handle.address()); ++} ++ ++Operand Operand::EmbeddedNumber(double value) { ++ int32_t smi; ++ if (DoubleToSmiInteger(value, &smi)) return Operand(Smi::FromInt(smi)); ++ Operand result(0, RelocInfo::FULL_EMBEDDED_OBJECT); ++ result.is_heap_number_request_ = true; ++ result.value_.heap_number_request = HeapNumberRequest(value); ++ return result; ++} ++ ++MemOperand::MemOperand(Register rm, int32_t offset) : Operand(rm) { ++ offset_ = offset; ++} ++ ++MemOperand::MemOperand(Register rm, int32_t unit, int32_t multiplier, ++ OffsetAddend offset_addend) ++ : Operand(rm) { ++ offset_ = unit * multiplier + offset_addend; ++} ++ ++void Assembler::AllocateAndInstallRequestedHeapNumbers(Isolate* isolate) { ++ DCHECK_IMPLIES(isolate == nullptr, heap_number_requests_.empty()); ++ for (auto& request : heap_number_requests_) { ++ Handle object; ++ object = isolate->factory()->NewHeapNumber( ++ request.heap_number()); ++ Address pc = reinterpret_cast
(buffer_start_) + request.offset(); ++ set_target_value_at(pc, reinterpret_cast(object.location())); ++ } ++} ++ ++Assembler::Assembler(const AssemblerOptions& options, ++ std::unique_ptr buffer) ++ : AssemblerBase(options, std::move(buffer)), scratch_register_list_({at}) { ++ if (CpuFeatures::IsSupported(SW64_SIMD)) { ++ EnableCpuFeature(SW64_SIMD); ++ } ++ reloc_info_writer.Reposition(buffer_start_ + buffer_->size(), pc_); ++ ++ last_trampoline_pool_end_ = 0; ++ no_trampoline_pool_before_ = 0; ++ trampoline_pool_blocked_nesting_ = 0; ++ // We leave space (16 * kTrampolineSlotsSize) ++ // for BlockTrampolinePoolScope buffer. ++ next_buffer_check_ = v8_flags.force_long_branches ++ ? kMaxInt ++ : kMaxBranchOffset - kTrampolineSlotsSize * 16; ++ internal_trampoline_exception_ = false; ++ last_bound_pos_ = 0; ++ ++ trampoline_emitted_ = v8_flags.force_long_branches; ++ unbound_labels_count_ = 0; ++ block_buffer_growth_ = false; ++} ++ ++void Assembler::GetCode(Isolate* isolate, CodeDesc* desc) { ++ GetCode(isolate, desc, kNoSafepointTable, kNoHandlerTable); ++} ++ ++void Assembler::GetCode(Isolate* isolate, CodeDesc* desc, ++ SafepointTableBuilder* safepoint_table_builder, ++ int handler_table_offset) { ++ // As a crutch to avoid having to add manual Align calls wherever we use a ++ // raw workflow to create InstructionStream objects (mostly in tests), add ++ // another Align call here. It does no harm - the end of the InstructionStream ++ // object is aligned to the (larger) kCodeAlignment anyways. ++ // TODO(jgruber): Consider moving responsibility for proper alignment to ++ // metadata table builders (safepoint, handler, constant pool, code ++ // comments). ++ DataAlign(InstructionStream::kMetadataAlignment); ++ ++ int code_comments_size = WriteCodeComments(); ++ ++ DCHECK(pc_ <= reloc_info_writer.pos()); // No overlap. ++ ++ AllocateAndInstallRequestedHeapNumbers(isolate); ++ ++ // Set up code descriptor. ++ // TODO(jgruber): Reconsider how these offsets and sizes are maintained up to ++ // this point to make CodeDesc initialization less fiddly. ++ ++ static constexpr int kConstantPoolSize = 0; ++ const int instruction_size = pc_offset(); ++ const int code_comments_offset = instruction_size - code_comments_size; ++ const int constant_pool_offset = code_comments_offset - kConstantPoolSize; ++ const int handler_table_offset2 = (handler_table_offset == kNoHandlerTable) ++ ? constant_pool_offset ++ : handler_table_offset; ++ const int safepoint_table_offset = ++ (safepoint_table_builder == kNoSafepointTable) ++ ? handler_table_offset2 ++ : safepoint_table_builder->safepoint_table_offset(); ++ const int reloc_info_offset = ++ static_cast(reloc_info_writer.pos() - buffer_->start()); ++ CodeDesc::Initialize(desc, this, safepoint_table_offset, ++ handler_table_offset2, constant_pool_offset, ++ code_comments_offset, reloc_info_offset); ++} ++ ++void Assembler::Align(int m) { ++ DCHECK(m >= 4 && base::bits::IsPowerOfTwo(m)); ++ while ((pc_offset() & (m - 1)) != 0) { ++ nop(); ++ } ++} ++ ++void Assembler::CodeTargetAlign() { ++ // No advantage to aligning branch/call targets to more than ++ // single instruction, that I am aware of. ++ Align(4); ++} ++ ++uint32_t Assembler::GetSwRa(Instr instr) { ++ return (instr & sRaFieldMask) >> sRaShift; ++} ++ ++uint32_t Assembler::GetSwRb(Instr instr) { ++ return (instr & sRbFieldMask) >> sRbShift; ++} ++ ++uint32_t Assembler::GetSwRc(Instr instr) { ++ return (instr & sRcFieldMask) >> sRcShift; ++} ++ ++uint32_t Assembler::GetLabelConst(Instr instr) { return instr & ~kImm16Mask; } ++ ++#define OP(x) (((x)&0x3F) << 26) ++#define OPR(oo, ff) (OP(oo) | (((ff)&0xFF) << 5)) ++ ++int32_t Assembler::GetSwOpcodeField(Instr instr) { return instr & OP(-1); } ++ ++int32_t Assembler::GetSwOpcodeAndFunctionField(Instr instr) { ++ return instr & OPR(-1, -1); ++} ++ ++#undef OP ++#undef OPR ++ ++uint32_t Assembler::GetSwImmediate8(Instr instr) { ++ return (instr & sImm8Mask) >> sImm8Shift; ++} ++ ++uint32_t Assembler::GetSwImmediate16(Instr instr) { ++ return (instr & sImm16Mask) >> sImm16Shift; ++} ++ ++// Labels refer to positions in the (to be) generated code. ++// There are bound, linked, and unused labels. ++// ++// Bound labels refer to known positions in the already ++// generated code. pos() is the position the label refers to. ++// ++// Linked labels refer to unknown positions in the code ++// to be generated; pos() is the position of the last ++// instruction using the label. ++ ++// The link chain is terminated by a value in the instruction of -1, ++// which is an otherwise illegal value (branch -1 is inf loop). ++// The instruction 16-bit offset field addresses 32-bit words, but in ++// code is conv to an 18-bit value addressing bytes, hence the -4 value. ++ ++const int kEndOfChain = -4; ++// Determines the end of the Jump chain (a subset of the label link chain). ++const int kEndOfJumpChain = 0; ++ ++bool Assembler::IsLdih(Instr instr) { ++ int32_t opcode = GetSwOpcodeField(instr); ++ ++ return opcode == op_ldih; ++} ++ ++bool Assembler::IsLdi(Instr instr) { ++ int32_t opcode = GetSwOpcodeField(instr); ++ ++ return opcode == op_ldi; ++} ++ ++bool Assembler::IsBranch(Instr instr) { ++ int32_t opcode = GetSwOpcodeField(instr); ++ return opcode == op_lbr || opcode == op_br || ++ opcode == op_bsr || // unconditional branch ++ opcode == op_beq || opcode == op_bne || opcode == op_blt || ++ opcode == op_ble || opcode == op_bgt || opcode == op_bge || ++ opcode == op_blbc || opcode == op_blbs || opcode == op_fbeq || ++ opcode == op_fbne || opcode == op_fblt || opcode == op_fble || ++ opcode == op_fbgt || opcode == op_fbge; ++} ++ ++bool Assembler::IsEmittedConstant(Instr instr) { ++ uint32_t label_constant = GetLabelConst(instr); ++ return label_constant == 0; // Emitted label const in reg-exp engine. ++} ++ ++bool Assembler::IsBeq(Instr instr) { return GetSwOpcodeField(instr) == op_beq; } ++ ++bool Assembler::IsBne(Instr instr) { return GetSwOpcodeField(instr) == op_bne; } ++ ++bool Assembler::IsAddImmediate(Instr instr) { ++ int32_t opcode = GetSwOpcodeAndFunctionField(instr); ++ return opcode == op_addw_l || opcode == op_addl_l; ++} ++ ++bool Assembler::IsAndImmediate(Instr instr) { ++ return GetSwOpcodeAndFunctionField(instr) == op_and_l; ++} ++ ++int Assembler::target_at(int pos, bool is_internal) { ++ if (is_internal) { ++ int64_t* p = reinterpret_cast(buffer_start_ + pos); ++ int64_t address = *p; ++ if (address == kEndOfJumpChain) { ++ return kEndOfChain; ++ } else { ++ int64_t instr_address = reinterpret_cast(p); ++ DCHECK(instr_address - address < INT_MAX); ++ int delta = static_cast(instr_address - address); ++ DCHECK(pos > delta); ++ return pos - delta; ++ } ++ } ++ Instr instr = instr_at(pos); ++ if ((instr & ~sImm21Mask) == 0) { ++ // Emitted label constant, not part of a branch. ++ if (instr == 0) { ++ return kEndOfChain; ++ } else { ++ int32_t imm23 = ((instr & static_cast(sImm21Mask)) << 11) >> 9; ++ return (imm23 + pos); ++ } ++ } ++ // Check we have a branch or jump instruction. ++ DCHECK(IsBranch(instr) || IsLdi(instr)); ++ // Do NOT change this to <<2. We rely on arithmetic shifts here, assuming ++ // the compiler uses arithmectic shifts for signed integers. ++ if (IsBranch(instr)) { ++ int32_t imm23 = ((instr & static_cast(sImm21Mask)) << 11) >> 9; ++ ++ if (imm23 == kEndOfChain) { ++ // EndOfChain sentinel is returned directly, not relative to pc or pos. ++ return kEndOfChain; ++ } else { ++ return pos + kInstrSize + imm23; ++ } ++ } else if (IsLdi(instr)) { ++ Instr instr0_ldi = instr_at(pos + 0 * kInstrSize); ++ Instr instr2_ldih = instr_at(pos + 2 * kInstrSize); ++ Instr instr3_ldi = instr_at(pos + 3 * kInstrSize); ++ DCHECK(IsLdi(instr0_ldi)); ++ DCHECK(IsLdih(instr2_ldih)); ++ DCHECK(IsLdi(instr3_ldi)); ++ ++ // TODO(plind) create named constants for shift values. ++ int64_t imm = static_cast(instr0_ldi << 16) << 16; ++ imm += static_cast(instr2_ldih << 16); ++ imm += static_cast(instr3_ldi << 16) >> 16; ++ ++ if (imm == kEndOfJumpChain) { ++ // EndOfChain sentinel is returned directly, not relative to pc or pos. ++ return kEndOfChain; ++ } else { ++ uint64_t instr_address = reinterpret_cast(buffer_start_ + pos); ++ int64_t delta = instr_address - imm; ++ DCHECK(pos > delta); ++ return (int)(pos - delta); ++ } ++ } else { ++ UNIMPLEMENTED_SW64(); ++ return -1; ++ } ++} ++ ++void Assembler::target_at_put(int pos, int target_pos, bool is_internal) { ++ if (is_internal) { ++ uint64_t imm = reinterpret_cast(buffer_start_) + target_pos; ++ *reinterpret_cast(buffer_start_ + pos) = imm; ++ return; ++ } ++ Instr instr = instr_at(pos); ++ if ((instr & ~sImm21Mask) == 0) { ++ DCHECK(target_pos == kEndOfChain || target_pos >= 0); ++ // Emitted label constant, not part of a branch. ++ // Make label relative to Code pointer of generated InstructionStream ++ // object. ++ instr_at_put( ++ pos, target_pos + (InstructionStream::kHeaderSize - kHeapObjectTag)); ++ return; ++ } ++ ++ DCHECK(IsBranch(instr) || IsLdi(instr)); ++ if (IsBranch(instr)) { ++ int32_t imm23 = target_pos - (pos + kInstrSize); ++ DCHECK((imm23 & 3) == 0); ++ ++ int32_t imm21 = imm23 >> 2; ++ instr &= ~sImm21Mask; ++ DCHECK(is_int21(imm21)); ++ ++ instr_at_put(pos, instr | (imm21 & sImm21Mask)); ++ } else if (IsLdi(instr)) { ++ Instr instr0_ldi = instr_at(pos + 0 * kInstrSize); ++ Instr instr2_ldih = instr_at(pos + 2 * kInstrSize); ++ Instr instr3_ldi = instr_at(pos + 3 * kInstrSize); ++ DCHECK(IsLdi(instr0_ldi)); ++ DCHECK(IsLdih(instr2_ldih)); ++ DCHECK(IsLdi(instr3_ldi)); ++ ++ int64_t imm = reinterpret_cast(buffer_start_) + target_pos; ++ DCHECK((imm & 3) == 0); ++ ++ instr0_ldi &= ~kImm16Mask; ++ instr2_ldih &= ~kImm16Mask; ++ instr3_ldi &= ~kImm16Mask; ++ ++ int32_t lsb32 = (int32_t)(imm); ++ int32_t msb32 = (int32_t)((imm - lsb32) >> 32); ++ instr_at_put(pos + 0 * kInstrSize, ++ instr0_ldi | ((int16_t)(msb32 & 0xffff) & 0xffff)); ++ instr_at_put(pos + 2 * kInstrSize, ++ instr2_ldih | (((lsb32 - (int16_t)lsb32) >> 16) & 0xffff)); ++ instr_at_put(pos + 3 * kInstrSize, ++ instr3_ldi | ((int16_t)(lsb32 & 0xffff) & 0xffff)); ++ } else { ++ UNIMPLEMENTED_SW64(); ++ } ++} ++ ++void Assembler::print(const Label* L) { ++ if (L->is_unused()) { ++ PrintF("unused label\n"); ++ } else if (L->is_bound()) { ++ PrintF("bound label to %d\n", L->pos()); ++ } else if (L->is_linked()) { ++ Label l; ++ l.link_to(L->pos()); ++ PrintF("unbound label"); ++ while (l.is_linked()) { ++ PrintF("@ %d ", l.pos()); ++ Instr instr = instr_at(l.pos()); ++ if ((instr & ~kImm16Mask) == 0) { ++ PrintF("value\n"); ++ } else { ++ PrintF("%d\n", instr); ++ } ++ next(&l, is_internal_reference(&l)); ++ } ++ } else { ++ PrintF("label in inconsistent state (pos = %d)\n", L->pos_); ++ } ++} ++ ++void Assembler::bind_to(Label* L, int pos) { ++ DCHECK(0 <= pos && pos <= pc_offset()); // Must have valid binding position. ++ int trampoline_pos = kInvalidSlotPos; ++ bool is_internal = false; ++ if (L->is_linked() && !trampoline_emitted_) { ++ unbound_labels_count_--; ++ if (!is_internal_reference(L)) { ++ next_buffer_check_ += kTrampolineSlotsSize; ++ } ++ } ++ ++ while (L->is_linked()) { ++ int fixup_pos = L->pos(); ++ int dist = pos - fixup_pos; ++ is_internal = is_internal_reference(L); ++ next(L, is_internal); // Call next before overwriting link with target at ++ // fixup_pos. ++ Instr instr = instr_at(fixup_pos); ++ if (is_internal) { ++ target_at_put(fixup_pos, pos, is_internal); ++ } else { ++ if (IsBranch(instr)) { ++ int branch_offset = BranchOffset(instr); ++ if (dist > branch_offset) { ++ if (trampoline_pos == kInvalidSlotPos) { ++ trampoline_pos = get_trampoline_entry(fixup_pos); ++ CHECK_NE(trampoline_pos, kInvalidSlotPos); ++ } ++ CHECK((trampoline_pos - fixup_pos) <= branch_offset); ++ target_at_put(fixup_pos, trampoline_pos, false); ++ fixup_pos = trampoline_pos; ++ } ++ target_at_put(fixup_pos, pos, false); ++ } else { ++ DCHECK(IsLdi(instr) || IsEmittedConstant(instr)); ++ target_at_put(fixup_pos, pos, false); ++ } ++ } ++ } ++ L->bind_to(pos); ++ ++ // Keep track of the last bound label so we don't eliminate any instructions ++ // before a bound label. ++ if (pos > last_bound_pos_) last_bound_pos_ = pos; ++} ++ ++void Assembler::bind(Label* L) { ++ DCHECK(!L->is_bound()); // Label can only be bound once. ++ bind_to(L, pc_offset()); ++} ++ ++void Assembler::next(Label* L, bool is_internal) { ++ DCHECK(L->is_linked()); ++ int link = target_at(L->pos(), is_internal); ++ if (link == kEndOfChain) { ++ L->Unuse(); ++ } else { ++ DCHECK_GE(link, 0); ++ L->link_to(link); ++ } ++} ++ ++bool Assembler::is_near(Label* L) { ++ DCHECK(L->is_bound()); ++ return pc_offset() - L->pos() < kMaxBranchOffset - 4 * kInstrSize; ++} ++ ++bool Assembler::is_near(Label* L, OffsetSize bits) { ++ if (L == nullptr || !L->is_bound()) return true; ++ return ((pc_offset() - L->pos()) < ++ (1 << (bits + 2 - 1)) - 1 - 5 * kInstrSize); ++} ++ ++int Assembler::BranchOffset(Instr instr) { ++ int bits = OffsetSize::kOffset21; ++ uint32_t opcode = (instr >> 26) << 26; ++ if (opcode == op_lbr) bits = OffsetSize::kOffset26; ++ return (1 << (bits + 2 - 1)) - 1; ++} ++ ++// We have to use a temporary register for things that can be relocated even ++// if they can be encoded in the SW64's 16 bits of immediate-offset instruction ++// space. There is no guarantee that the relocated location can be similarly ++// encoded. ++bool Assembler::MustUseReg(RelocInfo::Mode rmode) { ++ return !RelocInfo::IsNoInfo(rmode); ++} ++ ++// Returns the next free trampoline entry. ++int32_t Assembler::get_trampoline_entry(int32_t pos) { ++ int32_t trampoline_entry = kInvalidSlotPos; ++ if (!internal_trampoline_exception_) { ++ if (trampoline_.start() > pos) { ++ trampoline_entry = trampoline_.take_slot(); ++ } ++ ++ if (kInvalidSlotPos == trampoline_entry) { ++ internal_trampoline_exception_ = true; ++ } ++ } ++ return trampoline_entry; ++} ++ ++uint64_t Assembler::jump_address(Label* L) { ++ int64_t target_pos; ++ if (L->is_bound()) { ++ target_pos = L->pos(); ++ } else { ++ if (L->is_linked()) { ++ target_pos = L->pos(); // L's link. ++ L->link_to(pc_offset()); ++ } else { ++ L->link_to(pc_offset()); ++ return kEndOfJumpChain; ++ } ++ } ++ uint64_t imm = reinterpret_cast(buffer_start_) + target_pos; ++ DCHECK_EQ(imm & 3, 0); ++ ++ return imm; ++} ++ ++uint64_t Assembler::jump_offset(Label* L) { ++ int64_t target_pos; ++ ++ if (L->is_bound()) { ++ target_pos = L->pos(); ++ } else { ++ if (L->is_linked()) { ++ target_pos = L->pos(); // L's link. ++ L->link_to(pc_offset()); ++ } else { ++ L->link_to(pc_offset()); ++ return kEndOfJumpChain; ++ } ++ } ++ int64_t imm = target_pos - (pc_offset()); ++ DCHECK_EQ(imm & 3, 0); ++ ++ return static_cast(imm); ++} ++ ++uint64_t Assembler::branch_long_offset(Label* L) { ++ int64_t target_pos; ++ ++ if (L->is_bound()) { ++ target_pos = L->pos(); ++ } else { ++ if (L->is_linked()) { ++ target_pos = L->pos(); // L's link. ++ L->link_to(pc_offset()); ++ } else { ++ L->link_to(pc_offset()); ++ return kEndOfJumpChain; ++ } ++ } ++ int64_t offset = target_pos - (pc_offset() + kInstrSize); ++ DCHECK_EQ(offset & 3, 0); ++ ++ return static_cast(offset); ++} ++ ++int32_t Assembler::branch_offset_helper(Label* L, OffsetSize bits) { ++ int32_t target_pos; ++ ++ if (L->is_bound()) { ++ target_pos = L->pos(); ++ } else { ++ if (L->is_linked()) { ++ target_pos = L->pos(); ++ L->link_to(pc_offset()); ++ } else { ++ L->link_to(pc_offset()); ++ if (!trampoline_emitted_) { ++ unbound_labels_count_++; ++ next_buffer_check_ -= kTrampolineSlotsSize; ++ } ++ return kEndOfChain; ++ } ++ } ++ ++ int32_t offset = target_pos - (pc_offset() + kInstrSize); ++ DCHECK(is_intn(offset, bits + 2)); ++ DCHECK_EQ(offset & 3, 0); ++ ++ return offset; ++} ++ ++void Assembler::label_at_put(Label* L, int at_offset) { ++ int target_pos; ++ if (L->is_bound()) { ++ target_pos = L->pos(); ++ instr_at_put(at_offset, target_pos + (InstructionStream::kHeaderSize - ++ kHeapObjectTag)); ++ } else { ++ if (L->is_linked()) { ++ target_pos = L->pos(); // L's link. ++ int32_t imm18 = target_pos - at_offset; ++ DCHECK_EQ(imm18 & 3, 0); ++ int32_t imm16 = imm18 >> 2; ++ DCHECK(is_int16(imm16)); ++ instr_at_put(at_offset, (imm16 & kImm16Mask)); ++ } else { ++ target_pos = kEndOfChain; ++ instr_at_put(at_offset, 0); ++ if (!trampoline_emitted_) { ++ unbound_labels_count_++; ++ next_buffer_check_ -= kTrampolineSlotsSize; ++ } ++ } ++ L->link_to(at_offset); ++ } ++} ++ ++//------- Branch and jump instructions -------- ++ ++void Assembler::br(int offset) { br(zero_reg, offset); } ++ ++void Assembler::bsr(int offset) { bsr(ra, offset); } ++ ++// ------------Memory-instructions------------- ++ ++void Assembler::AdjustBaseAndOffset(MemOperand* src, ++ OffsetAccessType access_type, ++ int second_access_add_to_offset) { ++ // This method is used to adjust the base register and offset pair ++ // for a load/store when the offset doesn't fit into int16_t. ++ // It is assumed that 'base + offset' is sufficiently aligned for memory ++ // operands that are machine word in size or smaller. For doubleword-sized ++ // operands it's assumed that 'base' is a multiple of 8, while 'offset' ++ // may be a multiple of 4 (e.g. 4-byte-aligned long and double arguments ++ // and spilled variables on the stack accessed relative to the stack ++ // pointer register). ++ // We preserve the "alignment" of 'offset' by adjusting it by a multiple of 8. ++ ++ bool doubleword_aligned = (src->offset() & (kDoubleSize - 1)) == 0; ++ bool two_accesses = static_cast(access_type) || !doubleword_aligned; ++ DCHECK_LE(second_access_add_to_offset, 7); // Must be <= 7. ++ ++ // is_int16 must be passed a signed value, hence the static cast below. ++ if (is_int16(src->offset()) && ++ (!two_accesses || is_int16(static_cast( ++ src->offset() + second_access_add_to_offset)))) { ++ // Nothing to do: 'offset' (and, if needed, 'offset + 4', or other specified ++ // value) fits into int16_t. ++ return; ++ } ++ ++ DCHECK(src->rm() != ++ at); // Must not overwrite the register 'base' while loading 'offset'. ++ ++#ifdef DEBUG ++ // Remember the "(mis)alignment" of 'offset', it will be checked at the end. ++ uint32_t misalignment = src->offset() & (kDoubleSize - 1); ++#endif ++ ++ // Do not load the whole 32-bit 'offset' if it can be represented as ++ // a sum of two 16-bit signed offsets. This can save an instruction or two. ++ // To simplify matters, only do this for a symmetric range of offsets from ++ // about -64KB to about +64KB, allowing further addition of 4 when accessing ++ // 64-bit variables with two 32-bit accesses. ++ constexpr int32_t kMinOffsetForSimpleAdjustment = ++ 0x7FF8; // Max int16_t that's a multiple of 8. ++ constexpr int32_t kMaxOffsetForSimpleAdjustment = ++ 2 * kMinOffsetForSimpleAdjustment; ++ ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ if (0 <= src->offset() && src->offset() <= kMaxOffsetForSimpleAdjustment) { ++ ldi(scratch, kMinOffsetForSimpleAdjustment, src->rm()); ++ src->offset_ -= kMinOffsetForSimpleAdjustment; ++ } else if (-kMaxOffsetForSimpleAdjustment <= src->offset() && ++ src->offset() < 0) { ++ ldi(scratch, -kMinOffsetForSimpleAdjustment, src->rm()); ++ src->offset_ += kMinOffsetForSimpleAdjustment; ++ } else { ++ // Do not load the whole 32-bit 'offset' if it can be represented as ++ // a sum of three 16-bit signed offsets. This can save an instruction. ++ // To simplify matters, only do this for a symmetric range of offsets from ++ // about -96KB to about +96KB, allowing further addition of 4 when accessing ++ // 64-bit variables with two 32-bit accesses. ++ constexpr int32_t kMinOffsetForMediumAdjustment = ++ 2 * kMinOffsetForSimpleAdjustment; ++ constexpr int32_t kMaxOffsetForMediumAdjustment = ++ 3 * kMinOffsetForSimpleAdjustment; ++ if (0 <= src->offset() && src->offset() <= kMaxOffsetForMediumAdjustment) { ++ ldi(scratch, kMinOffsetForMediumAdjustment / 2, src->rm()); ++ ldi(scratch, kMinOffsetForMediumAdjustment / 2, scratch); ++ src->offset_ -= kMinOffsetForMediumAdjustment; ++ } else if (-kMaxOffsetForMediumAdjustment <= src->offset() && ++ src->offset() < 0) { ++ ldi(scratch, -kMinOffsetForMediumAdjustment / 2, src->rm()); ++ ldi(scratch, -kMinOffsetForMediumAdjustment / 2, scratch); ++ src->offset_ += kMinOffsetForMediumAdjustment; ++ } else { ++ // Now that all shorter options have been exhausted, load the full 32-bit ++ // offset. ++ int32_t loaded_offset = RoundDown(src->offset(), kDoubleSize); ++ int16_t lo_offset = static_cast(loaded_offset); ++ int16_t hi_offset = (loaded_offset - (int16_t)loaded_offset) >> 16; ++ if (((int32_t)hi_offset == -32768) && ((int32_t)lo_offset < 0)) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ ldih(scratch, 0x4000, zero_reg); ++ ldih(scratch, 0x4000, scratch); ++ if (lo_offset != 0) ldi(scratch, lo_offset, scratch); ++ } else { ++ ldih(scratch, hi_offset, zero_reg); ++ if (lo_offset != 0) ldi(scratch, lo_offset, scratch); ++ } ++ addl(scratch, src->rm(), scratch); ++ src->offset_ -= loaded_offset; ++ } ++ } ++ src->rm_ = scratch; ++ ++ DCHECK(is_int16(src->offset())); ++ if (two_accesses) { ++ DCHECK(is_int16( ++ static_cast(src->offset() + second_access_add_to_offset))); ++ } ++ DCHECK(misalignment == (src->offset() & (kDoubleSize - 1))); ++} ++ ++void Assembler::fmovd(FPURegister fs, FPURegister fd) { fcpys(fs, fs, fd); } ++ ++void Assembler::fmovs(FPURegister fs, FPURegister fd) { fcpys(fs, fs, fd); } ++ ++// Conversions. ++void Assembler::fcvtsw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ DCHECK(fs != kScratchDoubleReg2 && fd != kScratchDoubleReg2); ++ fcvtsd(fs, kScratchDoubleReg2); ++ fcvtdl(kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fcvtdw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtdl(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ftruncsw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ DCHECK(fs != kScratchDoubleReg2 && fd != kScratchDoubleReg2); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, kScratchDoubleReg2); ++ fcvtlw(kScratchDoubleReg2, fd); ++} ++ ++void Assembler::ftruncdw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtdl_z(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::froundsw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ DCHECK(fs != kScratchDoubleReg2 && fd != kScratchDoubleReg2); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_g(kScratchDoubleReg1, kScratchDoubleReg2); ++ fcvtlw(kScratchDoubleReg2, fd); ++} ++ ++void Assembler::frounddw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtdl_g(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ffloorsw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ DCHECK(fs != kScratchDoubleReg2 && fd != kScratchDoubleReg2); ++ fcvtsd(fs, kScratchDoubleReg2); ++ fcvtdl_n(kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ffloordw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtdl_n(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fceilsw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ DCHECK(fs != kScratchDoubleReg2 && fd != kScratchDoubleReg2); ++ fcvtsd(fs, kScratchDoubleReg2); ++ fcvtdl_p(kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fceildw(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtdl_p(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fcvtsl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ftruncsl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ftruncdl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, fd); ++ } else { ++ fcvtdl_z(fs, fd); ++ } ++} ++ ++void Assembler::froundsl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_g(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::frounddl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtdl_g(kScratchDoubleReg1, fd); ++ } else { ++ fcvtdl_g(fs, fd); ++ } ++} ++ ++void Assembler::ffloorsl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_n(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::ffloordl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtdl_n(kScratchDoubleReg1, fd); ++ } else { ++ fcvtdl_n(fs, fd); ++ } ++} ++ ++void Assembler::fceilsl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtsd(fs, kScratchDoubleReg1); ++ fcvtdl_p(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fceildl(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtdl_p(kScratchDoubleReg1, fd); ++ } else { ++ fcvtdl_p(fs, fd); ++ } ++} ++ ++void Assembler::fcvtws(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtwl(fs, kScratchDoubleReg1); ++ fcvtls(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fcvtls_(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtls(kScratchDoubleReg1, fd); ++ } else { ++ fcvtls(fs, fd); ++ } ++} ++ ++void Assembler::fcvtds_(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtds(kScratchDoubleReg1, fd); ++ } else { ++ fcvtds(fs, fd); ++ } ++} ++ ++void Assembler::fcvtwd(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ fcvtwl(fs, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg1, fd); ++} ++ ++void Assembler::fcvtld_(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovd(fs, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg1, fd); ++ } else { ++ fcvtld(fs, fd); ++ } ++} ++ ++void Assembler::fcvtsd_(FPURegister fs, FPURegister fd) { ++ DCHECK(fs != kScratchDoubleReg1 && fd != kScratchDoubleReg1); ++ if (fs == fd) { ++ fmovs(fs, kScratchDoubleReg1); ++ fcvtsd(kScratchDoubleReg1, fd); ++ } else { ++ fcvtsd(fs, fd); ++ } ++} ++ ++void Assembler::GenInstrB_SW(Opcode_ops_bra opcode, Register Ra, int32_t disp) { ++ DCHECK(Ra.is_valid() && is_int21(disp)); ++ Instr instr = opcode | (Ra.code() << sRaShift) | (disp & sImm21Mask); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFB_SW(Opcode_ops_bra opcode, FloatRegister fa, ++ int32_t disp) { ++ DCHECK(fa.is_valid() && is_int21(disp)); ++ Instr instr = opcode | (fa.code() << sRaShift) | (disp & sImm21Mask); ++ emit(instr); ++} ++ ++void Assembler::GenInstrM_SW(Opcode_ops_mem opcode, Register Ra, int16_t disp, ++ Register Rb) { ++ DCHECK(Ra.is_valid() && Rb.is_valid() && is_int16(disp)); ++ Instr instr = opcode | (Ra.code() << sRaShift) | (Rb.code() << sRbShift) | ++ (disp & sImm16Mask); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFM_SW(Opcode_ops_mem opcode, FloatRegister fa, ++ int16_t disp, Register Rb) { ++ DCHECK(fa.is_valid() && Rb.is_valid() && is_int16(disp)); ++ Instr instr = opcode | (fa.code() << sRaShift) | (Rb.code() << sRbShift) | ++ (disp & sImm16Mask); ++ emit(instr); ++} ++ ++void Assembler::GenInstrMWithFun_SW(Opcode_ops_atmem opcode, Register Ra, ++ int16_t disp, Register Rb) { ++ DCHECK(Ra.is_valid() && Rb.is_valid() && is_int12(disp)); ++ Instr instr = opcode | (Ra.code() << sRaShift) | (Rb.code() << sRbShift) | ++ (disp & sImm12Mask); ++ emit(instr); ++} ++ ++void Assembler::GenInstrR_SW(Opcode_ops_opr opcode, Register Ra, Register Rb, ++ Register Rc) { ++ DCHECK(Ra.is_valid() && Rb.is_valid() && Rc.is_valid()); ++ Instr instr = opcode | (Ra.code() << sRaShift) | (Rb.code() << sRbShift) | ++ (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrI_SW(Opcode_ops_oprl opcode, Register Ra, int16_t imm, ++ Register Rc) { ++ DCHECK(Ra.is_valid() && is_uint8(imm) && Rc.is_valid()); ++ Instr instr = opcode | (Ra.code() << sRaShift) | ++ ((imm << sImm8Shift) & sImm8Mask) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++// Float-point ALU instructions. ++void Assembler::GenInstrFR_SW(Opcode_ops_fp opcode, FloatRegister fa, ++ FloatRegister fb, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fb.is_valid() && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | (fb.code() << sRbShift) | ++ (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFR_SW(Opcode_ops_fp opcode, FloatRegister fb, ++ FloatRegister fc) { ++ DCHECK(fb.is_valid() && fc.is_valid()); ++ Instr instr = opcode | (fb.code() << sRbShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++// 20180914 ++void Assembler::GenInstrFR_SW(Opcode_ops_fpl opcode, FloatRegister fa, ++ int16_t imm, FloatRegister fc) { ++ DCHECK(fa.is_valid() && is_uint8(imm) && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | ++ ((imm << sImm8Shift) & sImm8Mask) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFR_SW(Opcode_ops_fpl opcode, FloatRegister fa, ++ FloatRegister fb, int16_t fmalit, ++ FloatRegister fc) { ++ DCHECK(fa.is_valid() && fb.is_valid() && is_uint5(fmalit) && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | (fb.code() << sRbShift) | ++ ((fmalit << sImm5Shift) & sImm5Mask) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFMA_SW(Opcode_ops_fmal opcode, FloatRegister fa, ++ FloatRegister fb, int16_t fmalit, ++ FloatRegister fc) { ++ DCHECK(fa.is_valid() && fb.is_valid() && is_uint5(fmalit) && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | (fb.code() << sRbShift) | ++ ((fmalit << sImm5Shift) & sImm5Mask) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFMA_SW(Opcode_ops_fmal opcode, FloatRegister fa, ++ int16_t fmalit, FloatRegister fc) { ++ DCHECK(fa.is_valid() && is_uint5(fmalit) && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | ++ ((fmalit << sImm5Shift) & sImm5Mask) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrFMA_SW(Opcode_ops_fma opcode, FloatRegister fa, ++ FloatRegister fb, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fb.is_valid() && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | (fb.code() << sRbShift) | ++ (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::GenInstrSWSA_SW(Opcode_ops_atmem opcode, FloatRegister fa, ++ int16_t atmdisp, Register Rb) { ++ DCHECK(fa.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++// FMA + FSEL** instructions. ++void Assembler::GenInstrFMA_SW(Opcode_ops_fma opcode, FloatRegister fa, ++ FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ DCHECK(fa.is_valid() && fb.is_valid() && f3.is_valid() && fc.is_valid()); ++ Instr instr = opcode | (fa.code() << sRaShift) | (fb.code() << sRbShift) | ++ (f3.code() << sR3Shift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++// SEL** instructions. ++void Assembler::GenInstrSelR_SW(Opcode_ops_sel opcode, Register Ra, Register Rb, ++ Register R3, Register Rc) { ++ DCHECK(Ra.is_valid() && Rb.is_valid() && R3.is_valid() && Rc.is_valid()); ++ Instr instr = opcode | (Ra.code() << sRaShift) | (Rb.code() << sRbShift) | ++ (R3.code() << sR3Shift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++// SEL**_l instructions. ++void Assembler::GenInstrSelI_SW(Opcode_ops_sel_l opcode, Register Ra, ++ int32_t imm, Register R3, Register Rc) { ++ DCHECK(Ra.is_valid() && is_int8(imm) && R3.is_valid() && Rc.is_valid()); ++ Instr instr = opcode | (Ra.code() << sRaShift) | ++ ((imm << sImm8Shift) & sImm8Mask) | (R3.code() << sR3Shift) | ++ (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++// All SW64 instructions ++ ++void Assembler::sys_call_b(int palfn) { ++ DCHECK(is_int26(palfn)); ++ Instr instr = op_sys_call | palfn; ++ emit(instr); ++} ++ ++void Assembler::sys_call(int palfn) { ++ DCHECK(is_int26(palfn)); ++ Instr instr = op_sys_call | (palfn & ((1 << 26) - 1)); ++ emit(instr); ++} ++ ++void Assembler::call(Register Ra, Register Rb, int jmphint) { ++ // call ra, (rb), jmphint; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrM_SW(op_call, Ra, jmphint, Rb); ++} ++ ++void Assembler::ret(Register Ra, Register Rb, int rethint) { ++ // ret ra, (rb), rethint; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrM_SW(op_ret, Ra, rethint, Rb); ++} ++ ++void Assembler::jmp(Register Ra, Register Rb, int jmphint) { ++ // jmp ra, (rb), jmphint; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrM_SW(op_jmp, Ra, jmphint, Rb); ++} ++ ++void Assembler::br(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_br, Ra, bdisp); ++} ++ ++void Assembler::bsr(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_bsr, Ra, bdisp); ++} ++ ++void Assembler::memb(void) { ++ Instr instr = op_memb; ++ emit(instr); ++} ++ ++void Assembler::imemb(void) { ++ Instr instr = op_imemb; ++ emit(instr); ++} ++ ++void Assembler::wmemb(void) { ++ Instr instr = op_wmemb; ++ emit(instr); ++} ++ ++void Assembler::rtc(Register Ra, Register Rb) { ++ DCHECK(Ra.is_valid() && Rb.is_valid()); ++ Instr instr = op_rtc | Ra.code() << sRaShift | Rb.code() << sRbShift; ++ emit(instr); ++} ++ ++void Assembler::rcid(Register Ra) { ++ DCHECK(Ra.is_valid()); ++ Instr instr = op_rcid | Ra.code() << sRaShift; ++ emit(instr); ++} ++ ++void Assembler::halt(void) { ++ Instr instr = op_halt; ++ emit(instr); ++} ++ ++void Assembler::rd_f(Register Ra) { ++ DCHECK(Ra.is_valid()); ++ Instr instr = op_rd_f | Ra.code() << sRaShift; ++ emit(instr); ++} ++ ++void Assembler::wr_f(Register Ra) { ++ DCHECK(Ra.is_valid()); ++ Instr instr = op_wr_f | Ra.code() << sRaShift; ++ emit(instr); ++} ++ ++void Assembler::rtid(Register Ra) { ++ DCHECK(Ra.is_valid()); ++ Instr instr = op_rtid | Ra.code() << sRaShift; ++ emit(instr); ++} ++ ++void Assembler::csrrs(Register Ra, int rpiindex) { ++ DCHECK(Ra.is_valid() && is_uint8(rpiindex)); ++ Instr instr = op_csrrs | (Ra.code() << sRaShift) | (rpiindex & sRpiMask); ++ emit(instr); ++} ++ ++void Assembler::csrrc(Register Ra, int rpiindex) { ++ DCHECK(Ra.is_valid() && is_uint8(rpiindex)); ++ Instr instr = op_csrrc | (Ra.code() << sRaShift) | (rpiindex & sRpiMask); ++ emit(instr); ++} ++ ++void Assembler::csrr(Register Ra, int rpiindex) { ++ DCHECK(Ra.is_valid() && is_uint8(rpiindex)); ++ Instr instr = op_csrr | (Ra.code() << sRaShift) | (rpiindex & sRpiMask); ++ emit(instr); ++} ++ ++void Assembler::csrw(Register Ra, int rpiindex) { ++ DCHECK(Ra.is_valid() && is_uint8(rpiindex)); ++ Instr instr = op_csrw | (Ra.code() << sRaShift) | (rpiindex & sRpiMask); ++ emit(instr); ++} ++ ++void Assembler::pri_ret(Register Ra) { ++ DCHECK(Ra.is_valid()); ++ Instr instr = op_pri_ret | Ra.code() << sRaShift; ++ emit(instr); ++} ++ ++void Assembler::lldw(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_lldw, Ra, atmdisp, Rb); ++} ++ ++void Assembler::lldl(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_lldl, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldw_inc(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldw_inc, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldl_inc(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldl_inc, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldw_dec(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldw_dec, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldl_dec(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldl_dec, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldw_set(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldw_set, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldl_set(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldl_set, Ra, atmdisp, Rb); ++} ++ ++void Assembler::lstw(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_lstw, Ra, atmdisp, Rb); ++} ++ ++void Assembler::lstl(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_lstl, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldw_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_ldw_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::ldl_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_ldl_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::ldd_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_ldd_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::stw_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_stw_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::stl_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_stl_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::std_nc(Register Ra, int atmdisp, Register Rb) { ++ DCHECK(Ra.is_valid() && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_std_nc | (Ra.code() << sRaShift) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::ldwe(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_ldwe, fa, mdisp, Rb); ++} ++ ++void Assembler::ldse(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_ldse, fa, mdisp, Rb); ++} ++ ++void Assembler::ldde(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_ldde, fa, mdisp, Rb); ++} ++ ++void Assembler::vlds(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_vlds, fa, mdisp, Rb); ++} ++ ++void Assembler::vldd(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_vldd, fa, mdisp, Rb); ++} ++ ++void Assembler::vsts(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_vsts, fa, mdisp, Rb); ++} ++ ++void Assembler::vstd(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_vstd, fa, mdisp, Rb); ++} ++ ++void Assembler::addw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_addw, Ra, Rb, Rc); ++} ++ ++void Assembler::addw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_addw_l, Ra, imm, Rc); ++} ++ ++void Assembler::subw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_subw, Ra, Rb, Rc); ++} ++ ++void Assembler::subw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_subw_l, Ra, imm, Rc); ++} ++ ++void Assembler::s4addw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s4addw, Ra, Rb, Rc); ++} ++ ++void Assembler::s4addw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s4addw_l, Ra, imm, Rc); ++} ++ ++void Assembler::s4subw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s4subw, Ra, Rb, Rc); ++} ++ ++void Assembler::s4subw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s4subw_l, Ra, imm, Rc); ++} ++ ++void Assembler::s8addw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s8addw, Ra, Rb, Rc); ++} ++ ++void Assembler::s8addw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s8addw_l, Ra, imm, Rc); ++} ++ ++void Assembler::s8subw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s8subw, Ra, Rb, Rc); ++} ++ ++void Assembler::s8subw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s8subw_l, Ra, imm, Rc); ++} ++ ++void Assembler::addl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_addl, Ra, Rb, Rc); ++} ++ ++void Assembler::addl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_addl_l, Ra, imm, Rc); ++} ++ ++void Assembler::subl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_subl, Ra, Rb, Rc); ++} ++ ++void Assembler::subl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_subl_l, Ra, imm, Rc); ++} ++ ++void Assembler::s4addl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s4addl, Ra, Rb, Rc); ++} ++ ++void Assembler::s4addl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s4addl_l, Ra, imm, Rc); ++} ++ ++void Assembler::s4subl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s4subl, Ra, Rb, Rc); ++} ++ ++void Assembler::s4subl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s4subl_l, Ra, imm, Rc); ++} ++ ++void Assembler::s8addl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s8addl, Ra, Rb, Rc); ++} ++ ++void Assembler::s8addl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s8addl_l, Ra, imm, Rc); ++} ++ ++void Assembler::s8subl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_s8subl, Ra, Rb, Rc); ++} ++ ++void Assembler::s8subl(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_s8subl_l, Ra, imm, Rc); ++} ++ ++void Assembler::mulw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_mulw, Ra, Rb, Rc); ++} ++ ++void Assembler::mulw(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_mulw_l, Ra, imm, Rc); ++} ++ ++void Assembler::divw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_divw, Ra, Rb, Rc); ++} ++ ++void Assembler::udivw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_udivw, Ra, Rb, Rc); ++} ++ ++void Assembler::remw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_remw, Ra, Rb, Rc); ++} ++ ++void Assembler::uremw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_uremw, Ra, Rb, Rc); ++} ++ ++void Assembler::mull(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_mull, Ra, Rb, Rc); ++} ++ ++void Assembler::mull(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_mull_l, Ra, imm, Rc); ++} ++ ++void Assembler::umulh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_umulh, Ra, Rb, Rc); ++} ++ ++void Assembler::umulh(Register Ra, int imm, Register Rc) { ++ GenInstrI_SW(op_umulh_l, Ra, imm, Rc); ++} ++ ++void Assembler::divl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_divl, Ra, Rb, Rc); ++} ++ ++void Assembler::udivl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_udivl, Ra, Rb, Rc); ++} ++ ++void Assembler::reml(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_reml, Ra, Rb, Rc); ++} ++ ++void Assembler::ureml(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_ureml, Ra, Rb, Rc); ++} ++ ++void Assembler::addpi(int apint, Register Rc) { ++ DCHECK(is_int13(apint) && Rc.is_valid()); ++ Instr instr = op_addpi | ((apint << sImm13Shift) & sImm13Mask) | ++ (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::addpis(int apint, Register Rc) { ++ DCHECK(is_int13(apint) && Rc.is_valid()); ++ Instr instr = op_addpis | ((apint << sImm13Shift) & sImm13Mask) | ++ (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmpeq(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmpeq, Ra, Rb, Rc); ++} ++ ++void Assembler::cmpeq(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmpeq_l, Ra, lit, Rc); ++} ++ ++void Assembler::cmplt(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmplt, Ra, Rb, Rc); ++} ++ ++void Assembler::cmplt(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmplt_l, Ra, lit, Rc); ++} ++ ++void Assembler::cmple(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmple, Ra, Rb, Rc); ++} ++ ++void Assembler::cmple(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmple_l, Ra, lit, Rc); ++} ++ ++void Assembler::cmpult(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmpult, Ra, Rb, Rc); ++} ++ ++void Assembler::cmpult(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmpult_l, Ra, lit, Rc); ++} ++ ++void Assembler::cmpule(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmpule, Ra, Rb, Rc); ++} ++ ++void Assembler::cmpule(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmpule_l, Ra, lit, Rc); ++} ++ ++void Assembler::sbt(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_sbt, Ra, Rb, Rc); ++} ++ ++void Assembler::sbt(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_sbt_l, Ra, lit, Rc); ++} ++ ++void Assembler::cbt(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cbt, Ra, Rb, Rc); ++} ++ ++void Assembler::cbt(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cbt_l, Ra, lit, Rc); ++} ++ ++void Assembler::and_(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_and, Ra, Rb, Rc); ++} ++ ++void Assembler::and_(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_and_l, Ra, lit, Rc); ++} ++ ++void Assembler::bic(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_bic, Ra, Rb, Rc); ++} ++ ++void Assembler::bic(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_bic_l, Ra, lit, Rc); ++} ++ ++void Assembler::andnot(Register Ra, Register Rb, Register Rc) { ++ bic(Ra, Rb, Rc); ++} ++ ++void Assembler::andnot(Register Ra, int lit, Register Rc) { bic(Ra, lit, Rc); } ++ ++void Assembler::bis(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_bis, Ra, Rb, Rc); ++} ++ ++void Assembler::bis(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_bis_l, Ra, lit, Rc); ++} ++ ++void Assembler::or_(Register Ra, Register Rb, Register Rc) { ++ // GenInstrR_SW(op_bis, Ra, Rb, Rc); ++ bis(Ra, Rb, Rc); ++} ++ ++void Assembler::or_(Register Ra, int lit, Register Rc) { ++ // GenInstrI_SW(op_bis_l, Ra, lit, Rc); ++ bis(Ra, lit, Rc); ++} ++ ++void Assembler::ornot(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_ornot, Ra, Rb, Rc); ++} ++ ++void Assembler::ornot(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_ornot_l, Ra, lit, Rc); ++} ++ ++void Assembler::xor_(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_xor, Ra, Rb, Rc); ++} ++ ++void Assembler::xor_(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_xor_l, Ra, lit, Rc); ++} ++ ++void Assembler::eqv(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_eqv, Ra, Rb, Rc); ++} ++ ++void Assembler::eqv(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_eqv_l, Ra, lit, Rc); ++} ++ ++// 0x10.40-0x10.47 INS[0-7]B ++void Assembler::inslb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inslb, Ra, Rb, Rc); ++} ++ ++void Assembler::inslb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inslb_l, Ra, lit, Rc); ++} ++ ++void Assembler::inslh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inslh, Ra, Rb, Rc); ++} ++ ++void Assembler::inslh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inslh_l, Ra, lit, Rc); ++} ++ ++void Assembler::inslw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inslw, Ra, Rb, Rc); ++} ++ ++void Assembler::inslw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inslw_l, Ra, lit, Rc); ++} ++ ++void Assembler::insll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_insll, Ra, Rb, Rc); ++} ++ ++void Assembler::insll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_insll_l, Ra, lit, Rc); ++} ++ ++void Assembler::inshb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inshb, Ra, Rb, Rc); ++} ++ ++void Assembler::inshb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inshb_l, Ra, lit, Rc); ++} ++ ++void Assembler::inshh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inshh, Ra, Rb, Rc); ++} ++ ++void Assembler::inshh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inshh_l, Ra, lit, Rc); ++} ++ ++void Assembler::inshw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inshw, Ra, Rb, Rc); ++} ++ ++void Assembler::inshw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inshw_l, Ra, lit, Rc); ++} ++ ++void Assembler::inshl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_inshl, Ra, Rb, Rc); ++} ++ ++void Assembler::inshl(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_inshl_l, Ra, lit, Rc); ++} ++ ++void Assembler::slll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_slll, Ra, Rb, Rc); ++} ++ ++void Assembler::slll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_slll_l, Ra, lit, Rc); ++} ++ ++void Assembler::srll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_srll, Ra, Rb, Rc); ++} ++ ++void Assembler::srll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_srll_l, Ra, lit, Rc); ++} ++ ++void Assembler::sral(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_sral, Ra, Rb, Rc); ++} ++ ++void Assembler::sral(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_sral_l, Ra, lit, Rc); ++} ++ ++void Assembler::roll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_roll, Ra, Rb, Rc); ++} ++ ++void Assembler::roll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_roll_l, Ra, lit, Rc); ++} ++ ++void Assembler::sllw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_sllw, Ra, Rb, Rc); ++} ++ ++void Assembler::sllw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_sllw_l, Ra, lit, Rc); ++} ++ ++void Assembler::srlw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_srlw, Ra, Rb, Rc); ++} ++ ++void Assembler::srlw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_srlw_l, Ra, lit, Rc); ++} ++ ++void Assembler::sraw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_sraw, Ra, Rb, Rc); ++} ++ ++void Assembler::sraw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_sraw_l, Ra, lit, Rc); ++} ++ ++void Assembler::rolw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_rolw, Ra, Rb, Rc); ++} ++ ++void Assembler::rolw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_rolw_l, Ra, lit, Rc); ++} ++ ++// 0x10.50-0x10.57 EXT[0-7]B ++void Assembler::extlb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_extlb, Ra, Rb, Rc); ++} ++ ++void Assembler::extlb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_extlb_l, Ra, lit, Rc); ++} ++ ++void Assembler::extlh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_extlh, Ra, Rb, Rc); ++} ++ ++void Assembler::extlh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_extlh_l, Ra, lit, Rc); ++} ++ ++void Assembler::extlw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_extlw, Ra, Rb, Rc); ++} ++ ++void Assembler::extlw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_extlw_l, Ra, lit, Rc); ++} ++ ++void Assembler::extll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_extll, Ra, Rb, Rc); ++} ++ ++void Assembler::extll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_extll_l, Ra, lit, Rc); ++} ++ ++void Assembler::exthb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_exthb, Ra, Rb, Rc); ++} ++ ++void Assembler::exthb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_exthb_l, Ra, lit, Rc); ++} ++ ++void Assembler::exthh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_exthh, Ra, Rb, Rc); ++} ++ ++void Assembler::exthh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_exthh_l, Ra, lit, Rc); ++} ++ ++void Assembler::exthw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_exthw, Ra, Rb, Rc); ++} ++ ++void Assembler::exthw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_exthw_l, Ra, lit, Rc); ++} ++ ++void Assembler::exthl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_exthl, Ra, Rb, Rc); ++} ++ ++void Assembler::exthl(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_exthl_l, Ra, lit, Rc); ++} ++ ++void Assembler::ctpop(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_ctpop | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::ctlz(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_ctlz | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::cttz(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cttz | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::revbh(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_revbh | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::revbw(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_revbw | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::revbl(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_revbl | Rb.code() << sRbShift | Rc.code() << sRcShift; ++ emit(instr); ++} ++ ++void Assembler::casw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_casw, Ra, Rb, Rc); ++} ++ ++void Assembler::casl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_casl, Ra, Rb, Rc); ++} ++ ++// 0x10.60-0x10.67 MASK[0-7]B ++void Assembler::masklb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_masklb, Ra, Rb, Rc); ++} ++ ++void Assembler::masklb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_masklb_l, Ra, lit, Rc); ++} ++ ++void Assembler::masklh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_masklh, Ra, Rb, Rc); ++} ++ ++void Assembler::masklh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_masklh_l, Ra, lit, Rc); ++} ++ ++void Assembler::masklw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_masklw, Ra, Rb, Rc); ++} ++ ++void Assembler::masklw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_masklw_l, Ra, lit, Rc); ++} ++ ++void Assembler::maskll(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_maskll, Ra, Rb, Rc); ++} ++ ++void Assembler::maskll(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_maskll_l, Ra, lit, Rc); ++} ++ ++void Assembler::maskhb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_maskhb, Ra, Rb, Rc); ++} ++ ++void Assembler::maskhb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_maskhb_l, Ra, lit, Rc); ++} ++ ++void Assembler::maskhh(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_maskhh, Ra, Rb, Rc); ++} ++ ++void Assembler::maskhh(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_maskhh_l, Ra, lit, Rc); ++} ++ ++void Assembler::maskhw(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_maskhw, Ra, Rb, Rc); ++} ++ ++void Assembler::maskhw(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_maskhw_l, Ra, lit, Rc); ++} ++ ++void Assembler::maskhl(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_maskhl, Ra, Rb, Rc); ++} ++ ++void Assembler::maskhl(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_maskhl_l, Ra, lit, Rc); ++} ++ ++void Assembler::zap(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_zap, Ra, Rb, Rc); ++} ++ ++void Assembler::zap(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_zap_l, Ra, lit, Rc); ++} ++ ++void Assembler::zapnot(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_zapnot, Ra, Rb, Rc); ++} ++ ++void Assembler::zapnot(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_zapnot_l, Ra, lit, Rc); ++} ++ ++void Assembler::sextb(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_sextb | (Rb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::sextb(int lit, Register Rc) { ++ DCHECK(is_uint8(lit) && Rc.is_valid()); ++ Instr instr = op_sextb_l | (lit & sImm8Mask) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::sexth(Register Rb, Register Rc) { ++ DCHECK(Rb.is_valid() && Rc.is_valid()); ++ Instr instr = op_sexth | (Rb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::sexth(int lit, Register Rc) { ++ DCHECK(is_uint8(lit) && Rc.is_valid()); ++ Instr instr = op_sexth_l | (lit & sImm8Mask) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++// 0x10.6c CMPGEB ++void Assembler::cmpgeb(Register Ra, Register Rb, Register Rc) { ++ GenInstrR_SW(op_cmpgeb, Ra, Rb, Rc); ++} ++ ++void Assembler::cmpgeb(Register Ra, int lit, Register Rc) { ++ GenInstrI_SW(op_cmpgeb_l, Ra, lit, Rc); ++} ++ ++// void Assembler::ftois(FloatRegister fa, Register Rc ) ++// void Assembler::ftoid(FloatRegister fa, Register Rc ) ++void Assembler::fimovs(FloatRegister fa, Register Rc) { ++ DCHECK(fa.is_valid() && Rc.is_valid()); ++ Instr instr = op_fimovs | (fa.code() << sRaShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::fimovd(FloatRegister fa, Register Rc) { ++ DCHECK(fa.is_valid() && Rc.is_valid()); ++ Instr instr = op_fimovd | (fa.code() << sRaShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::seleq(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_seleq, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::seleq(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_seleq_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::selge(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_selge, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::selge(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_selge_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::selgt(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_selgt, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::selgt(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_selgt_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::selle(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_selle, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::selle(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_selle_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::sellt(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_sellt, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::sellt(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_sellt_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::selne(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_selne, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::selne(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_selne_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::sellbc(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_sellbc, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::sellbc(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_sellbc_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::sellbs(Register Ra, Register Rb, Register R3, Register Rc) { ++ GenInstrSelR_SW(op_sellbs, Ra, Rb, R3, Rc); ++} ++ ++void Assembler::sellbs(Register Ra, int lit, Register R3, Register Rc) { ++ GenInstrSelI_SW(op_sellbs_l, Ra, lit, R3, Rc); ++} ++ ++void Assembler::vlog(int vlog, FloatRegister fa, FloatRegister fb, ++ FloatRegister f3, FloatRegister fc) { ++ UNREACHABLE(); ++} ++ ++void Assembler::f_exclude_same_src_fc(Opcode_ops_fp opcode, FloatRegister fa, ++ FloatRegister fb, FloatRegister fc) { ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A) || v8_flags.sw8a_structure) { ++ GenInstrFR_SW(opcode, fa, fb, fc); ++ } else { ++ if (fa == fc || fb == fc) { ++ DCHECK(fa != kScratchDoubleReg && fb != kScratchDoubleReg); ++ GenInstrFR_SW(opcode, fa, fb, kScratchDoubleReg); ++ fmov(kScratchDoubleReg, fc); ++ } else { ++ GenInstrFR_SW(opcode, fa, fb, fc); ++ } ++ } ++} ++ ++void Assembler::f_exclude_same_src_fc(Opcode_ops_fp opcode, FloatRegister fb, ++ FloatRegister fc) { ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A) || v8_flags.sw8a_structure) { ++ GenInstrFR_SW(opcode, fb, fc); ++ } else { ++ if (fb == fc) { ++ DCHECK(fb != kScratchDoubleReg); ++ GenInstrFR_SW(opcode, fb, kScratchDoubleReg); ++ fmov(kScratchDoubleReg, fc); ++ } else { ++ GenInstrFR_SW(opcode, fb, fc); ++ } ++ } ++} ++ ++void Assembler::vbisw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_vbisw, fa, fb, fc); ++} ++ ++void Assembler::vxorw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_vxorw, fa, fb, fc); ++} ++ ++void Assembler::vandw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_vandw, fa, fb, fc); ++} ++ ++void Assembler::veqvw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_veqvw, fa, fb, fc); ++} ++ ++void Assembler::vornotw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_vornotw, fa, fb, fc); ++} ++ ++void Assembler::vbicw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_vbicw, fa, fb, fc); ++} ++ ++void Assembler::fadds(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fadds, fa, fb, fc); ++} ++ ++void Assembler::faddd(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_faddd, fa, fb, fc); ++} ++ ++void Assembler::fsubs(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fsubs, fa, fb, fc); ++} ++ ++void Assembler::fsubd(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fsubd, fa, fb, fc); ++} ++ ++void Assembler::fmuls(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fmuls, fa, fb, fc); ++} ++ ++void Assembler::fmuld(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fmuld, fa, fb, fc); ++} ++ ++void Assembler::fdivs(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fdivs, fa, fb, fc); ++} ++ ++void Assembler::fdivd(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fdivd, fa, fb, fc); ++} ++ ++void Assembler::fsqrts(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fsqrts, fb, fc); ++} ++ ++void Assembler::fsqrtd(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fsqrtd, fb, fc); ++} ++ ++void Assembler::fcmpeq(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcmpeq, fa, fb, fc); ++} ++ ++void Assembler::fcmple(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcmple, fa, fb, fc); ++} ++ ++void Assembler::fcmplt(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcmplt, fa, fb, fc); ++} ++ ++void Assembler::fcmpun(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcmpun, fa, fb, fc); ++} ++ ++void Assembler::fcvtsd(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtsd, fb, fc); ++} ++ ++void Assembler::fcvtds(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtds, fb, fc); ++} ++ ++void Assembler::fcvtdl_g(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtdl_g, fb, fc); ++} ++ ++void Assembler::fcvtdl_p(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtdl_p, fb, fc); ++} ++ ++void Assembler::fcvtdl_z(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtdl_z, fb, fc); ++} ++ ++void Assembler::fcvtdl_n(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtdl_n, fb, fc); ++} ++ ++void Assembler::fcvtdl(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtdl, fb, fc); ++} ++ ++void Assembler::fcvtwl(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtwl, fb, fc); ++} ++ ++void Assembler::fcvtlw(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtlw, fb, fc); ++} ++ ++void Assembler::fcvtls(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtls, fb, fc); ++} ++ ++void Assembler::fcvtld(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fcvtld, fb, fc); ++} ++ ++void Assembler::fcpys(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_fcpys, fa, fb, fc); ++} ++ ++void Assembler::fcvtsh(FloatRegister Fb, FloatRegister Fc) { ++ DCHECK(Fb.is_valid() && Fc.is_valid()); ++ Instr instr = op_fcvtsh | (Fb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::fcvths(FloatRegister Fb, FloatRegister Fc) { ++ DCHECK(Fb.is_valid() && Fc.is_valid()); ++ Instr instr = op_fcvths | (Fb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdw(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdw | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdw_g(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdw_g | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdw_p(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdw_p | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdw_z(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdw_z | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdw_n(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdw_n | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdwu(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdwu | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdwu_g(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdwu_g | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdwu_p(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdwu_p | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdwu_z(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdwu_z | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdwu_n(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdwu_n | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdl(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdl | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdl_g(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdl_g | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdl_p(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdl_p | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdl_z(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdl_z | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdl_n(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdl_n | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdlu(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = op_cmovdlu | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdlu_g(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdlu_g | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdlu_p(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdlu_p | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdlu_z(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdlu_z | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovdlu_n(FloatRegister Fb, Register Rc) { ++ DCHECK(Fb.is_valid() && Rc.is_valid()); ++ Instr instr = ++ op_cmovdlu_n | (Fb.code() << sRbShift) | (Rc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovls(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovls | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovld(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovld | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovuls(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovuls | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovuld(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovuld | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovws(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovws | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovwd(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovwd | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovuws(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovuws | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::cmovuwd(Register Rb, FloatRegister Fc) { ++ DCHECK(Rb.is_valid() && Fc.is_valid()); ++ Instr instr = op_cmovuwd | (Rb.code() << sRbShift) | (Fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::fcpyse(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_fcpyse, fa, fb, fc); ++} ++ ++void Assembler::fcpysn(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_fcpysn, fa, fb, fc); ++} ++ ++void Assembler::ifmovs(Register Ra, FloatRegister fc) { ++ DCHECK(Ra.is_valid() && fc.is_valid()); ++ Instr instr = op_ifmovs | (Ra.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::ifmovd(Register Ra, FloatRegister fc) { ++ DCHECK(Ra.is_valid() && fc.is_valid()); ++ Instr instr = op_ifmovd | (Ra.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::rfpcr(FloatRegister fa) { ++ DCHECK(fa.is_valid()); ++ Instr instr = op_rfpcr | (fa.code() << sRaShift); ++ emit(instr); ++} ++ ++void Assembler::wfpcr(FloatRegister fa) { ++ DCHECK(fa.is_valid()); ++ Instr instr = op_wfpcr | (fa.code() << sRaShift); ++ emit(instr); ++} ++ ++void Assembler::setfpec0() { ++ // Instr instr = op_setfpec0; ++ // emit(instr); ++} ++ ++void Assembler::setfpec1() { ++ // Instr instr = op_setfpec1; ++ // emit(instr); ++} ++ ++void Assembler::setfpec2() { ++ // Instr instr = op_setfpec2; ++ // emit(instr); ++} ++ ++void Assembler::setfpec3() { ++ // Instr instr = op_setfpec3; ++ // emit(instr); ++} ++ ++void Assembler::frecs(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_frecs | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::frecd(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_frecd | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::fris(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fris, fb, fc); ++} ++ ++void Assembler::fris_g(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fris_g, fb, fc); ++} ++ ++void Assembler::fris_p(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fris_p, fb, fc); ++} ++ ++void Assembler::fris_z(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fris_z, fb, fc); ++} ++ ++void Assembler::fris_n(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_fris_n, fb, fc); ++} ++ ++void Assembler::frid(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_frid, fb, fc); ++} ++ ++void Assembler::frid_g(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_frid_g, fb, fc); ++} ++ ++void Assembler::frid_p(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_frid_p, fb, fc); ++} ++ ++void Assembler::frid_z(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_frid_z, fb, fc); ++} ++ ++void Assembler::frid_n(FloatRegister fb, FloatRegister fc) { ++ f_exclude_same_src_fc(op_frid_n, fb, fc); ++} ++ ++void Assembler::fmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fmas, fa, fb, f3, fc); ++} ++ ++void Assembler::fmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fmad, fa, fb, f3, fc); ++} ++ ++void Assembler::fmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fmss, fa, fb, f3, fc); ++} ++ ++void Assembler::fmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fmsd, fa, fb, f3, fc); ++} ++ ++void Assembler::fnmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fnmas, fa, fb, f3, fc); ++} ++ ++void Assembler::fnmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fnmad, fa, fb, f3, fc); ++} ++ ++void Assembler::fnmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fnmss, fa, fb, f3, fc); ++} ++ ++void Assembler::fnmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fnmsd, fa, fb, f3, fc); ++} ++ ++void Assembler::fseleq(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fseleq, fa, fb, f3, fc); ++} ++ ++void Assembler::fselne(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fselne, fa, fb, f3, fc); ++} ++ ++void Assembler::fsellt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fsellt, fa, fb, f3, fc); ++} ++ ++void Assembler::fselle(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fselle, fa, fb, f3, fc); ++} ++ ++void Assembler::fselgt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fselgt, fa, fb, f3, fc); ++} ++ ++void Assembler::fselge(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_fselge, fa, fb, f3, fc); ++} ++ ++void Assembler::vaddw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vaddw, fa, fb, fc); ++} ++ ++void Assembler::vaddw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vaddw_l, fa, lit, fc); ++} ++ ++void Assembler::vsubw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsubw, fa, fb, fc); ++} ++ ++void Assembler::vsubw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsubw_l, fa, lit, fc); ++} ++ ++void Assembler::vcmpgew(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpgew, fa, fb, fc); ++} ++ ++void Assembler::vcmpgew(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpgew_l, fa, lit, fc); ++} ++ ++void Assembler::vcmpeqw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpeqw, fa, fb, fc); ++} ++ ++void Assembler::vcmpeqw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpeqw_l, fa, lit, fc); ++} ++ ++void Assembler::vcmplew(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmplew, fa, fb, fc); ++} ++ ++void Assembler::vcmplew(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmplew_l, fa, lit, fc); ++} ++ ++void Assembler::vcmpltw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpltw, fa, fb, fc); ++} ++ ++void Assembler::vcmpltw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpltw_l, fa, lit, fc); ++} ++ ++void Assembler::vcmpulew(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpulew, fa, fb, fc); ++} ++ ++void Assembler::vcmpulew(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpulew_l, fa, lit, fc); ++} ++ ++void Assembler::vcmpultw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpultw, fa, fb, fc); ++} ++ ++void Assembler::vcmpultw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vcmpultw_l, fa, lit, fc); ++} ++ ++void Assembler::vsllw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllw, fa, fb, fc); ++} ++ ++void Assembler::vsllw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllw_l, fa, lit, fc); ++} ++ ++void Assembler::vsrlw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlw, fa, fb, fc); ++} ++ ++void Assembler::vsrlw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlw_l, fa, lit, fc); ++} ++ ++void Assembler::vsraw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsraw, fa, fb, fc); ++} ++ ++void Assembler::vsraw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsraw_l, fa, lit, fc); ++} ++ ++void Assembler::vrolw(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolw, fa, fb, fc); ++} ++ ++void Assembler::vrolw(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolw_l, fa, lit, fc); ++} ++ ++void Assembler::sllow(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_sllow, fa, fb, fc); ++} ++ ++void Assembler::sllow(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_sllow_l, fa, lit, fc); ++} ++ ++void Assembler::srlow(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_srlow, fa, fb, fc); ++} ++ ++void Assembler::srlow(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_srlow_l, fa, lit, fc); ++} ++ ++void Assembler::vaddl(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vaddl, fa, fb, fc); ++} ++ ++void Assembler::vaddl(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vaddl_l, fa, lit, fc); ++} ++ ++void Assembler::vsubl(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsubl, fa, fb, fc); ++} ++ ++void Assembler::vsubl(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsubl_l, fa, lit, fc); ++} ++ ++void Assembler::vsllb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllb, fa, fb, fc); ++} ++ ++void Assembler::vsllb(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllb_l, fa, lit, fc); ++} ++ ++void Assembler::vsrlb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlb, fa, fb, fc); ++} ++ ++void Assembler::vsrlb(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlb_l, fa, lit, fc); ++} ++ ++void Assembler::vsrab(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrab, fa, fb, fc); ++} ++ ++void Assembler::vsrab(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrab_l, fa, lit, fc); ++} ++ ++void Assembler::vrolb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolb, fa, fb, fc); ++} ++ ++void Assembler::vrolb(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolb_l, fa, lit, fc); ++} ++ ++void Assembler::vsllh(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllh, fa, fb, fc); ++} ++ ++void Assembler::vsllh(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsllh_l, fa, lit, fc); ++} ++ ++void Assembler::vsrlh(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlh, fa, fb, fc); ++} ++ ++void Assembler::vsrlh(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrlh_l, fa, lit, fc); ++} ++ ++void Assembler::vsrah(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrah, fa, fb, fc); ++} ++ ++void Assembler::vsrah(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrah_l, fa, lit, fc); ++} ++ ++void Assembler::vrolh(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolh, fa, fb, fc); ++} ++ ++void Assembler::vrolh(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vrolh_l, fa, lit, fc); ++} ++ ++void Assembler::ctpopow(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_ctpopow | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::ctlzow(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_ctlzow | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::vslll(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vslll, fa, fb, fc); ++} ++ ++void Assembler::vslll(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vslll_l, fa, lit, fc); ++} ++ ++void Assembler::vsrll(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrll, fa, fb, fc); ++} ++ ++void Assembler::vsrll(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsrll_l, fa, lit, fc); ++} ++ ++void Assembler::vsral(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vsral, fa, fb, fc); ++} ++ ++void Assembler::vsral(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vsral_l, fa, lit, fc); ++} ++ ++void Assembler::vroll(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vroll, fa, fb, fc); ++} ++ ++void Assembler::vroll(FloatRegister fa, int lit, FloatRegister fc) { ++ GenInstrFR_SW(op_vroll_l, fa, lit, fc); ++} ++ ++void Assembler::vmaxb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vmaxb, fa, fb, fc); ++} ++ ++void Assembler::vminb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFR_SW(op_vminb, fa, fb, fc); ++} ++ ++void Assembler::vmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vmas, fa, fb, f3, fc); ++} ++ ++void Assembler::vmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vmad, fa, fb, f3, fc); ++} ++ ++void Assembler::vmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vmss, fa, fb, f3, fc); ++} ++ ++void Assembler::vmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vmsd, fa, fb, f3, fc); ++} ++ ++void Assembler::vnmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vnmas, fa, fb, f3, fc); ++} ++ ++void Assembler::vnmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vnmad, fa, fb, f3, fc); ++} ++ ++void Assembler::vnmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vnmss, fa, fb, f3, fc); ++} ++ ++void Assembler::vnmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vnmsd, fa, fb, f3, fc); ++} ++ ++void Assembler::vfseleq(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vfseleq, fa, fb, f3, fc); ++} ++ ++void Assembler::vfsellt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vfsellt, fa, fb, f3, fc); ++} ++ ++void Assembler::vfselle(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vfselle, fa, fb, f3, fc); ++} ++ ++void Assembler::vseleqw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vseleqw, fa, fb, f3, fc); ++} ++ ++void Assembler::vseleqw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vseleqw_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vsellbcw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vsellbcw, fa, fb, f3, fc); ++} ++ ++void Assembler::vsellbcw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vsellbcw_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vselltw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vselltw, fa, fb, f3, fc); ++} ++ ++void Assembler::vselltw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vselltw_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vsellew(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vsellew, fa, fb, f3, fc); ++} ++ ++void Assembler::vsellew(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vsellew_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vinsw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsw_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vinsf(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsf_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vextw(FloatRegister fa, int fmalit, FloatRegister fc) { ++ GenInstrFMA_SW(op_vextw_l, fa, fmalit, fc); ++} ++ ++void Assembler::vextf(FloatRegister fa, int fmalit, FloatRegister fc) { ++ GenInstrFMA_SW(op_vextf_l, fa, fmalit, fc); ++} ++ ++void Assembler::vcpyw(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_vcpyw | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::vcpyf(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_vcpyf | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::vconw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vconw, fa, fb, f3, fc); ++} ++ ++void Assembler::vshfw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vshfw, fa, fb, f3, fc); ++} ++ ++void Assembler::vcons(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vcons, fa, fb, f3, fc); ++} ++ ++void Assembler::vcond(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vcond, fa, fb, f3, fc); ++} ++ ++void Assembler::vinsb(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsb_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vinsh(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsh_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vinsectlh(FloatRegister fa, FloatRegister fb, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsectlh, fa, fb, fc); ++} ++ ++void Assembler::vinsectlw(FloatRegister fa, FloatRegister fb, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsectlw, fa, fb, fc); ++} ++ ++void Assembler::vinsectll(FloatRegister fa, FloatRegister fb, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsectll, fa, fb, fc); ++} ++ ++void Assembler::vinsectlb(FloatRegister fa, FloatRegister fb, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vinsectlb, fa, fb, fc); ++} ++ ++void Assembler::vshfq(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vshfq_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vshfqb(FloatRegister fa, FloatRegister fb, FloatRegister fc) { ++ GenInstrFMA_SW(op_vshfqb, fa, fb, fc); ++} ++ ++void Assembler::vcpyb(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_vcpyb | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::vcpyh(FloatRegister fa, FloatRegister fc) { ++ DCHECK(fa.is_valid() && fc.is_valid()); ++ Instr instr = op_vcpyh | (fa.code() << sRaShift) | (fc.code() << sRcShift); ++ emit(instr); ++} ++ ++void Assembler::vsm3r(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFMA_SW(op_vsm3r_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vfcvtsh(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFR_SW(op_vfcvtsh_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vfcvths(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc) { ++ GenInstrFR_SW(op_vfcvths_l, fa, fb, fmalit, fc); ++} ++ ++void Assembler::vldw_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vldw_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstw_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstw_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vlds_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vlds_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vsts_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vsts_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vldd_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vldd_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstd_u(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstd_u, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstw_ul(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstw_ul, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstw_uh(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstw_uh, fa, atmdisp, Rb); ++} ++ ++void Assembler::vsts_ul(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vsts_ul, fa, atmdisp, Rb); ++} ++ ++void Assembler::vsts_uh(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vsts_uh, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstd_ul(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstd_ul, fa, atmdisp, Rb); ++} ++ ++void Assembler::vstd_uh(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_vstd_uh, fa, atmdisp, Rb); ++} ++ ++void Assembler::lbr(int palfn) { ++ DCHECK(is_int26(palfn)); ++ Instr instr = op_sys_call | (palfn & ((1 << 26) - 1)); ++ emit(instr); ++} ++ ++void Assembler::ldbu_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldbu_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldhu_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldhu_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldw_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldw_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::ldl_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_ldl_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::stb_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_stb_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::sth_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_sth_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::stw_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_stw_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::stl_a(Register Ra, int atmdisp, Register Rb) { ++ GenInstrMWithFun_SW(op_stl_a, Ra, atmdisp, Rb); ++} ++ ++void Assembler::flds_a(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_flds_a, fa, atmdisp, Rb); ++} ++ ++void Assembler::fldd_a(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_fldd_a, fa, atmdisp, Rb); ++} ++ ++void Assembler::fsts_a(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_fsts_a, fa, atmdisp, Rb); ++} ++ ++void Assembler::fstd_a(FloatRegister fa, int atmdisp, Register Rb) { ++ GenInstrSWSA_SW(op_fstd_a, fa, atmdisp, Rb); ++} ++ ++void Assembler::dpfhr(int th, int atmdisp, Register Rb) { ++ DCHECK(is_uint5(th) && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_dpfhr | ((th << sRaShift) & sRaFieldMask) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++void Assembler::dpfhw(int th, int atmdisp, Register Rb) { ++ DCHECK(is_uint5(th) && is_uint11(atmdisp) && Rb.is_valid()); ++ Instr instr = op_dpfhw | ((th << sRaShift) & sRaFieldMask) | ++ ((atmdisp << sImm11Shift) & sImm11Mask) | ++ (Rb.code() << sRbShift); ++ emit(instr); ++} ++ ++// 0x1A.00-0x1c.E SIMD instructions. ++ ++void Assembler::ldbu(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldbu, Ra, mdisp, Rb); ++} ++ ++void Assembler::ldhu(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldhu, Ra, mdisp, Rb); ++} ++ ++void Assembler::ldw(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldw, Ra, mdisp, Rb); ++} ++ ++void Assembler::ldl(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldl, Ra, mdisp, Rb); ++} ++ ++void Assembler::ldl_u(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldl_u, Ra, mdisp, Rb); ++} ++ ++void Assembler::pri_ld(Register Ra, int ev6hwdisp, Register Rb) { ++ UNREACHABLE(); ++} ++ ++void Assembler::flds(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_flds, fa, mdisp, Rb); ++} ++ ++void Assembler::fldd(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_fldd, fa, mdisp, Rb); ++} ++ ++void Assembler::stb(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_stb, Ra, mdisp, Rb); ++} ++ ++void Assembler::sth(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_sth, Ra, mdisp, Rb); ++} ++ ++void Assembler::stw(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_stw, Ra, mdisp, Rb); ++} ++ ++void Assembler::stl(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_stl, Ra, mdisp, Rb); ++} ++ ++void Assembler::stl_u(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_stl_u, Ra, mdisp, Rb); ++} ++ ++void Assembler::pri_st(Register Ra, int ev6hwdisp, Register Rb) { ++ UNREACHABLE(); ++} ++ ++void Assembler::fsts(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_fsts, fa, mdisp, Rb); ++} ++ ++void Assembler::fstd(FloatRegister fa, int mdisp, Register Rb) { ++ GenInstrFM_SW(op_fstd, fa, mdisp, Rb); ++} ++ ++void Assembler::beq(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_beq, Ra, bdisp); ++} ++ ++void Assembler::bne(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_bne, Ra, bdisp); ++} ++ ++void Assembler::blt(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_blt, Ra, bdisp); ++} ++ ++void Assembler::ble(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_ble, Ra, bdisp); ++} ++ ++void Assembler::bgt(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_bgt, Ra, bdisp); ++} ++ ++void Assembler::bge(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_bge, Ra, bdisp); ++} ++ ++void Assembler::blbc(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_blbc, Ra, bdisp); ++} ++ ++void Assembler::blbs(Register Ra, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrB_SW(op_blbs, Ra, bdisp); ++} ++ ++void Assembler::fbeq(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fbeq, fa, bdisp); ++} ++ ++void Assembler::fbne(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fbne, fa, bdisp); ++} ++ ++void Assembler::fblt(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fblt, fa, bdisp); ++} ++ ++void Assembler::fble(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fble, fa, bdisp); ++} ++ ++void Assembler::fbgt(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fbgt, fa, bdisp); ++} ++ ++void Assembler::fbge(FloatRegister fa, int bdisp) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ GenInstrFB_SW(op_fbge, fa, bdisp); ++} ++ ++void Assembler::ldi(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldi, Ra, mdisp, Rb); ++} ++ ++void Assembler::ldih(Register Ra, int mdisp, Register Rb) { ++ GenInstrM_SW(op_ldih, Ra, mdisp, Rb); ++} ++ ++// cache control instruction ++void Assembler::s_fillcs(int mdisp, Register Rb) { ldw(zero_reg, mdisp, Rb); } ++ ++void Assembler::s_fillde(int mdisp, Register Rb) { ldl(zero_reg, mdisp, Rb); } ++ ++void Assembler::fillde(int mdisp, Register Rb) { flds(f31, mdisp, Rb); } ++ ++void Assembler::fillde_e(int mdisp, Register Rb) { fldd(f31, mdisp, Rb); } ++ ++void Assembler::fillcs(int mdisp, Register Rb) { ldwe(f31, mdisp, Rb); } ++ ++void Assembler::fillcs_e(int mdisp, Register Rb) { ldde(f31, mdisp, Rb); } ++ ++void Assembler::e_fillcs(int mdisp, Register Rb) { ldse(f31, mdisp, Rb); } ++ ++void Assembler::e_fillde(int mdisp, Register Rb) { ++ vlds(f31 /*V31*/, mdisp, Rb); ++} ++ ++void Assembler::flushd(int mdisp, Register Rb) { ldbu(zero_reg, mdisp, Rb); } ++ ++void Assembler::evictdl(int mdisp, Register Rb) { ldl_u(zero_reg, mdisp, Rb); } ++ ++void Assembler::evictdg(int mdisp, Register Rb) { ldhu(zero_reg, mdisp, Rb); } ++ ++void Assembler::Ldb(Register Ra, const MemOperand& rs) { // sw add ++ ldbu(Ra, rs); ++ sextb(Ra, Ra); ++} ++ ++// Helper for base-reg + offset, when offset is larger than int16. ++void Assembler::SwLoadRegPlusOffsetToAt(const MemOperand& src) { ++ DCHECK(src.rm() != at); ++ DCHECK(is_int32(src.offset_)); ++ ++ int16_t lo_offset = static_cast(src.offset_); ++ int16_t hi_offset = (src.offset_ - (int16_t)src.offset_) >> 16; ++ if (((int32_t)hi_offset == -32768) && ((int32_t)lo_offset < 0)) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ ldih(at, 0x4000, zero_reg); ++ ldih(at, 0x4000, at); ++ if (lo_offset != 0) ldi(at, lo_offset, at); ++ } else { ++ ldih(at, hi_offset, zero_reg); ++ if (lo_offset != 0) ldi(at, lo_offset, at); ++ } ++ addl(src.rm(), at, at); // Add base register. ++} ++ ++void Assembler::ldbu(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_ldbu, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_ldbu, Ra, 0, at); ++ } ++} ++ ++void Assembler::Ldh(Register Ra, const MemOperand& rs) { // sw add ++ ldhu(Ra, rs); ++ sexth(Ra, Ra); ++} ++ ++void Assembler::ldhu(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_ldhu, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_ldhu, Ra, 0, at); ++ } ++} ++ ++void Assembler::ldw(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_ldw, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_ldw, Ra, 0, at); // Equiv to ldw(rd, MemOperand(at, 0)); ++ } ++} ++ ++void Assembler::Ldwu(Register Ra, const MemOperand& rs) { // sw add ++ ldw(Ra, rs); ++ zapnot(Ra, 0xf, Ra); ++} ++ ++void Assembler::ldl(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_ldl, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_ldl, Ra, 0, at); ++ } ++} ++ ++void Assembler::flds(FloatRegister fa, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrFM_SW(op_flds, fa, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrFM_SW(op_flds, fa, 0, at); ++ } ++} ++ ++void Assembler::fldd(FloatRegister fa, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrFM_SW(op_fldd, fa, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrFM_SW(op_fldd, fa, 0, at); ++ } ++} ++ ++void Assembler::stb(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_stb, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_stb, Ra, 0, at); ++ } ++} ++ ++void Assembler::sth(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_sth, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_sth, Ra, 0, at); ++ } ++} ++ ++void Assembler::stw(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_stw, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_stw, Ra, 0, at); ++ } ++} ++ ++void Assembler::stl(Register Ra, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrM_SW(op_stl, Ra, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrM_SW(op_stl, Ra, 0, at); ++ } ++} ++ ++void Assembler::fsts(FloatRegister fa, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrFM_SW(op_fsts, fa, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrFM_SW(op_fsts, fa, 0, at); ++ } ++} ++ ++void Assembler::fstd(FloatRegister fa, const MemOperand& rs) { ++ if (is_int16(rs.offset_)) { ++ GenInstrFM_SW(op_fstd, fa, rs.offset_, rs.rm()); ++ } else { // Offset > 16 bits, use multiple instructions to load. ++ SwLoadRegPlusOffsetToAt(rs); ++ GenInstrFM_SW(op_fstd, fa, 0, at); ++ } ++} ++ ++int Assembler::RelocateInternalReference(RelocInfo::Mode rmode, Address pc, ++ intptr_t pc_delta) { ++ if (RelocInfo::IsInternalReference(rmode)) { ++ int64_t* p = reinterpret_cast(pc); ++ if (*p == kEndOfJumpChain) { ++ return 0; // Number of instructions patched. ++ } ++ *p += pc_delta; ++ return 2; // Number of instructions patched. ++ } ++ return 0; ++} ++ ++void Assembler::GrowBuffer() { ++ // Compute new buffer size. ++ int old_size = buffer_->size(); ++ int new_size = std::min(2 * old_size, old_size + 1 * MB); ++ ++ // Some internal data structures overflow for very large buffers, ++ // they must ensure that kMaximalBufferSize is not too large. ++ if (new_size > kMaximalBufferSize) { ++ V8::FatalProcessOutOfMemory(nullptr, "Assembler::GrowBuffer"); ++ } ++ ++ // Set up new buffer. ++ std::unique_ptr new_buffer = buffer_->Grow(new_size); ++ DCHECK_EQ(new_size, new_buffer->size()); ++ byte* new_start = new_buffer->start(); ++ ++ // Copy the data. ++ intptr_t pc_delta = new_start - buffer_start_; ++ intptr_t rc_delta = (new_start + new_size) - (buffer_start_ + old_size); ++ size_t reloc_size = (buffer_start_ + old_size) - reloc_info_writer.pos(); ++ MemMove(new_start, buffer_start_, pc_offset()); ++ MemMove(reloc_info_writer.pos() + rc_delta, reloc_info_writer.pos(), ++ reloc_size); ++ ++ // Switch buffers. ++ buffer_ = std::move(new_buffer); ++ buffer_start_ = new_start; ++ pc_ += pc_delta; ++ pc_for_safepoint_ += pc_delta; ++ reloc_info_writer.Reposition(reloc_info_writer.pos() + rc_delta, ++ reloc_info_writer.last_pc() + pc_delta); ++ ++ // Relocate runtime entries. ++ base::Vector instructions{buffer_start_, ++ static_cast(pc_offset())}; ++ base::Vector reloc_info{reloc_info_writer.pos(), reloc_size}; ++ for (RelocIterator it(instructions, reloc_info, 0); !it.done(); it.next()) { ++ RelocInfo::Mode rmode = it.rinfo()->rmode(); ++ if (rmode == RelocInfo::INTERNAL_REFERENCE) { ++ RelocateInternalReference(rmode, it.rinfo()->pc(), pc_delta); ++ } ++ } ++ ++ DCHECK(!overflow()); ++} ++ ++void Assembler::db(uint8_t data) { ++ CheckForEmitInForbiddenSlot(); ++ *reinterpret_cast(pc_) = data; ++ pc_ += sizeof(uint8_t); ++} ++ ++void Assembler::dd(uint32_t data, RelocInfo::Mode rmode) { ++ CheckForEmitInForbiddenSlot(); ++ if (!RelocInfo::IsNoInfo(rmode)) { ++ DCHECK(RelocInfo::IsLiteralConstant(rmode)); ++ RecordRelocInfo(rmode); ++ } ++ *reinterpret_cast(pc_) = data; ++ pc_ += sizeof(uint32_t); ++} ++ ++void Assembler::dq(uint64_t data, RelocInfo::Mode rmode) { ++ CheckForEmitInForbiddenSlot(); ++ if (!RelocInfo::IsNoInfo(rmode)) { ++ DCHECK(RelocInfo::IsLiteralConstant(rmode)); ++ RecordRelocInfo(rmode); ++ } ++ *reinterpret_cast(pc_) = data; ++ pc_ += sizeof(uint64_t); ++} ++ ++void Assembler::dd(Label* label) { ++ uint64_t data; ++ CheckForEmitInForbiddenSlot(); ++ if (label->is_bound()) { ++ data = reinterpret_cast(buffer_start_ + label->pos()); ++ } else { ++ data = jump_address(label); ++ unbound_labels_count_++; ++ internal_reference_positions_.insert(label->pos()); ++ } ++ RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE); ++ EmitHelper(data); ++} ++ ++void Assembler::RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data) { ++ if (!ShouldRecordRelocInfo(rmode)) return; ++ // We do not try to reuse pool constants. ++ RelocInfo rinfo(reinterpret_cast
(pc_), rmode, data, Code(), ++ InstructionStream()); ++ DCHECK_GE(buffer_space(), kMaxRelocSize); // Too late to grow buffer here. ++ reloc_info_writer.Write(&rinfo); ++} ++ ++void Assembler::BlockTrampolinePoolFor(int instructions) { ++ CheckTrampolinePoolQuick(instructions); ++ BlockTrampolinePoolBefore(pc_offset() + instructions * kInstrSize); ++} ++ ++void Assembler::CheckTrampolinePool() { ++ // Some small sequences of instructions must not be broken up by the ++ // insertion of a trampoline pool; such sequences are protected by setting ++ // either trampoline_pool_blocked_nesting_ or no_trampoline_pool_before_, ++ // which are both checked here. Also, recursive calls to CheckTrampolinePool ++ // are blocked by trampoline_pool_blocked_nesting_. ++ if ((trampoline_pool_blocked_nesting_ > 0) || ++ (pc_offset() < no_trampoline_pool_before_)) { ++ // Emission is currently blocked; make sure we try again as soon as ++ // possible. ++ if (trampoline_pool_blocked_nesting_ > 0) { ++ next_buffer_check_ = pc_offset() + kInstrSize; ++ } else { ++ next_buffer_check_ = no_trampoline_pool_before_; ++ } ++ return; ++ } ++ ++ DCHECK(!trampoline_emitted_); ++ DCHECK_GE(unbound_labels_count_, 0); ++ if (unbound_labels_count_ > 0) { ++ // First we emit jump (2 instructions), then we emit trampoline pool. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Label after_pool; ++ br(&after_pool); ++ nop(); ++ ++ int pool_start = pc_offset(); ++ for (int i = 0; i < unbound_labels_count_; i++) { ++ { ++ BlockGrowBufferScope block_buf_growth(this); ++ // Buffer growth (and relocation) must be blocked for internal ++ // references until associated instructions are emitted and available ++ // to be patched. ++ RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); ++ br(&after_pool); ++ } ++ nop(); ++ } ++ // If unbound_labels_count_ is big enough, label after_pool will ++ // need a trampoline too, so we must create the trampoline before ++ // the bind operation to make sure function 'bind' can get this ++ // information. ++ trampoline_ = Trampoline(pool_start, unbound_labels_count_); ++ bind(&after_pool); ++ ++ trampoline_emitted_ = true; ++ // As we are only going to emit trampoline once, we need to prevent any ++ // further emission. ++ next_buffer_check_ = kMaxInt; ++ } ++ } else { ++ // Number of branches to unbound label at this point is zero, so we can ++ // move next buffer check to maximum. ++ next_buffer_check_ = ++ pc_offset() + kMaxBranchOffset - kTrampolineSlotsSize * 16; ++ } ++ return; ++} ++ ++Address Assembler::target_address_at(Address pc) { ++ Instr instr0 = instr_at(pc); ++#ifdef DEBUG ++ Instr instr1 = instr_at(pc + kInstrSize); ++#endif ++ Instr instr2 = instr_at(pc + 2 * kInstrSize); ++ Instr instr3 = instr_at(pc + 3 * kInstrSize); ++ ++ DCHECK(GetSwOpcodeField(instr0) == op_ldi); ++ DCHECK(GetSwOpcodeAndFunctionField(instr1) == op_slll_l); ++ DCHECK(GetSwOpcodeField(instr2) == op_ldih); ++ DCHECK(GetSwOpcodeField(instr3) == op_ldi); ++ ++ // Interpret 4 instructions generated by set ++ uintptr_t addr; ++ addr = (instr0 << 16) >> 16; ++ addr = addr << 32; ++ addr += (instr2 << 16) + ((instr3 << 16) >> 16); ++ ++ return static_cast
(addr); ++ ++ // We should never get here, force a bad address if we do. ++ UNREACHABLE(); ++} ++ ++// On Sw64, a target address is stored in a 4-instruction sequence: ++// 0: ldi(rd, imm16); ++// 1: slll(rd, 32, rd); ++// 2: ldih(rd, imm16(rd)); ++// 3: ldi(rd, imm16(rd)); ++// ++// Patching the address must replace all the ldi & ldih instructions, ++// and flush the i-cache. ++// ++// There is an optimization below, which emits a nop when the address ++// fits in just 16 bits. This is unlikely to help, and should be benchmarked, ++// and possibly removed. ++void Assembler::set_target_value_at(Address pc, uint64_t target, ++ ICacheFlushMode icache_flush_mode) { ++ // There is an optimization where only 4 instructions are used to load address ++ // in code on SW64 because only 48-bits of address is effectively used. ++ // It relies on fact the upper [63:48] bits are not used for virtual address ++ // translation and they have to be set according to value of bit 47 in order ++ // get canonical address. ++ uint32_t* p = reinterpret_cast(pc); ++ uint64_t itarget = reinterpret_cast(target); ++ ++#ifdef DEBUG ++ // Check we have the result from a li macro-instruction, using instr pair. ++ Instr instr0 = instr_at(pc); ++ Instr instr1 = instr_at(pc + kInstrSize); ++ Instr instr2 = instr_at(pc + 2 * kInstrSize); ++ Instr instr3 = instr_at(pc + 3 * kInstrSize); ++ CHECK(GetSwOpcodeField(instr0) == op_ldi); ++ CHECK(GetSwOpcodeAndFunctionField(instr1) == op_slll_l); ++ CHECK(GetSwOpcodeField(instr2) == op_ldih); ++ CHECK(GetSwOpcodeField(instr3) == op_ldi); ++#endif ++ ++ // Must use 4 instructions to insure patchable code. ++ int32_t lsb32 = (int32_t)(itarget); ++ int32_t msb32 = (int32_t)((itarget - lsb32) >> 32); ++ ++ // Maybe value to "|" is negative, so need set it to 16-bits. ++ *(p + 0) = (*(p + 0) & 0xffff0000) | ((int16_t)(msb32 & 0xffff) & 0xffff); ++ *(p + 2) = ++ (*(p + 2) & 0xffff0000) | (((lsb32 - (int16_t)lsb32) >> 16) & 0xffff); ++ *(p + 3) = (*(p + 3) & 0xffff0000) | ((int16_t)(lsb32 & 0xffff) & 0xffff); ++ ++ if (icache_flush_mode != SKIP_ICACHE_FLUSH) { ++ FlushInstructionCache(pc, 4 * kInstrSize); ++ } ++} ++ ++UseScratchRegisterScope::UseScratchRegisterScope(Assembler* assembler) ++ : available_(assembler->GetScratchRegisterList()), ++ old_available_(*available_) {} ++ ++UseScratchRegisterScope::~UseScratchRegisterScope() { ++ *available_ = old_available_; ++} ++ ++Register UseScratchRegisterScope::Acquire() { ++ DCHECK_NOT_NULL(available_); ++ return available_->PopFirst(); ++} ++ ++bool UseScratchRegisterScope::hasAvailable() const { ++ return !available_->is_empty(); ++} ++ ++// SKTODO ++#if 0 ++LoadStoreLaneParams::LoadStoreLaneParams(MachineRepresentation rep, ++ uint8_t laneidx) { ++ switch (rep) { ++ case MachineRepresentation::kWord8: ++ *this = LoadStoreLaneParams(laneidx, SWSA_B, 16); ++ break; ++ case MachineRepresentation::kWord16: ++ *this = LoadStoreLaneParams(laneidx, SWSA_H, 8); ++ break; ++ case MachineRepresentation::kWord32: ++ *this = LoadStoreLaneParams(laneidx, SWSA_W, 4); ++ break; ++ case MachineRepresentation::kWord64: ++ *this = LoadStoreLaneParams(laneidx, SWSA_D, 2); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++#endif ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/codegen/sw64/assembler-sw64.h b/deps/v8/src/codegen/sw64/assembler-sw64.h +new file mode 100644 +index 00000000..3c794904 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/assembler-sw64.h +@@ -0,0 +1,1517 @@ ++// Copyright (c) 1994-2006 Sun Microsystems Inc. ++// All Rights Reserved. ++// ++// Redistribution and use in source and binary forms, with or without ++// modification, are permitted provided that the following conditions are ++// met: ++// ++// - Redistributions of source code must retain the above copyright notice, ++// this list of conditions and the following disclaimer. ++// ++// - Redistribution in binary form must reproduce the above copyright ++// notice, this list of conditions and the following disclaimer in the ++// documentation and/or other materials provided with the distribution. ++// ++// - Neither the name of Sun Microsystems or the names of contributors may ++// be used to endorse or promote products derived from this software without ++// specific prior written permission. ++// ++// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER OR ++// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR ++// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF ++// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING ++// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++// The original source code covered by the above license above has been ++// modified significantly by Google Inc. ++// Copyright 2012 the V8 project authors. All rights reserved. ++ ++#ifndef V8_CODEGEN_SW64_ASSEMBLER_SW64_H_ ++#define V8_CODEGEN_SW64_ASSEMBLER_SW64_H_ ++ ++#include ++ ++#include ++#include ++ ++#include "src/codegen/assembler.h" ++#include "src/codegen/external-reference.h" ++#include "src/codegen/label.h" ++#include "src/codegen/machine-type.h" ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/codegen/sw64/register-sw64.h" ++#include "src/objects/contexts.h" ++#include "src/objects/smi.h" ++ ++namespace v8 { ++namespace internal { ++ ++class SafepointTableBuilder; ++ ++// ----------------------------------------------------------------------------- ++// Machine instruction Operands. ++constexpr int kSmiShift = kSmiTagSize + kSmiShiftSize; ++constexpr uint64_t kSmiShiftMask = (1UL << kSmiShift) - 1; ++// Class Operand represents a shifter operand in data processing instructions. ++class Operand { ++ public: ++ // Immediate. ++ V8_INLINE explicit Operand(int64_t immediate, ++ RelocInfo::Mode rmode = RelocInfo::NO_INFO) ++ : rm_(no_reg), rmode_(rmode) { ++ value_.immediate = immediate; ++ } ++ V8_INLINE static Operand Zero() { return Operand(static_cast(0)); } ++ V8_INLINE explicit Operand(const ExternalReference& f) ++ : rm_(no_reg), rmode_(RelocInfo::EXTERNAL_REFERENCE) { ++ value_.immediate = static_cast(f.address()); ++ } ++ explicit Operand(Handle handle); ++ V8_INLINE explicit Operand(Smi value) ++ : rm_(no_reg), rmode_(RelocInfo::NO_INFO) { ++ value_.immediate = static_cast(value.ptr()); ++ } ++ ++ static Operand EmbeddedNumber(double number); // Smi or HeapNumber. ++ ++ // Register. ++ V8_INLINE explicit Operand(Register rm) : rm_(rm) {} ++ ++ // Return true if this is a register operand. ++ V8_INLINE bool is_reg() const; ++ ++ inline int64_t immediate() const; ++ ++ bool IsImmediate() const { return !rm_.is_valid(); } ++ ++ HeapNumberRequest heap_number_request() const { ++ DCHECK(IsHeapNumberRequest()); ++ return value_.heap_number_request; ++ } ++ ++ bool IsHeapNumberRequest() const { ++ DCHECK_IMPLIES(is_heap_number_request_, IsImmediate()); ++ DCHECK_IMPLIES(is_heap_number_request_, ++ rmode_ == RelocInfo::FULL_EMBEDDED_OBJECT || ++ rmode_ == RelocInfo::CODE_TARGET); ++ return is_heap_number_request_; ++ } ++ ++ Register rm() const { return rm_; } ++ ++ RelocInfo::Mode rmode() const { return rmode_; } ++ ++ private: ++ Register rm_; ++ union Value { ++ Value() {} ++ HeapNumberRequest heap_number_request; // if is_heap_number_request_ ++ int64_t immediate; // otherwise ++ } value_; // valid if rm_ == no_reg ++ bool is_heap_number_request_ = false; ++ RelocInfo::Mode rmode_; ++ ++ friend class Assembler; ++ friend class MacroAssembler; ++}; ++ ++// On SW64 we have only one addressing mode with base_reg + offset. ++// Class MemOperand represents a memory operand in load and store instructions. ++class V8_EXPORT_PRIVATE MemOperand : public Operand { ++ public: ++ // Immediate value attached to offset. ++ enum OffsetAddend { offset_minus_one = -1, offset_zero = 0 }; ++ ++ explicit MemOperand(Register rn, int32_t offset = 0); ++ explicit MemOperand(Register rn, int32_t unit, int32_t multiplier, ++ OffsetAddend offset_addend = offset_zero); ++ int32_t offset() const { return offset_; } ++ ++ bool OffsetIsInt16Encodable() const { return is_int16(offset_); } ++ ++ private: ++ int32_t offset_; ++ ++ friend class Assembler; ++}; ++ ++class V8_EXPORT_PRIVATE Assembler : public AssemblerBase { ++ public: ++ // Create an assembler. Instructions and relocation information are emitted ++ // into a buffer, with the instructions starting from the beginning and the ++ // relocation information starting from the end of the buffer. See CodeDesc ++ // for a detailed comment on the layout (globals.h). ++ // ++ // If the provided buffer is nullptr, the assembler allocates and grows its ++ // own buffer. Otherwise it takes ownership of the provided buffer. ++ explicit Assembler(const AssemblerOptions&, ++ std::unique_ptr = {}); ++ ++ virtual ~Assembler() {} ++ ++ // GetCode emits any pending (non-emitted) code and fills the descriptor desc. ++ static constexpr int kNoHandlerTable = 0; ++ static constexpr SafepointTableBuilder* kNoSafepointTable = nullptr; ++ ++ // Convenience wrapper for code without safepoint or handler tables. ++ void GetCode(Isolate* isolate, CodeDesc* desc); ++ void GetCode(Isolate* isolate, CodeDesc* desc, ++ SafepointTableBuilder* safepoint_table_builder, ++ int handler_table_offset); ++ ++ // Unused on this architecture. ++ void MaybeEmitOutOfLineConstantPool() {} ++ ++ // Sw64 uses BlockTrampolinePool to prevent generating trampoline inside a ++ // continuous instruction block. For Call instruction, it prevents generating ++ // trampoline between jalr and delay slot instruction. In the destructor of ++ // BlockTrampolinePool, it must check if it needs to generate trampoline ++ // immediately, if it does not do this, the branch range will go beyond the ++ // max branch offset, that means the pc_offset after call CheckTrampolinePool ++ // may have changed. So we use pc_for_safepoint_ here for safepoint record. ++ int pc_offset_for_safepoint() { ++ return static_cast(pc_for_safepoint_ - buffer_start_); ++ } ++ ++ // Label operations & relative jumps (PPUM Appendix D). ++ // ++ // Takes a branch opcode (cc) and a label (L) and generates ++ // either a backward branch or a forward branch and links it ++ // to the label fixup chain. Usage: ++ // ++ // Label L; // unbound label ++ // j(cc, &L); // forward branch to unbound label ++ // bind(&L); // bind label to the current pc ++ // j(cc, &L); // backward branch to bound label ++ // bind(&L); // illegal: a label may be bound only once ++ // ++ // Note: The same Label can be used for forward and backward branches ++ // but it may be bound only once. ++ void bind(Label* L); // Binds an unbound label L to current code position. ++ // instructions call and jmp have imm16 zone, but it isn't a limit, just a ++ // assisment of branch prediction ++ enum OffsetSize : int { kOffset26 = 26, kOffset21 = 21 }; ++ ++ // Determines if Label is bound and near enough so that branch instruction ++ // can be used to reach it, instead of jump instruction. ++ bool is_near(Label* L); ++ bool is_near(Label* L, OffsetSize bits); ++ ++ int BranchOffset(Instr instr); ++ ++ // Returns the branch offset to the given label from the current code ++ // position. Links the label to the current position if it is still unbound. ++ // Manages the jump elimination optimization if the second parameter is true. ++ int32_t branch_offset_helper(Label* L, OffsetSize bits); ++ inline int32_t branch_offset(Label* L) { ++ return branch_offset_helper(L, OffsetSize::kOffset21); ++ } ++ inline int32_t branch_offset21(Label* L) { ++ return branch_offset_helper(L, OffsetSize::kOffset21); ++ } ++ inline int32_t branch_offset26(Label* L) { ++ return branch_offset_helper(L, OffsetSize::kOffset26); ++ } ++ inline int32_t shifted_branch_offset(Label* L) { ++ return branch_offset(L) >> 2; ++ } ++ inline int32_t shifted_branch_offset21(Label* L) { ++ return branch_offset21(L) >> 2; ++ } ++ inline int32_t shifted_branch_offset26(Label* L) { ++ return branch_offset26(L) >> 2; ++ } ++ uint64_t jump_address(Label* L); ++ uint64_t jump_offset(Label* L); ++ uint64_t branch_long_offset(Label* L); ++ ++ // Puts a labels target address at the given position. ++ // The high 8 bits are set to zero. ++ void label_at_put(Label* L, int at_offset); ++ ++ // Read/Modify the code target address in the branch/call instruction at pc. ++ // The isolate argument is unused (and may be nullptr) when skipping flushing. ++ static Address target_address_at(Address pc); ++ V8_INLINE static void set_target_address_at( ++ Address pc, Address target, ++ ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) { ++ set_target_value_at(pc, target, icache_flush_mode); ++ } ++ // On SW64 there is no Constant Pool so we skip that parameter. ++ V8_INLINE static Address target_address_at(Address pc, ++ Address constant_pool) { ++ return target_address_at(pc); ++ } ++ V8_INLINE static void set_target_address_at( ++ Address pc, Address constant_pool, Address target, ++ ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED) { ++ set_target_address_at(pc, target, icache_flush_mode); ++ } ++ ++ static void set_target_value_at( ++ Address pc, uint64_t target, ++ ICacheFlushMode icache_flush_mode = FLUSH_ICACHE_IF_NEEDED); ++ ++ static void JumpLabelToJumpRegister(Address pc); ++ ++ // This sets the branch destination (which gets loaded at the call address). ++ // This is for calls and branches within generated code. The serializer ++ // has already deserialized the ldih/ldi instructions etc. ++ inline static void deserialization_set_special_target_at( ++ Address instruction_payload, Code code, Address target); ++ ++ // Get the size of the special target encoded at 'instruction_payload'. ++ inline static int deserialization_special_target_size( ++ Address instruction_payload); ++ ++ // This sets the internal reference at the pc. ++ inline static void deserialization_set_target_internal_reference_at( ++ Address pc, Address target, ++ RelocInfo::Mode mode = RelocInfo::INTERNAL_REFERENCE); ++ ++ static constexpr int kSpecialTargetSize = 0; ++ ++ // Number of consecutive instructions used to store 32bit/64bit constant. ++ // This constant was used in RelocInfo::target_address_address() function ++ // to tell serializer address of the instruction that follows ++ // ldih/ldi instruction pair. ++ static constexpr int kInstructionsFor64BitConstant = 4; ++ ++ // Difference between address of current opcode and value read from pc ++ // register. ++ static constexpr int kPcLoadDelta = 4; ++ ++ // Max offset for instructions with 21-bit offset field ++ static constexpr int kMaxBranchOffset = (1 << (23 - 1)) - 1; ++ ++ // Max offset for long branch instructions with 26-bit offset field ++ static constexpr int kMaxLongBranchOffset = (1 << (28 - 1)) - 1; ++ ++ static constexpr int kTrampolineSlotsSize = 2 * kInstrSize; ++ ++ RegList* GetScratchRegisterList() { return &scratch_register_list_; } ++ ++ // --------------------------------------------------------------------------- ++ // InstructionStream generation. ++ ++ // Insert the smallest number of nop instructions ++ // possible to align the pc offset to a multiple ++ // of m. m must be a power of 2 (>= 4). ++ void Align(int m); ++ // Insert the smallest number of zero bytes possible to align the pc offset ++ // to a mulitple of m. m must be a power of 2 (>= 2). ++ void DataAlign(int m); ++ // Aligns code to something that's optimal for a jump target for the platform. ++ void CodeTargetAlign(); ++ void LoopHeaderAlign() { CodeTargetAlign(); } ++ ++ // Different nop operations are used by the code generator to detect certain ++ // states of the generated code. ++ enum NopMarkerTypes { ++ NON_MARKING_NOP = 0, ++ DEBUG_BREAK_NOP, ++ // IC markers. ++ PROPERTY_ACCESS_INLINED, ++ PROPERTY_ACCESS_INLINED_CONTEXT, ++ PROPERTY_ACCESS_INLINED_CONTEXT_DONT_DELETE, ++ // Helper values. ++ LAST_CODE_MARKER, ++ FIRST_IC_MARKER = PROPERTY_ACCESS_INLINED, ++ }; ++ ++ // Type == 0 is the default non-marking nop. For sw64 this is a ++ // ldi(zero_reg, 0, zero_reg). ++ void nop(unsigned int type = 0) { ++ DCHECK_EQ(type, 0); ++ ldi(zero_reg, 0, zero_reg); ++ } ++ ++ // --------Branch-and-jump-instructions---------- ++ // We don't use likely variant of instructions. ++ // HYQ TODO add lbr ++ void br(int32_t offset); ++ inline void br(Label* L) { br(shifted_branch_offset21(L)); } ++ void bsr(int32_t offset); ++ inline void bsr(Label* L) { bsr(shifted_branch_offset21(L)); } ++ void br(Register Ra, int bdisp); ++ void bsr(Register Ra, int bdisp); ++ // HYQ TODO add Label arg ++ void beq(Register Ra, int bdisp); ++ void bne(Register Ra, int bdisp); ++ void blt(Register Ra, int bdisp); ++ void ble(Register Ra, int bdisp); ++ void bgt(Register Ra, int bdisp); ++ void bge(Register Ra, int bdisp); ++ void blbc(Register Ra, int bdisp); ++ void blbs(Register Ra, int bdisp); ++ void fbeq(FloatRegister fa, int bdisp); ++ void fbne(FloatRegister fa, int bdisp); ++ void fblt(FloatRegister fa, int bdisp); ++ void fble(FloatRegister fa, int bdisp); ++ void fbgt(FloatRegister fa, int bdisp); ++ void fbge(FloatRegister fa, int bdisp); ++ ++ void call(Register Ra, Register Rb, int jmphint); ++ void ret(Register Ra, Register Rb, int rethint); ++ void jmp(Register Ra, Register Rb, int jmphint); ++ ++ void sys_call_b(int palfn); ++ void sys_call(int palfn); ++ ++ // -------Data-processing-instructions--------- ++ ++ // Arithmetic. ++ void addw(Register Ra, Register Rb, Register Rc); ++ void addw(Register Ra, int lit, Register Rc); ++ void subw(Register Ra, Register Rb, Register Rc); ++ void subw(Register Ra, int lit, Register Rc); ++ void s4addw(Register Ra, Register Rb, Register Rc); ++ void s4addw(Register Ra, int lit, Register Rc); ++ void s4subw(Register Ra, Register Rb, Register Rc); ++ void s4subw(Register Ra, int lit, Register Rc); ++ void s8addw(Register Ra, Register Rb, Register Rc); ++ void s8addw(Register Ra, int lit, Register Rc); ++ void s8subw(Register Ra, Register Rb, Register Rc); ++ void s8subw(Register Ra, int lit, Register Rc); ++ void addl(Register Ra, Register Rb, Register Rc); ++ void addl(Register Ra, int lit, Register Rc); ++ void subl(Register Ra, Register Rb, Register Rc); ++ void subl(Register Ra, int lit, Register Rc); ++ void s4addl(Register Ra, Register Rb, Register Rc); ++ void s4addl(Register Ra, int lit, Register Rc); ++ void s4subl(Register Ra, Register Rb, Register Rc); ++ void s4subl(Register Ra, int lit, Register Rc); ++ void s8addl(Register Ra, Register Rb, Register Rc); ++ void s8addl(Register Ra, int lit, Register Rc); ++ void s8subl(Register Ra, Register Rb, Register Rc); ++ void s8subl(Register Ra, int lit, Register Rc); ++ void mulw(Register Ra, Register Rb, Register Rc); ++ void mulw(Register Ra, int lit, Register Rc); ++ void divw(Register Ra, Register Rb, Register Rc); // SW8A ++ void udivw(Register Ra, Register Rb, Register Rc); // SW8A ++ void remw(Register Ra, Register Rb, Register Rc); // SW8A ++ void uremw(Register Ra, Register Rb, Register Rc); // SW8A ++ void mull(Register Ra, Register Rb, Register Rc); ++ void mull(Register Ra, int lit, Register Rc); ++ void umulh(Register Ra, Register Rb, Register Rc); ++ void umulh(Register Ra, int lit, Register Rc); ++ void divl(Register Ra, Register Rb, Register Rc); // SW8A ++ void udivl(Register Ra, Register Rb, Register Rc); // SW8A ++ void reml(Register Ra, Register Rb, Register Rc); // SW8A ++ void ureml(Register Ra, Register Rb, Register Rc); // SW8A ++ void addpi(int apint, Register Rc); // SW8A ++ void addpis(int apint, Register Rc); // SW8A ++ ++ // Logical. ++ void and_(Register Ra, Register Rb, Register Rc); ++ void and_(Register Ra, int lit, Register Rc); ++ void bis(Register Ra, Register Rb, Register Rc); ++ void bis(Register Ra, int lit, Register Rc); ++ void or_(Register Ra, Register Rb, Register Rc); // alias bis ++ void or_(Register Ra, int lit, Register Rc); // alias bis ++ void bic(Register Ra, Register Rb, Register Rc); ++ void bic(Register Ra, int lit, Register Rc); ++ void andnot(Register Ra, Register Rb, Register Rc); // alias bic ++ void andnot(Register Ra, int lit, Register Rc); // alias bic ++ void ornot(Register Ra, Register Rb, Register Rc); ++ void ornot(Register Ra, int lit, Register Rc); ++ void xor_(Register Ra, Register Rb, Register Rc); ++ void xor_(Register Ra, int lit, Register Rc); ++ void eqv(Register Ra, Register Rb, Register Rc); ++ void eqv(Register Ra, int lit, Register Rc); ++ ++ // Shifts. ++ void slll(Register Ra, Register Rb, Register Rc); ++ void slll(Register Ra, int lit, Register Rc); ++ void srll(Register Ra, Register Rb, Register Rc); ++ void srll(Register Ra, int lit, Register Rc); ++ void sral(Register Ra, Register Rb, Register Rc); ++ void sral(Register Ra, int lit, Register Rc); ++ void roll(Register Ra, Register Rb, Register Rc); // SW8A ++ void roll(Register Ra, int lit, Register Rc); // SW8A ++ void sllw(Register Ra, Register Rb, Register Rc); // SW8A ++ void sllw(Register Ra, int lit, Register Rc); // SW8A ++ void srlw(Register Ra, Register Rb, Register Rc); // SW8A ++ void srlw(Register Ra, int lit, Register Rc); // SW8A ++ void sraw(Register Ra, Register Rb, Register Rc); // SW8A ++ void sraw(Register Ra, int lit, Register Rc); // SW8A ++ void rolw(Register Ra, Register Rb, Register Rc); // SW8A ++ void rolw(Register Ra, int lit, Register Rc); // SW8A ++ ++ // 0x10.50-0x10.57 EXT[0-7]B ++ void extlb(Register Ra, Register Rb, Register Rc); ++ void extlb(Register Ra, int lit, Register Rc); ++ void extlh(Register Ra, Register Rb, Register Rc); ++ void extlh(Register Ra, int lit, Register Rc); ++ void extlw(Register Ra, Register Rb, Register Rc); ++ void extlw(Register Ra, int lit, Register Rc); ++ void extll(Register Ra, Register Rb, Register Rc); ++ void extll(Register Ra, int lit, Register Rc); ++ void exthb(Register Ra, Register Rb, Register Rc); ++ void exthb(Register Ra, int lit, Register Rc); ++ void exthh(Register Ra, Register Rb, Register Rc); ++ void exthh(Register Ra, int lit, Register Rc); ++ void exthw(Register Ra, Register Rb, Register Rc); ++ void exthw(Register Ra, int lit, Register Rc); ++ void exthl(Register Ra, Register Rb, Register Rc); ++ void exthl(Register Ra, int lit, Register Rc); ++ ++ void ctpop(Register Rb, Register Rc); ++ void ctlz(Register Rb, Register Rc); ++ void cttz(Register Rb, Register Rc); ++ void revbh(Register Rb, Register Rc); // SW8A ++ void revbw(Register Rb, Register Rc); // SW8A ++ void revbl(Register Rb, Register Rc); // SW8A ++ void casw(Register Ra, Register Rb, Register Rc); // SW8A ++ void casl(Register Ra, Register Rb, Register Rc); // SW8A ++ ++ // 0x10.60-0x10.67 MASK[0-7]B ++ void masklb(Register Ra, Register Rb, Register Rc); ++ void masklb(Register Ra, int lit, Register Rc); ++ void masklh(Register Ra, Register Rb, Register Rc); ++ void masklh(Register Ra, int lit, Register Rc); ++ void masklw(Register Ra, Register Rb, Register Rc); ++ void masklw(Register Ra, int lit, Register Rc); ++ void maskll(Register Ra, Register Rb, Register Rc); ++ void maskll(Register Ra, int lit, Register Rc); ++ void maskhb(Register Ra, Register Rb, Register Rc); ++ void maskhb(Register Ra, int lit, Register Rc); ++ void maskhh(Register Ra, Register Rb, Register Rc); ++ void maskhh(Register Ra, int lit, Register Rc); ++ void maskhw(Register Ra, Register Rb, Register Rc); ++ void maskhw(Register Ra, int lit, Register Rc); ++ void maskhl(Register Ra, Register Rb, Register Rc); ++ void maskhl(Register Ra, int lit, Register Rc); ++ ++ void zap(Register Ra, Register Rb, Register Rc); ++ void zap(Register Ra, int lit, Register Rc); ++ void zapnot(Register Ra, Register Rb, Register Rc); ++ void zapnot(Register Ra, int lit, Register Rc); ++ void sextb(Register Rb, Register Rc); ++ void sextb(int lit, Register Rc); ++ void sexth(Register Rb, Register Rc); ++ void sexth(int lit, Register Rc); ++ ++ void fmovd(FPURegister fs, FPURegister fd); ++ void fmovs(FPURegister fs, FPURegister fd); ++ ++ // Conversion. ++ void fcvtsw(FPURegister fs, FPURegister fd); ++ void fcvtdw(FPURegister fs, FPURegister fd); ++ void ftruncsw(FPURegister fs, FPURegister fd); ++ void ftruncdw(FPURegister fs, FPURegister fd); ++ void froundsw(FPURegister fs, FPURegister fd); ++ void frounddw(FPURegister fs, FPURegister fd); ++ void ffloorsw(FPURegister fs, FPURegister fd); ++ void ffloordw(FPURegister fs, FPURegister fd); ++ void fceilsw(FPURegister fs, FPURegister fd); ++ void fceildw(FPURegister fs, FPURegister fd); ++ ++ void fcvtsl(FPURegister fs, FPURegister fd); ++ void ftruncsl(FPURegister fs, FPURegister fd); ++ void ftruncdl(FPURegister fs, FPURegister fd); ++ void froundsl(FPURegister fs, FPURegister fd); ++ void frounddl(FPURegister fs, FPURegister fd); ++ void ffloorsl(FPURegister fs, FPURegister fd); ++ void ffloordl(FPURegister fs, FPURegister fd); ++ void fceilsl(FPURegister fs, FPURegister fd); ++ void fceildl(FPURegister fs, FPURegister fd); ++ ++ void fcvtws(FPURegister fs, FPURegister fd); ++ void fcvtls_(FPURegister fs, FPURegister fd); ++ void fcvtds_(FPURegister fs, FPURegister fd); ++ ++ void fcvtwd(FPURegister fs, FPURegister fd); ++ void fcvtld_(FPURegister fs, FPURegister fd); ++ void fcvtsd_(FPURegister fs, FPURegister fd); ++ ++ void sld_b(SWSARegister wd, SWSARegister ws, Register rt); ++ void sld_h(SWSARegister wd, SWSARegister ws, Register rt); ++ void sld_w(SWSARegister wd, SWSARegister ws, Register rt); ++ void sld_d(SWSARegister wd, SWSARegister ws, Register rt); ++ void splat_b(SWSARegister wd, SWSARegister ws, Register rt); ++ void splat_h(SWSARegister wd, SWSARegister ws, Register rt); ++ void splat_w(SWSARegister wd, SWSARegister ws, Register rt); ++ void splat_d(SWSARegister wd, SWSARegister ws, Register rt); ++ ++ void memb(void); ++ void imemb(void); ++ void wmemb(void); // SW8A ++ // void rtc ( Register Ra ); ++ void rtc(Register Ra, Register Rb); ++ void rcid(Register Ra); ++ void halt(void); ++ ++ void rd_f(Register Ra); // SW2F ++ void wr_f(Register Ra); // SW2F ++ ++ void rtid(Register Ra); ++ void csrrs(Register Ra, int rpiindex); // SW8A ++ void csrrc(Register Ra, int rpiindex); // SW8A ++ void csrr(Register Ra, int rpiindex); ++ void csrw(Register Ra, int rpiindex); ++ // void pri_rcsr ( Register Ra, int rpiindex ); ++ // void pri_wcsr ( Register Ra, int rpiindex ); ++ void pri_ret(Register Ra); ++ // void pri_ret_b ( Register Ra ); ++ ++ void lldw(Register Ra, int atmdisp, Register Rb); ++ void lldl(Register Ra, int atmdisp, Register Rb); ++ void ldw_inc(Register Ra, int atmdisp, Register Rb); // SW2F ++ void ldl_inc(Register Ra, int atmdisp, Register Rb); // SW2F ++ void ldw_dec(Register Ra, int atmdisp, Register Rb); // SW2F ++ void ldl_dec(Register Ra, int atmdisp, Register Rb); // SW2F ++ void ldw_set(Register Ra, int atmdisp, Register Rb); // SW2F ++ void ldl_set(Register Ra, int atmdisp, Register Rb); // SW2F ++ void lstw(Register Ra, int atmdisp, Register Rb); ++ void lstl(Register Ra, int atmdisp, Register Rb); ++ void ldw_nc(Register Ra, int atmdisp, Register Rb); ++ void ldl_nc(Register Ra, int atmdisp, Register Rb); ++ void ldd_nc(Register Ra, int atmdisp, Register Rb); ++ void stw_nc(Register Ra, int atmdisp, Register Rb); ++ void stl_nc(Register Ra, int atmdisp, Register Rb); ++ void std_nc(Register Ra, int atmdisp, Register Rb); ++ ++ // TODO: 0x8.a-0x8.f *_NC instructions ++ ++ // --------Load/Store-instructions----------------- ++ void ldwe(FloatRegister fa, int mdisp, Register Rb); ++ void ldse(FloatRegister fa, int mdisp, Register Rb); ++ void ldde(FloatRegister fa, int mdisp, Register Rb); ++ void vlds(FloatRegister fa, int mdisp, Register Rb); ++ void vldd(FloatRegister fa, int mdisp, Register Rb); ++ void vsts(FloatRegister fa, int mdisp, Register Rb); ++ void vstd(FloatRegister fa, int mdisp, Register Rb); ++ ++ void cmpeq(Register Ra, Register Rb, Register Rc); ++ void cmpeq(Register Ra, int lit, Register Rc); ++ void cmplt(Register Ra, Register Rb, Register Rc); ++ void cmplt(Register Ra, int lit, Register Rc); ++ void cmple(Register Ra, Register Rb, Register Rc); ++ void cmple(Register Ra, int lit, Register Rc); ++ void cmpult(Register Ra, Register Rb, Register Rc); ++ void cmpult(Register Ra, int lit, Register Rc); ++ void cmpule(Register Ra, Register Rb, Register Rc); ++ void cmpule(Register Ra, int lit, Register Rc); ++ void sbt(Register Ra, Register Rb, Register Rc); // SW8A ++ void sbt(Register Ra, int lit, Register Rc); // SW8A ++ void cbt(Register Ra, Register Rb, Register Rc); // SW8A ++ void cbt(Register Ra, int lit, Register Rc); // SW8A ++ ++ // 0x10.40-0x10.47 INS[0-7]B ++ void inslb(Register Ra, Register Rb, Register Rc); ++ void inslb(Register Ra, int lit, Register Rc); ++ void inslh(Register Ra, Register Rb, Register Rc); ++ void inslh(Register Ra, int lit, Register Rc); ++ void inslw(Register Ra, Register Rb, Register Rc); ++ void inslw(Register Ra, int lit, Register Rc); ++ void insll(Register Ra, Register Rb, Register Rc); ++ void insll(Register Ra, int lit, Register Rc); ++ void inshb(Register Ra, Register Rb, Register Rc); ++ void inshb(Register Ra, int lit, Register Rc); ++ void inshh(Register Ra, Register Rb, Register Rc); ++ void inshh(Register Ra, int lit, Register Rc); ++ void inshw(Register Ra, Register Rb, Register Rc); ++ void inshw(Register Ra, int lit, Register Rc); ++ void inshl(Register Ra, Register Rb, Register Rc); ++ void inshl(Register Ra, int lit, Register Rc); ++ ++ // 0x10.6c CMPGEB ++ void cmpgeb(Register Ra, Register Rb, Register Rc); ++ void cmpgeb(Register Ra, int lit, Register Rc); ++ ++ void fimovs(FloatRegister fa, Register Rc); ++ void fimovd(FloatRegister fa, Register Rc); ++ ++ void seleq(Register Ra, Register Rb, Register R3, Register Rc); ++ void seleq(Register Ra, int lit, Register R3, Register Rc); ++ void selge(Register Ra, Register Rb, Register R3, Register Rc); ++ void selge(Register Ra, int lit, Register R3, Register Rc); ++ void selgt(Register Ra, Register Rb, Register R3, Register Rc); ++ void selgt(Register Ra, int lit, Register R3, Register Rc); ++ void selle(Register Ra, Register Rb, Register R3, Register Rc); ++ void selle(Register Ra, int lit, Register R3, Register Rc); ++ void sellt(Register Ra, Register Rb, Register R3, Register Rc); ++ void sellt(Register Ra, int lit, Register R3, Register Rc); ++ void selne(Register Ra, Register Rb, Register R3, Register Rc); ++ void selne(Register Ra, int lit, Register R3, Register Rc); ++ void sellbc(Register Ra, Register Rb, Register R3, Register Rc); ++ void sellbc(Register Ra, int lit, Register R3, Register Rc); ++ void sellbs(Register Ra, Register Rb, Register R3, Register Rc); ++ void sellbs(Register Ra, int lit, Register R3, Register Rc); ++ ++ void vlog(int vlog, FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ ++ void f_exclude_same_src_fc(Opcode_ops_fp opcode, FloatRegister fa, ++ FloatRegister fb, FloatRegister fc); ++ void f_exclude_same_src_fc(Opcode_ops_fp opcode, FloatRegister fb, ++ FloatRegister fc); ++ void vbisw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vxorw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vandw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void veqvw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vornotw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vbicw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fadds(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void faddd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fsubs(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fsubd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fmuls(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fmuld(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fdivs(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fdivd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fsqrts(FloatRegister fb, FloatRegister fc); ++ void fsqrtd(FloatRegister fb, FloatRegister fc); ++ void fcmpeq(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcmple(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcmplt(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcmpun(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcvtsd(FloatRegister fb, FloatRegister fc); ++ void fcvtds(FloatRegister fb, FloatRegister fc); ++ void fcvtdl_g(FloatRegister fb, FloatRegister fc); ++ void fcvtdl_p(FloatRegister fb, FloatRegister fc); ++ void fcvtdl_z(FloatRegister fb, FloatRegister fc); ++ void fcvtdl_n(FloatRegister fb, FloatRegister fc); ++ void fcvtdl(FloatRegister fb, FloatRegister fc); ++ void fcvtwl(FloatRegister fb, FloatRegister fc); ++ void fcvtlw(FloatRegister fb, FloatRegister fc); ++ void fcvtls(FloatRegister fb, FloatRegister fc); ++ void fcvtld(FloatRegister fb, FloatRegister fc); ++ void fcvths(FloatRegister Fb, FloatRegister Fc); ++ void fcvtsh(FloatRegister Fb, FloatRegister Fc); ++ void cmovdw(FloatRegister fa, Register Rc); ++ void cmovdw_g(FloatRegister fa, Register Rc); ++ void cmovdw_p(FloatRegister fa, Register Rc); ++ void cmovdw_z(FloatRegister fa, Register Rc); ++ void cmovdw_n(FloatRegister fa, Register Rc); ++ void cmovdwu(FloatRegister fa, Register Rc); ++ void cmovdwu_g(FloatRegister fa, Register Rc); ++ void cmovdwu_p(FloatRegister fa, Register Rc); ++ void cmovdwu_z(FloatRegister fa, Register Rc); ++ void cmovdwu_n(FloatRegister fa, Register Rc); ++ void cmovdl(FloatRegister fa, Register Rc); ++ void cmovdl_g(FloatRegister fa, Register Rc); ++ void cmovdl_p(FloatRegister fa, Register Rc); ++ void cmovdl_z(FloatRegister fa, Register Rc); ++ void cmovdl_n(FloatRegister fa, Register Rc); ++ void cmovdlu(FloatRegister fa, Register Rc); ++ void cmovdlu_g(FloatRegister fa, Register Rc); ++ void cmovdlu_p(FloatRegister fa, Register Rc); ++ void cmovdlu_z(FloatRegister fa, Register Rc); ++ void cmovdlu_n(FloatRegister fa, Register Rc); ++ void cmovls(Register Rb, FloatRegister Rc); ++ void cmovld(Register Rb, FloatRegister Rc); ++ void cmovuls(Register Rb, FloatRegister Rc); ++ void cmovuld(Register Rb, FloatRegister Rc); ++ void cmovws(Register Rb, FloatRegister Rc); ++ void cmovwd(Register Rb, FloatRegister Rc); ++ void cmovuws(Register Rb, FloatRegister Rc); ++ void cmovuwd(Register Rb, FloatRegister Rc); ++ void fcpys(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcpyse(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void fcpysn(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void ifmovs(Register Ra, FloatRegister fc); ++ void ifmovd(Register Ra, FloatRegister fc); ++ void rfpcr(FloatRegister fa); ++ void wfpcr(FloatRegister fa); ++ void setfpec0(); ++ void setfpec1(); ++ void setfpec2(); ++ void setfpec3(); ++ ++ void frecs(FloatRegister fa, FloatRegister fc); // SW8A ++ void frecd(FloatRegister fa, FloatRegister fc); // SW8A ++ void fris(FloatRegister fb, FloatRegister fc); // SW8A ++ void fris_g(FloatRegister fb, FloatRegister fc); // SW8A ++ void fris_p(FloatRegister fb, FloatRegister fc); // SW8A ++ void fris_z(FloatRegister fb, FloatRegister fc); // SW8A ++ void fris_n(FloatRegister fb, FloatRegister fc); // SW8A ++ void frid(FloatRegister fb, FloatRegister fc); // SW8A ++ void frid_g(FloatRegister fb, FloatRegister fc); // SW8A ++ void frid_p(FloatRegister fb, FloatRegister fc); // SW8A ++ void frid_z(FloatRegister fb, FloatRegister fc); // SW8A ++ void frid_n(FloatRegister fb, FloatRegister fc); // SW8A ++ void fmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fnmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fnmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fnmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fnmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ ++ void fseleq(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fselne(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fsellt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fselle(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fselgt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void fselge(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ ++ void vaddw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vaddw(FloatRegister fa, int lit, FloatRegister fc); ++ void vsubw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsubw(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmpgew(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmpgew(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmpeqw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmpeqw(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmplew(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmplew(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmpltw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmpltw(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmpulew(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmpulew(FloatRegister fa, int lit, FloatRegister fc); ++ void vcmpultw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcmpultw(FloatRegister fa, int lit, FloatRegister fc); ++ void vsllw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsllw(FloatRegister fa, int lit, FloatRegister fc); ++ void vsrlw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsrlw(FloatRegister fa, int lit, FloatRegister fc); ++ void vsraw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsraw(FloatRegister fa, int lit, FloatRegister fc); ++ void vrolw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vrolw(FloatRegister fa, int lit, FloatRegister fc); ++ void sllow(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void sllow(FloatRegister fa, int lit, FloatRegister fc); ++ void srlow(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void srlow(FloatRegister fa, int lit, FloatRegister fc); ++ void vaddl(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vaddl(FloatRegister fa, int lit, FloatRegister fc); ++ void vsubl(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsubl(FloatRegister fa, int lit, FloatRegister fc); ++ void vsllb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsllb(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsrlb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsrlb(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsrab(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsrab(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vrolb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vrolb(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsllh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsllh(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsrlh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsrlh(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsrah(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsrah(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vrolh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vrolh(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void ctpopow(FloatRegister fa, FloatRegister fc); ++ void ctlzow(FloatRegister fa, FloatRegister fc); ++ void vslll(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vslll(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsrll(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsrll(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsral(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsral(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vroll(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vroll(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vmaxb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vminb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ ++ // some unimplemented SIMD ++ void vucaddw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucaddw(FloatRegister fa, int lit, FloatRegister fc); ++ void vucsubw(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucsubw(FloatRegister fa, int lit, FloatRegister fc); ++ void vucaddh(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucaddh(FloatRegister fa, int lit, FloatRegister fc); ++ void vucsubh(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucsubh(FloatRegister fa, int lit, FloatRegister fc); ++ void vucaddb(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucaddb(FloatRegister fa, int lit, FloatRegister fc); ++ void vucsubb(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vucsubb(FloatRegister fa, int lit, FloatRegister fc); ++ void sraow(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void sraow(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsumw(FloatRegister fa, FloatRegister fc); // SW8A ++ void vsuml(FloatRegister fa, FloatRegister fc); // SW8A ++ void vcmpueqb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vcmpueqb(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vcmpugtb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vcmpugtb(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vmaxh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vminh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vmaxw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vminw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vmaxl(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vminl(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vumaxb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vuminb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vumaxh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vuminh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vumaxw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vuminw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vumaxl(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vuminl(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ ++ void vsm3msw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vsm4key(FloatRegister fa, int lit, FloatRegister fc); // SW8A ++ void vsm4r(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vbinvw(FloatRegister fb, FloatRegister fc); // SW8A ++ ++ void vadds(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vaddd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsubs(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsubd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vmuls(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vmuld(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vdivs(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vdivd(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsqrts(FloatRegister fb, FloatRegister fc); ++ void vsqrtd(FloatRegister fb, FloatRegister fc); ++ void vfcmpeq(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vfcmple(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vfcmplt(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vfcmpun(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcpys(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vfmov(FloatRegister fa, FloatRegister fc); ++ void vcpyse(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vcpysn(FloatRegister fa, FloatRegister fb, FloatRegister fc); ++ void vsums(FloatRegister fa, FloatRegister fc); // SW8A ++ void vsumd(FloatRegister fa, FloatRegister fc); // SW8A ++ void vfrecs(FloatRegister fa, FloatRegister fc); // SW8A ++ void vfrecd(FloatRegister fa, FloatRegister fc); // SW8A ++ void vfcvtsd(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtds(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtls(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtld(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtdl(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtdl_g(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtdl_p(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtdl_z(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfcvtdl_n(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfris(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfris_g(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfris_p(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfris_z(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfris_n(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfrid(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfrid_g(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfrid_p(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfrid_z(FloatRegister fb, FloatRegister fc); // SW8A ++ void vfrid_n(FloatRegister fb, FloatRegister fc); // SW8A ++ void vmaxs(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vmins(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vmaxd(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vmind(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ // end of unimplemented SIMD ++ ++ void vmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vnmas(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vnmad(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vnmss(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vnmsd(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vfseleq(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vfsellt(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vfselle(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vseleqw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vseleqw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); ++ void vsellbcw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vsellbcw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); ++ void vselltw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vselltw(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); ++ void vsellew(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vsellew(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); ++ void vinsw(FloatRegister fa, FloatRegister fb, int fmalit, FloatRegister fc); ++ void vinsf(FloatRegister fa, FloatRegister fb, int fmalit, FloatRegister fc); ++ void vextw(FloatRegister fa, int fmalit, FloatRegister fc); ++ void vextf(FloatRegister fa, int fmalit, FloatRegister fc); ++ void vcpyw(FloatRegister fa, FloatRegister fc); ++ void vcpyf(FloatRegister fa, FloatRegister fc); ++ void vconw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vshfw(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vcons(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vcond(FloatRegister fa, FloatRegister fb, FloatRegister f3, ++ FloatRegister fc); ++ void vinsb(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ void vinsh(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ void vinsectlh(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vinsectlw(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vinsectll(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vinsectlb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vshfq(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ void vshfqb(FloatRegister fa, FloatRegister fb, FloatRegister fc); // SW8A ++ void vcpyb(FloatRegister fa, FloatRegister fc); // SW8A ++ void vcpyh(FloatRegister fa, FloatRegister fc); // SW8A ++ void vsm3r(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ void vfcvtsh(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ void vfcvths(FloatRegister fa, FloatRegister fb, int fmalit, ++ FloatRegister fc); // SW8A ++ ++ void vldw_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vstw_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vlds_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vsts_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vldd_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vstd_u(FloatRegister fa, int atmdisp, Register Rb); ++ void vstw_ul(FloatRegister fa, int atmdisp, Register Rb); ++ void vstw_uh(FloatRegister fa, int atmdisp, Register Rb); ++ void vsts_ul(FloatRegister fa, int atmdisp, Register Rb); ++ void vsts_uh(FloatRegister fa, int atmdisp, Register Rb); ++ void vstd_ul(FloatRegister fa, int atmdisp, Register Rb); ++ void vstd_uh(FloatRegister fa, int atmdisp, Register Rb); ++ void lbr(int palfn); // SW8A ++ void ldbu_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void ldhu_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void ldw_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void ldl_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void stb_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void sth_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void stw_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void stl_a(Register Ra, int atmdisp, Register Rb); // SW8A ++ void flds_a(FloatRegister fa, int atmdisp, Register Rb); // SW8A ++ void fldd_a(FloatRegister fa, int atmdisp, Register Rb); // SW8A ++ void fsts_a(FloatRegister fa, int atmdisp, Register Rb); // SW8A ++ void fstd_a(FloatRegister fa, int atmdisp, Register Rb); // SW8A ++ void dpfhr(int th, int atmdisp, Register Rb); // SW8A ++ void dpfhw(int th, int atmdisp, Register Rb); // SW8A ++ ++ // TODO: 0x1A.00-0x1c.E SIMD instructions. ++ ++ void ldbu(Register Ra, int mdisp, Register Rb); ++ void ldhu(Register Ra, int mdisp, Register Rb); ++ void ldw(Register Ra, int mdisp, Register Rb); ++ void ldl(Register Ra, int mdisp, Register Rb); ++ void ldl_u(Register Ra, int mdisp, Register Rb); ++ void pri_ld(Register Ra, int ev6hwdisp, Register Rb); ++ void flds(FloatRegister fa, int mdisp, Register Rb); ++ void fldd(FloatRegister fa, int mdisp, Register Rb); ++ ++ void stb(Register Ra, int mdisp, Register Rb); ++ void sth(Register Ra, int mdisp, Register Rb); ++ void stw(Register Ra, int mdisp, Register Rb); ++ void stl(Register Ra, int mdisp, Register Rb); ++ void stl_u(Register Ra, int mdisp, Register Rb); ++ void pri_st(Register Ra, int ev6hwdisp, Register Rb); ++ void fsts(FloatRegister fa, int mdisp, Register Rb); ++ void fstd(FloatRegister fa, int mdisp, Register Rb); ++ ++ void ldi(Register Ra, int mdisp, Register Rb); ++ void ldih(Register Ra, int mdisp, Register Rb); ++ ++ // cache control instruction ++ void s_fillcs(int mdisp, Register Rb); ++ void s_fillde(int mdisp, Register Rb); ++ void fillde(int mdisp, Register Rb); ++ void fillde_e(int mdisp, Register Rb); ++ void fillcs(int mdisp, Register Rb); ++ void fillcs_e(int mdisp, Register Rb); ++ void e_fillcs(int mdisp, Register Rb); ++ void e_fillde(int mdisp, Register Rb); ++ void flushd(int mdisp, Register Rb); ++ void evictdl(int mdisp, Register Rb); ++ void evictdg(int mdisp, Register Rb); ++ ++ // ------------Memory-instructions------------- ++ void Ldb(Register Ra, const MemOperand& rs); // sw add ++ void ldbu(Register Ra, const MemOperand& rs); ++ void Ldh(Register Ra, const MemOperand& rs); // sw add ++ void ldhu(Register Ra, const MemOperand& rs); ++ void ldw(Register Ra, const MemOperand& rs); ++ void Ldwu(Register Ra, const MemOperand& rs); // sw add ++ void ldl(Register Ra, const MemOperand& rs); ++ void flds(FloatRegister fa, const MemOperand& rs); ++ void fldd(FloatRegister fa, const MemOperand& rs); ++ ++ void stb(Register Ra, const MemOperand& rs); ++ void sth(Register Ra, const MemOperand& rs); ++ void stw(Register Ra, const MemOperand& rs); ++ void stl(Register Ra, const MemOperand& rs); ++ void fsts(FloatRegister fa, const MemOperand& rs); ++ void fstd(FloatRegister fa, const MemOperand& rs); ++ ++ void beq(Register Ra, Label* L) { beq(Ra, branch_offset(L) >> 2); } ++ void bne(Register Ra, Label* L) { bne(Ra, branch_offset(L) >> 2); } ++ void blt(Register Ra, Label* L) { blt(Ra, branch_offset(L) >> 2); } ++ void ble(Register Ra, Label* L) { ble(Ra, branch_offset(L) >> 2); } ++ void bgt(Register Ra, Label* L) { bgt(Ra, branch_offset(L) >> 2); } ++ void bge(Register Ra, Label* L) { bge(Ra, branch_offset(L) >> 2); } ++ ++ void fbr(Label* L) { fbeq(f31, branch_offset(L) >> 2); } ++ void fbeq(FloatRegister fa, Label* L) { fbeq(fa, branch_offset(L) >> 2); } ++ void fbne(FloatRegister fa, Label* L) { fbne(fa, branch_offset(L) >> 2); } ++ void fblt(FloatRegister fa, Label* L) { fblt(fa, branch_offset(L) >> 2); } ++ void fble(FloatRegister fa, Label* L) { fble(fa, branch_offset(L) >> 2); } ++ void fbgt(FloatRegister fa, Label* L) { fbgt(fa, branch_offset(L) >> 2); } ++ void fbge(FloatRegister fa, Label* L) { fbge(fa, branch_offset(L) >> 2); } ++ void fmov(FPURegister rs, FPURegister rd) { fcpys(rs, rs, rd); } ++ ++ // Check the code size generated from label to here. ++ int SizeOfCodeGeneratedSince(Label* label) { ++ return pc_offset() - label->pos(); ++ } ++ ++ // Check the number of instructions generated from label to here. ++ int InstructionsGeneratedSince(Label* label) { ++ return SizeOfCodeGeneratedSince(label) / kInstrSize; ++ } ++ ++ // Class for scoping postponing the trampoline pool generation. ++ class V8_NODISCARD BlockTrampolinePoolScope { ++ public: ++ explicit BlockTrampolinePoolScope(Assembler* assem) : assem_(assem) { ++ assem_->StartBlockTrampolinePool(); ++ } ++ ~BlockTrampolinePoolScope() { assem_->EndBlockTrampolinePool(); } ++ ++ private: ++ Assembler* assem_; ++ ++ DISALLOW_IMPLICIT_CONSTRUCTORS(BlockTrampolinePoolScope); ++ }; ++ ++ // Class for postponing the assembly buffer growth. Typically used for ++ // sequences of instructions that must be emitted as a unit, before ++ // buffer growth (and relocation) can occur. ++ // This blocking scope is not nestable. ++ class V8_NODISCARD BlockGrowBufferScope { ++ public: ++ explicit BlockGrowBufferScope(Assembler* assem) : assem_(assem) { ++ assem_->StartBlockGrowBuffer(); ++ } ++ ~BlockGrowBufferScope() { assem_->EndBlockGrowBuffer(); } ++ ++ private: ++ Assembler* assem_; ++ ++ DISALLOW_IMPLICIT_CONSTRUCTORS(BlockGrowBufferScope); ++ }; ++ ++ // Record a deoptimization reason that can be used by a log or cpu profiler. ++ // Use --trace-deopt to enable. ++ void RecordDeoptReason(DeoptimizeReason reason, uint32_t node_id, ++ SourcePosition position, int id); ++ ++ static int RelocateInternalReference(RelocInfo::Mode rmode, Address pc, ++ intptr_t pc_delta); ++ ++ // Writes a single byte or word of data in the code stream. Used for ++ // inline tables, e.g., jump-tables. ++ void db(uint8_t data); ++ void dd(uint32_t data, RelocInfo::Mode rmode = RelocInfo::NO_INFO); ++ void dq(uint64_t data, RelocInfo::Mode rmode = RelocInfo::NO_INFO); ++ void dp(uintptr_t data, RelocInfo::Mode rmode = RelocInfo::NO_INFO) { ++ dq(data, rmode); ++ } ++ void dd(Label* label); ++ ++ // Postpone the generation of the trampoline pool for the specified number of ++ // instructions. ++ void BlockTrampolinePoolFor(int instructions); ++ ++ // Check if there is less than kGap bytes available in the buffer. ++ // If this is the case, we need to grow the buffer before emitting ++ // an instruction or relocation information. ++ inline bool overflow() const { return pc_ >= reloc_info_writer.pos() - kGap; } ++ ++ // Get the number of bytes available in the buffer. ++ inline intptr_t available_space() const { ++ return reloc_info_writer.pos() - pc_; ++ } ++ ++ // Read/patch instructions. ++ static Instr instr_at(Address pc) { return *reinterpret_cast(pc); } ++ static void instr_at_put(Address pc, Instr instr) { ++ *reinterpret_cast(pc) = instr; ++ } ++ Instr instr_at(int pos) { ++ return *reinterpret_cast(buffer_start_ + pos); ++ } ++ void instr_at_put(int pos, Instr instr) { ++ *reinterpret_cast(buffer_start_ + pos) = instr; ++ } ++ ++ // Check if an instruction is a branch of some kind. ++ static bool IsLdih(Instr instr); ++ static bool IsLdi(Instr instr); ++ static bool IsBranch(Instr instr); ++ ++ static bool IsBeq(Instr instr); ++ static bool IsBne(Instr instr); ++ ++ static uint32_t GetLabelConst(Instr instr); ++ ++ static uint32_t GetSwRa(Instr instr); ++ static uint32_t GetSwRb(Instr instr); ++ static uint32_t GetSwRc(Instr instr); ++ ++ static int32_t GetSwOpcodeField(Instr instr); ++ static int32_t GetSwOpcodeAndFunctionField(Instr instr); ++ static uint32_t GetSwImmediate8(Instr instr); ++ static uint32_t GetSwImmediate16(Instr instr); ++ ++ static bool IsAddImmediate(Instr instr); ++ ++ static bool IsAndImmediate(Instr instr); ++ static bool IsEmittedConstant(Instr instr); ++ ++ void CheckTrampolinePool(); ++ ++ inline int UnboundLabelsCount() { return unbound_labels_count_; } ++ ++ bool is_trampoline_emitted() const { return trampoline_emitted_; } ++ ++ protected: ++ // Readable constants for base and offset adjustment helper, these indicate if ++ // aside from offset, another value like offset + 4 should fit into int16. ++ enum class OffsetAccessType : bool { ++ SINGLE_ACCESS = false, ++ TWO_ACCESSES = true ++ }; ++ ++ // Helper function for memory load/store using base register and offset. ++ void AdjustBaseAndOffset( ++ MemOperand* src, ++ OffsetAccessType access_type = OffsetAccessType::SINGLE_ACCESS, ++ int second_access_add_to_offset = 4); ++ ++ inline static void set_target_internal_reference_encoded_at(Address pc, ++ Address target); ++ ++ int64_t buffer_space() const { return reloc_info_writer.pos() - pc_; } ++ ++ // Decode branch instruction at pos and return branch target pos. ++ int target_at(int pos, bool is_internal); ++ ++ // Patch branch instruction at pos to branch to given branch target pos. ++ void target_at_put(int pos, int target_pos, bool is_internal); ++ ++ // Say if we need to relocate with this mode. ++ bool MustUseReg(RelocInfo::Mode rmode); ++ ++ // Record reloc info for current pc_. ++ void RecordRelocInfo(RelocInfo::Mode rmode, intptr_t data = 0); ++ ++ // Block the emission of the trampoline pool before pc_offset. ++ void BlockTrampolinePoolBefore(int pc_offset) { ++ if (no_trampoline_pool_before_ < pc_offset) ++ no_trampoline_pool_before_ = pc_offset; ++ } ++ ++ void StartBlockTrampolinePool() { trampoline_pool_blocked_nesting_++; } ++ ++ void EndBlockTrampolinePool() { ++ trampoline_pool_blocked_nesting_--; ++ if (trampoline_pool_blocked_nesting_ == 0) { ++ CheckTrampolinePoolQuick(1); ++ } ++ } ++ ++ bool is_trampoline_pool_blocked() const { ++ return trampoline_pool_blocked_nesting_ > 0; ++ } ++ ++ bool has_exception() const { return internal_trampoline_exception_; } ++ ++ // Temporarily block automatic assembly buffer growth. ++ void StartBlockGrowBuffer() { ++ DCHECK(!block_buffer_growth_); ++ block_buffer_growth_ = true; ++ } ++ ++ void EndBlockGrowBuffer() { ++ DCHECK(block_buffer_growth_); ++ block_buffer_growth_ = false; ++ } ++ ++ bool is_buffer_growth_blocked() const { return block_buffer_growth_; } ++ ++ void CheckTrampolinePoolQuick(int extra_instructions = 0) { ++ if (pc_offset() >= next_buffer_check_ - extra_instructions * kInstrSize) { ++ CheckTrampolinePool(); ++ } ++ } ++ ++ void set_pc_for_safepoint() { pc_for_safepoint_ = pc_; } ++ ++ private: ++ // Avoid overflows for displacements etc. ++ static const int kMaximalBufferSize = 512 * MB; ++ ++ // Buffer size and constant pool distance are checked together at regular ++ // intervals of kBufferCheckInterval emitted bytes. ++ static constexpr int kBufferCheckInterval = 1 * KB / 2; ++ ++ // InstructionStream generation. ++ // The relocation writer's position is at least kGap bytes below the end of ++ // the generated instructions. This is so that multi-instruction sequences do ++ // not have to check for overflow. The same is true for writes of large ++ // relocation info entries. ++ static constexpr int kGap = 64; ++ static_assert(AssemblerBase::kMinimalBufferSize >= 2 * kGap); ++ ++ // Repeated checking whether the trampoline pool should be emitted is rather ++ // expensive. By default we only check again once a number of instructions ++ // has been generated. ++ static constexpr int kCheckConstIntervalInst = 32; ++ static constexpr int kCheckConstInterval = ++ kCheckConstIntervalInst * kInstrSize; ++ ++ int next_buffer_check_; // pc offset of next buffer check. ++ ++ // Emission of the trampoline pool may be blocked in some code sequences. ++ int trampoline_pool_blocked_nesting_; // Block emission if this is not zero. ++ int no_trampoline_pool_before_; // Block emission before this pc offset. ++ ++ // Keep track of the last emitted pool to guarantee a maximal distance. ++ int last_trampoline_pool_end_; // pc offset of the end of the last pool. ++ ++ // Automatic growth of the assembly buffer may be blocked for some sequences. ++ bool block_buffer_growth_; // Block growth when true. ++ ++ // Relocation information generation. ++ // Each relocation is encoded as a variable size value. ++ static constexpr int kMaxRelocSize = RelocInfoWriter::kMaxSize; ++ RelocInfoWriter reloc_info_writer; ++ ++ // The bound position, before this we cannot do instruction elimination. ++ int last_bound_pos_; ++ ++ // InstructionStream emission. ++ inline void CheckBuffer(); ++ void GrowBuffer(); ++ inline void CheckForEmitInForbiddenSlot(); ++ template ++ inline void EmitHelper(T x); ++ inline void EmitHelper(Instr x); ++ inline void EmitHelper(uint8_t x); ++ inline void emit(Instr x); ++ inline void emit(uint64_t x); ++ ++ // Instruction generation. ++ // We have 3 different kind of encoding layout on SW64. ++ // However due to many different types of objects encoded in the same fields ++ // we have quite a few aliases for each mode. ++ // Using the same structure to refer to Register and FPURegister would spare a ++ // few aliases, but mixing both does not look clean to me. ++ // Anyway we could surely implement this differently. ++ ++ void GenInstrB_SW(Opcode_ops_bra opcode, Register Ra, int32_t disp); ++ ++ void GenInstrFB_SW(Opcode_ops_bra opcode, FloatRegister fa, int32_t disp); ++ ++ void GenInstrM_SW(Opcode_ops_mem opcode, Register Ra, int16_t disp, ++ Register Rb); ++ ++ void GenInstrFM_SW(Opcode_ops_mem opcode, FloatRegister fa, int16_t disp, ++ Register Rb); ++ ++ void GenInstrMWithFun_SW(Opcode_ops_atmem opcode, Register Ra, int16_t disp, ++ Register Rb); ++ ++ void GenInstrR_SW(Opcode_ops_opr opcode, Register Ra, Register Rb, ++ Register Rc); ++ ++ void GenInstrI_SW(Opcode_ops_oprl opcode, Register Ra, int16_t imm, ++ Register Rc); ++ ++ void GenInstrFR_SW(Opcode_ops_fp opcode, FloatRegister fa, FloatRegister fb, ++ FloatRegister fc); ++ ++ void GenInstrFR_SW(Opcode_ops_fp opcode, FloatRegister fb, FloatRegister fc); ++ ++ void GenInstrFR_SW(Opcode_ops_fpl opcode, FloatRegister fa, int16_t imm, ++ FloatRegister fc); ++ ++ void GenInstrFR_SW(Opcode_ops_fpl opcode, FloatRegister fa, FloatRegister fb, ++ int16_t fmalit, FloatRegister fc); ++ ++ void GenInstrFMA_SW(Opcode_ops_fmal opcode, FloatRegister fa, ++ FloatRegister fb, int16_t fmalit, FloatRegister fc); ++ ++ void GenInstrFMA_SW(Opcode_ops_fmal opcode, FloatRegister fa, int16_t fmalit, ++ FloatRegister fc); ++ ++ void GenInstrFMA_SW(Opcode_ops_fma opcode, FloatRegister fa, FloatRegister fb, ++ FloatRegister f3, FloatRegister fc); ++ ++ void GenInstrFMA_SW(Opcode_ops_fma opcode, FloatRegister fa, FloatRegister fb, ++ FloatRegister fc); ++ ++ void GenInstrSWSA_SW(Opcode_ops_atmem opcode, FloatRegister fa, ++ int16_t atmdisp, Register Rb); ++ ++ void GenInstrSelR_SW(Opcode_ops_sel opcode, Register Ra, Register Rb, ++ Register R3, Register Rc); ++ ++ void GenInstrSelI_SW(Opcode_ops_sel_l opcode, Register Ra, int32_t imm, ++ Register R3, Register Rc); ++ ++ // Helpers. ++ void SwLoadRegPlusOffsetToAt(const MemOperand& src); ++ ++ // Labels. ++ void print(const Label* L); ++ void bind_to(Label* L, int pos); ++ void next(Label* L, bool is_internal); ++ ++ // One trampoline consists of: ++ // - space for trampoline slots, ++ // - space for labels. ++ // ++ // Space for trampoline slots is equal to slot_count * 2 * kInstrSize. ++ // Space for trampoline slots precedes space for labels. Each label is of one ++ // instruction size, so total amount for labels is equal to ++ // label_count * kInstrSize. ++ class Trampoline { ++ public: ++ Trampoline() { ++ start_ = 0; ++ next_slot_ = 0; ++ free_slot_count_ = 0; ++ end_ = 0; ++ } ++ Trampoline(int start, int slot_count) { ++ start_ = start; ++ next_slot_ = start; ++ free_slot_count_ = slot_count; ++ end_ = start + slot_count * kTrampolineSlotsSize; ++ } ++ int start() { return start_; } ++ int end() { return end_; } ++ int take_slot() { ++ int trampoline_slot = kInvalidSlotPos; ++ if (free_slot_count_ <= 0) { ++ // We have run out of space on trampolines. ++ // Make sure we fail in debug mode, so we become aware of each case ++ // when this happens. ++ DCHECK(0); ++ // Internal exception will be caught. ++ } else { ++ trampoline_slot = next_slot_; ++ free_slot_count_--; ++ next_slot_ += kTrampolineSlotsSize; ++ } ++ return trampoline_slot; ++ } ++ ++ private: ++ int start_; ++ int end_; ++ int next_slot_; ++ int free_slot_count_; ++ }; ++ ++ int32_t get_trampoline_entry(int32_t pos); ++ int unbound_labels_count_; ++ // After trampoline is emitted, long branches are used in generated code for ++ // the forward branches whose target offsets could be beyond reach of branch ++ // instruction. We use this information to trigger different mode of ++ // branch instruction generation, where we use jump instructions rather ++ // than regular branch instructions. ++ bool trampoline_emitted_; ++ static constexpr int kInvalidSlotPos = -1; ++ ++ // Internal reference positions, required for unbounded internal reference ++ // labels. ++ std::set internal_reference_positions_; ++ bool is_internal_reference(Label* L) { ++ return internal_reference_positions_.find(L->pos()) != ++ internal_reference_positions_.end(); ++ } ++ ++ Trampoline trampoline_; ++ bool internal_trampoline_exception_; ++ ++ // Keep track of the last Call's position to ensure that safepoint can get the ++ // correct information even if there is a trampoline immediately after the ++ // Call. ++ byte* pc_for_safepoint_; ++ ++ RegList scratch_register_list_; ++ ++ private: ++ void AllocateAndInstallRequestedHeapNumbers(Isolate* isolate); ++ ++ int WriteCodeComments(); ++ ++ friend class RegExpMacroAssemblerSW64; ++ friend class RelocInfo; ++ friend class BlockTrampolinePoolScope; ++ friend class EnsureSpace; ++}; ++ ++class EnsureSpace { ++ public: ++ explicit inline EnsureSpace(Assembler* assembler); ++}; ++ ++class V8_EXPORT_PRIVATE V8_NODISCARD UseScratchRegisterScope { ++ public: ++ explicit UseScratchRegisterScope(Assembler* assembler); ++ ~UseScratchRegisterScope(); ++ ++ Register Acquire(); ++ bool hasAvailable() const; ++ ++ void Include(const RegList& list) { *available_ |= list; } ++ void Exclude(const RegList& list) { available_->clear(list); } ++ void Include(const Register& reg1, const Register& reg2 = no_reg) { ++ RegList list({reg1, reg2}); ++ Include(list); ++ } ++ void Exclude(const Register& reg1, const Register& reg2 = no_reg) { ++ RegList list({reg1, reg2}); ++ Exclude(list); ++ } ++ ++ private: ++ RegList* available_; ++ RegList old_available_; ++}; ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_CODEGEN_SW64_ASSEMBLER_SW64_H_ +diff --git a/deps/v8/src/codegen/sw64/constants-sw64.cc b/deps/v8/src/codegen/sw64/constants-sw64.cc +new file mode 100644 +index 00000000..7209a261 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/constants-sw64.cc +@@ -0,0 +1,143 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/codegen/sw64/constants-sw64.h" ++ ++namespace v8 { ++namespace internal { ++ ++// ----------------------------------------------------------------------------- ++// Registers. ++ ++// These register names are defined in a way to match the native disassembler ++// formatting. See for example the command "objdump -d ". ++const char* Registers::names_[kNumRegisters] = { ++ "v0", "t0", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "s0", "s1", ++ "s2", "s3", "s4", "s5", "fp", "a0", "a1", "a2", "a3", "a4", "a5", ++ "t8", "t9", "t10", "t11", "ra", "t12", "at", "gp", "sp", "zero_reg"}; ++ ++// List of alias names which can be used when referring to SW64 registers. ++const Registers::RegisterAlias Registers::aliases_[] = { ++ {14, "cp"}, ++ {15, "s6"}, ++ {15, "s6_fp"}, ++ {31, "zero_reg"}, ++ {kInvalidRegister, nullptr}}; ++ ++const char* Registers::Name(int reg) { ++ const char* result; ++ if ((0 <= reg) && (reg < kNumRegisters)) { ++ result = names_[reg]; ++ } else { ++ result = "noreg"; ++ } ++ return result; ++} ++ ++int Registers::Number(const char* name) { ++ // Look through the canonical names. ++ for (int i = 0; i < kNumRegisters; i++) { ++ if (strcmp(names_[i], name) == 0) { ++ return i; ++ } ++ } ++ ++ // Look through the alias names. ++ int i = 0; ++ while (aliases_[i].reg != kInvalidRegister) { ++ if (strcmp(aliases_[i].name, name) == 0) { ++ return aliases_[i].reg; ++ } ++ i++; ++ } ++ ++ // No register with the reguested name found. ++ return kInvalidRegister; ++} ++ ++const char* FPURegisters::names_[kNumFPURegisters] = { ++ "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7", "f8", "f9", "f10", ++ "f11", "f12", "f13", "f14", "f15", "f16", "f17", "f18", "f19", "f20", "f21", ++ "f22", "f23", "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"}; ++ ++// List of alias names which can be used when referring to SW64 registers. ++const FPURegisters::RegisterAlias FPURegisters::aliases_[] = { ++ {kInvalidRegister, nullptr}}; ++ ++const char* FPURegisters::Name(int creg) { ++ const char* result; ++ if ((0 <= creg) && (creg < kNumFPURegisters)) { ++ result = names_[creg]; ++ } else { ++ result = "nocreg"; ++ } ++ return result; ++} ++ ++int FPURegisters::Number(const char* name) { ++ // Look through the canonical names. ++ for (int i = 0; i < kNumFPURegisters; i++) { ++ if (strcmp(names_[i], name) == 0) { ++ return i; ++ } ++ } ++ ++ // Look through the alias names. ++ int i = 0; ++ while (aliases_[i].creg != kInvalidRegister) { ++ if (strcmp(aliases_[i].name, name) == 0) { ++ return aliases_[i].creg; ++ } ++ i++; ++ } ++ ++ // No Cregister with the reguested name found. ++ return kInvalidFPURegister; ++} ++ ++const char* SWSARegisters::names_[kNumSWSARegisters] = { ++ "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v8", "v9", "v10", ++ "v11", "v12", "v13", "v14", "v15", "v16", "v17", "v18", "v19", "v20", "v21", ++ "v22", "v23", "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31"}; ++ ++const SWSARegisters::RegisterAlias SWSARegisters::aliases_[] = { ++ {kInvalidRegister, nullptr}}; ++ ++const char* SWSARegisters::Name(int creg) { ++ const char* result; ++ if ((0 <= creg) && (creg < kNumSWSARegisters)) { ++ result = names_[creg]; ++ } else { ++ result = "nocreg"; ++ } ++ return result; ++} ++ ++int SWSARegisters::Number(const char* name) { ++ // Look through the canonical names. ++ for (int i = 0; i < kNumSWSARegisters; i++) { ++ if (strcmp(names_[i], name) == 0) { ++ return i; ++ } ++ } ++ ++ // Look through the alias names. ++ int i = 0; ++ while (aliases_[i].creg != kInvalidRegister) { ++ if (strcmp(aliases_[i].name, name) == 0) { ++ return aliases_[i].creg; ++ } ++ i++; ++ } ++ ++ // No Cregister with the reguested name found. ++ return kInvalidSWSARegister; ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/codegen/sw64/constants-sw64.h b/deps/v8/src/codegen/sw64/constants-sw64.h +new file mode 100644 +index 00000000..b7661f2f +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/constants-sw64.h +@@ -0,0 +1,1635 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_CODEGEN_SW64_CONSTANTS_SW64_H_ ++#define V8_CODEGEN_SW64_CONSTANTS_SW64_H_ ++ ++#include "src/base/logging.h" ++#include "src/base/macros.h" ++#include "src/common/globals.h" ++ ++// UNIMPLEMENTED_ macro for SW64. ++#ifdef DEBUG ++#define UNIMPLEMENTED_SW64() \ ++ v8::internal::PrintF("%s, \tline %d: \tfunction %s not implemented. \n", \ ++ __FILE__, __LINE__, __func__) ++#else ++#define UNIMPLEMENTED_SW64() ++#endif ++ ++#define UNSUPPORTED_SW64() v8::internal::PrintF("Unsupported instruction.\n") ++ ++// TODO(plind): consider renaming these ... ++#if (defined(__sw64_hard_float) && __sw64_hard_float != 0) ++// Use floating-point coprocessor instructions. This flag is raised when ++// -mhard-float is passed to the compiler. ++const bool IsSw64SoftFloatABI = false; ++#elif (defined(__sw64_soft_float) && __sw64_soft_float != 0) ++// This flag is raised when -msoft-float is passed to the compiler. ++// Although FPU is a base requirement for v8, soft-float ABI is used ++// on soft-float systems with FPU kernel emulation. ++const bool IsSw64SoftFloatABI = true; ++#else ++const bool IsSw64SoftFloatABI = true; ++#endif ++ ++const uint32_t kSwLwrOffset = 0; ++const uint32_t kSwLwlOffset = 3; ++const uint32_t kSwSwrOffset = 0; ++const uint32_t kSwSwlOffset = 3; ++const uint32_t kSwLdrOffset = 0; ++const uint32_t kSwLdlOffset = 7; ++const uint32_t kSwSdrOffset = 0; ++const uint32_t kSwSdlOffset = 7; ++ ++#ifndef __STDC_FORMAT_MACROS ++#define __STDC_FORMAT_MACROS ++#endif ++#include ++ ++// Defines constants and accessor classes to assemble, disassemble ++// ++ ++namespace v8 { ++namespace internal { ++ ++// TODO(sigurds): Change this value once we use relative jumps. ++constexpr size_t kMaxPCRelativeCodeRangeInMB = 0; ++ ++// ----------------------------------------------------------------------------- ++// Registers and FPURegisters. ++ ++// Number of general purpose registers. ++const int kNumRegisters = 32; ++const int kInvalidRegister = -1; ++ ++// Number of registers with HI, LO, and pc. ++const int kNumSimuRegisters = 35; ++ ++// In the simulator, the PC register is simulated as the 34th register. ++const int kPCRegister = 34; ++ ++// Number coprocessor registers. ++const int kNumFPURegisters = 32; ++const int kInvalidFPURegister = -1; ++ ++// Number of SWSA registers ++const int kNumSWSARegisters = 32; ++const int kInvalidSWSARegister = -1; ++ ++const int kInvalidSWSAControlRegister = -1; ++const int kSWSAIRRegister = 0; ++const int kSWSACSRRegister = 1; ++const int kSWSARegSize = 128; ++const int kSWSALanesByte = kSWSARegSize / 8; ++const int kSWSALanesHalf = kSWSARegSize / 16; ++const int kSWSALanesWord = kSWSARegSize / 32; ++const int kSWSALanesDword = kSWSARegSize / 64; ++ ++// FPU (coprocessor 1) control registers. Currently only FPCR is implemented. ++const int kFPCRRegister = 31; ++const int kInvalidFPUControlRegister = -1; ++const uint32_t kFPUInvalidResult = static_cast(1u << 31) - 1; ++const int32_t kFPUInvalidResultNegative = static_cast(1u << 31); ++const uint64_t kFPU64InvalidResult = ++ static_cast(static_cast(1) << 63) - 1; ++const int64_t kFPU64InvalidResultNegative = ++ static_cast(static_cast(1) << 63); ++ ++// FPCR constants. ++const uint32_t kFPCRInexactFlagBit = 2; ++const uint32_t kFPCRUnderflowFlagBit = 3; ++const uint32_t kFPCROverflowFlagBit = 4; ++const uint32_t kFPCRDivideByZeroFlagBit = 5; ++const uint32_t kFPCRInvalidOpFlagBit = 6; ++const uint32_t kFPCRNaN2008FlagBit = 18; ++ ++const uint32_t kFPCRInexactFlagMask = 1 << kFPCRInexactFlagBit; ++const uint32_t kFPCRUnderflowFlagMask = 1 << kFPCRUnderflowFlagBit; ++const uint32_t kFPCROverflowFlagMask = 1 << kFPCROverflowFlagBit; ++const uint32_t kFPCRDivideByZeroFlagMask = 1 << kFPCRDivideByZeroFlagBit; ++const uint32_t kFPCRInvalidOpFlagMask = 1 << kFPCRInvalidOpFlagBit; ++const uint32_t kFPCRNaN2008FlagMask = 1 << kFPCRNaN2008FlagBit; ++ ++const uint32_t kFPCRFlagMask = ++ kFPCRInexactFlagMask | kFPCRUnderflowFlagMask | kFPCROverflowFlagMask | ++ kFPCRDivideByZeroFlagMask | kFPCRInvalidOpFlagMask; ++ ++const uint32_t kFPCRExceptionFlagMask = kFPCRFlagMask ^ kFPCRInexactFlagMask; ++// SKTODO ++const uint32_t kFPCRInexactCauseBit = 12; ++const uint32_t kFPCRUnderflowCauseBit = 13; ++const uint32_t kFPCROverflowCauseBit = 14; ++const uint32_t kFPCRDivideByZeroCauseBit = 15; ++const uint32_t kFPCRInvalidOpCauseBit = 16; ++const uint32_t kFPCRUnimplementedOpCauseBit = 17; ++ ++const uint32_t kFPCRInexactCauseMask = 1 << kFPCRInexactCauseBit; ++const uint32_t kFPCRUnderflowCauseMask = 1 << kFPCRUnderflowCauseBit; ++const uint32_t kFPCROverflowCauseMask = 1 << kFPCROverflowCauseBit; ++const uint32_t kFPCRDivideByZeroCauseMask = 1 << kFPCRDivideByZeroCauseBit; ++const uint32_t kFPCRInvalidOpCauseMask = 1 << kFPCRInvalidOpCauseBit; ++const uint32_t kFPCRUnimplementedOpCauseMask = 1 ++ << kFPCRUnimplementedOpCauseBit; ++ ++const uint32_t kFPCRCauseMask = ++ kFPCRInexactCauseMask | kFPCRUnderflowCauseMask | kFPCROverflowCauseMask | ++ kFPCRDivideByZeroCauseMask | kFPCRInvalidOpCauseMask | ++ kFPCRUnimplementedOpCauseBit; ++ ++// SW64 FPCR constants. ++const uint64_t sFPCROverflowIntegerFlagBit = 57; ++const uint64_t sFPCRInexactFlagBit = 56; ++const uint64_t sFPCRUnderflowFlagBit = 55; ++const uint64_t sFPCROverflowFlagBit = 54; ++const uint64_t sFPCRDivideByZeroFlagBit = 53; ++const uint64_t sFPCRInvalidOpFlagBit = 52; ++ ++const uint64_t sFPCRInexactControlBit = 62; ++const uint64_t sFPCRUnderflowControlBit = 61; ++const uint64_t sFPCROverflowControlBit = 51; ++const uint64_t sFPCRDivideByZeroControlBit = 50; ++const uint64_t sFPCRInvalidOpControlBit = 49; ++ ++const uint64_t sFPCRRound0Bit = 58; ++const uint64_t sFPCRRound1Bit = 59; ++ ++const uint64_t sFPCRFloatOverflowControlBit = 45; // in 8a ++const uint64_t sFPCRunnormalizedControlBit = 47; // in 8a ++const uint64_t sFPCRunnormalizedEnableBit = 48; // in 8a ++ ++const uint64_t sFPCRControlMask = (0x1UL << sFPCRInexactControlBit) | ++ (0x1UL << sFPCRUnderflowControlBit) | ++ (0x1UL << sFPCROverflowControlBit) | ++ (0x1UL << sFPCRDivideByZeroControlBit) | ++ (0x1UL << sFPCRInvalidOpControlBit); ++ ++const uint64_t sFPCR_8aControlMask = ++ (0x1UL << sFPCRInexactControlBit) | (0x1UL << sFPCRUnderflowControlBit) | ++ (0x1UL << sFPCROverflowControlBit) | ++ (0x1UL << sFPCRDivideByZeroControlBit) | ++ // (0x1UL << sFPCRFloatOverflowControlBit)| ++ (0x1UL << sFPCRunnormalizedControlBit) | ++ (0x1UL << sFPCRunnormalizedEnableBit) | (0x1UL << sFPCRInvalidOpControlBit); ++ ++const uint64_t sFPCRRound0Mask = 0x1UL << sFPCRRound0Bit; ++const uint64_t sFPCRRound1Mask = 0x1UL << sFPCRRound1Bit; ++ ++const uint64_t sFPCROverflowIntegerFlagMask = 0x1UL ++ << sFPCROverflowIntegerFlagBit; ++const uint64_t sFPCRInexactFlagMask = 0x1UL << sFPCRInexactFlagBit; ++const uint64_t sFPCRUnderflowFlagMask = 0x1UL << sFPCRUnderflowFlagBit; ++const uint64_t sFPCROverflowFlagMask = 0x1UL << sFPCROverflowFlagBit; ++const uint64_t sFPCRDivideByZeroFlagMask = 0x1UL << sFPCRDivideByZeroFlagBit; ++const uint64_t sFPCRInvalidOpFlagMask = 0x1UL << sFPCRInvalidOpFlagBit; ++ ++const uint64_t sFPCRFlagMask = ++ sFPCROverflowIntegerFlagMask | sFPCRInexactFlagMask | ++ sFPCRUnderflowFlagMask | sFPCROverflowFlagMask | sFPCRDivideByZeroFlagMask | ++ sFPCRInvalidOpFlagMask; ++ ++const uint64_t sFPCRExceptionFlagMask = sFPCRFlagMask ^ sFPCRInexactFlagMask; ++ ++// 'pref' instruction hints ++const int32_t kPrefHintLoad = 0; ++const int32_t kPrefHintStore = 1; ++const int32_t kPrefHintLoadStreamed = 4; ++const int32_t kPrefHintStoreStreamed = 5; ++const int32_t kPrefHintLoadRetained = 6; ++const int32_t kPrefHintStoreRetained = 7; ++const int32_t kPrefHintWritebackInvalidate = 25; ++const int32_t kPrefHintPrepareForStore = 30; ++ ++// Actual value of root register is offset from the root array's start ++// to take advantage of negative displacement values. ++constexpr int kRootRegisterBias = 256; ++ ++// Helper functions for converting between register numbers and names. ++class Registers { ++ public: ++ // Return the name of the register. ++ static const char* Name(int reg); ++ ++ // Lookup the register number for the name provided. ++ static int Number(const char* name); ++ ++ struct RegisterAlias { ++ int reg; ++ const char* name; ++ }; ++ ++ static const int64_t kMaxValue = 0x7fffffffffffffffl; ++ static const int64_t kMinValue = 0x8000000000000000l; ++ ++ private: ++ static const char* names_[kNumRegisters]; ++ static const RegisterAlias aliases_[]; ++}; ++ ++// Helper functions for converting between register numbers and names. ++class FPURegisters { ++ public: ++ // Return the name of the register. ++ static const char* Name(int reg); ++ ++ // Lookup the register number for the name provided. ++ static int Number(const char* name); ++ ++ struct RegisterAlias { ++ int creg; ++ const char* name; ++ }; ++ ++ private: ++ static const char* names_[kNumFPURegisters]; ++ static const RegisterAlias aliases_[]; ++}; ++ ++// Helper functions for converting between register numbers and names. ++class SWSARegisters { ++ public: ++ // Return the name of the register. ++ static const char* Name(int reg); ++ ++ // Lookup the register number for the name provided. ++ static int Number(const char* name); ++ ++ struct RegisterAlias { ++ int creg; ++ const char* name; ++ }; ++ ++ private: ++ static const char* names_[kNumSWSARegisters]; ++ static const RegisterAlias aliases_[]; ++}; ++ ++// SWSA sizes. ++enum SWSASize { SWSA_B = 0x0, SWSA_H = 0x1, SWSA_W = 0x2, SWSA_D = 0x3 }; ++ ++// SWSA data type, top bit set for unsigned data types. ++enum SWSADataType { ++ SWSAS8 = 0, ++ SWSAS16 = 1, ++ SWSAS32 = 2, ++ SWSAS64 = 3, ++ SWSAU8 = 4, ++ SWSAU16 = 5, ++ SWSAU32 = 6, ++ SWSAU64 = 7 ++}; ++ ++// ----------------------------------------------------------------------------- ++// Instructions encoding constants. ++ ++// On SW64 all instructions are 32 bits. ++using Instr = int32_t; ++ ++// Special Software Interrupt codes when used in the presence of the SW64 ++// simulator. ++enum SoftwareInterruptCodes { ++ // Transition to C code. ++ call_rt_redirected = 0xfffff ++}; ++ ++// On SW64 Simulator breakpoints can have different codes: ++// - Breaks between 0 and kMaxWatchpointCode are treated as simple watchpoints, ++// the simulator will run through them and print the registers. ++// - Breaks between kMaxWatchpointCode and kMaxStopCode are treated as stop() ++// instructions (see Assembler::stop()). ++// - Breaks larger than kMaxStopCode are simple breaks, dropping you into the ++// debugger. ++const uint32_t kMaxWatchpointCode = 31; ++const uint32_t kMaxStopCode = 127; ++static_assert(kMaxWatchpointCode < kMaxStopCode); ++ ++// ----- Fields offset and length. ++const int kOpcodeShift = 26; ++const int kOpcodeBits = 6; ++const int kRsShift = 21; ++const int kRsBits = 5; ++const int kRtShift = 16; ++const int kRtBits = 5; ++const int kRdShift = 11; ++const int kRdBits = 5; ++const int kSaShift = 6; ++const int kSaBits = 5; ++const int kFunctionShift = 0; ++const int kFunctionBits = 6; ++const int kLuiShift = 16; ++const int kBp2Shift = 6; ++const int kBp2Bits = 2; ++const int kBp3Shift = 6; ++const int kBp3Bits = 3; ++const int kBaseShift = 21; ++const int kBaseBits = 5; ++const int kBit6Shift = 6; ++const int kBit6Bits = 1; ++ ++const int kImm9Shift = 7; ++const int kImm9Bits = 9; ++const int kImm16Shift = 0; ++const int kImm16Bits = 16; ++const int kImm18Shift = 0; ++const int kImm18Bits = 18; ++const int kImm19Shift = 0; ++const int kImm19Bits = 19; ++const int kImm21Shift = 0; ++const int kImm21Bits = 21; ++const int kImm26Shift = 0; ++const int kImm26Bits = 26; ++const int kImm28Shift = 0; ++const int kImm28Bits = 28; ++const int kImm32Shift = 0; ++const int kImm32Bits = 32; ++const int kSwsaImm8Shift = 16; ++const int kSwsaImm8Bits = 8; ++const int kSwsaImm5Shift = 16; ++const int kSwsaImm5Bits = 5; ++const int kSwsaImm10Shift = 11; ++const int kSwsaImm10Bits = 10; ++const int kSwsaImmMI10Shift = 16; ++const int kSwsaImmMI10Bits = 10; ++ ++// In branches and jumps immediate fields point to words, not bytes, ++// and are therefore shifted by 2. ++const int kImmFieldShift = 2; ++ ++const int kFrBits = 5; ++const int kFrShift = 21; ++const int kFsShift = 11; ++const int kFsBits = 5; ++const int kFtShift = 16; ++const int kFtBits = 5; ++const int kFdShift = 6; ++const int kFdBits = 5; ++const int kFCccShift = 8; ++const int kFCccBits = 3; ++const int kFBccShift = 18; ++const int kFBccBits = 3; ++const int kFBtrueShift = 16; ++const int kFBtrueBits = 1; ++const int kWtBits = 5; ++const int kWtShift = 16; ++const int kWsBits = 5; ++const int kWsShift = 11; ++const int kWdBits = 5; ++const int kWdShift = 6; ++ ++// ----- Miscellaneous useful masks. ++// Instruction bit masks. ++const int kOpcodeMask = ((1 << kOpcodeBits) - 1) << kOpcodeShift; ++const int kImm9Mask = ((1 << kImm9Bits) - 1) << kImm9Shift; ++const int kImm16Mask = ((1 << kImm16Bits) - 1) << kImm16Shift; ++const int kImm18Mask = ((1 << kImm18Bits) - 1) << kImm18Shift; ++const int kImm19Mask = ((1 << kImm19Bits) - 1) << kImm19Shift; ++const int kImm21Mask = ((1 << kImm21Bits) - 1) << kImm21Shift; ++const int kImm26Mask = ((1 << kImm26Bits) - 1) << kImm26Shift; ++const int kImm28Mask = ((1 << kImm28Bits) - 1) << kImm28Shift; ++const int kImm5Mask = ((1 << 5) - 1); ++const int kImm8Mask = ((1 << 8) - 1); ++const int kImm10Mask = ((1 << 10) - 1); ++const int kSwsaI5I10Mask = ((7U << 23) | ((1 << 6) - 1)); ++const int kSwsaI8Mask = ((3U << 24) | ((1 << 6) - 1)); ++const int kSwsaI5Mask = ((7U << 23) | ((1 << 6) - 1)); ++const int kSwsaMI10Mask = (15U << 2); ++const int kSwsaBITMask = ((7U << 23) | ((1 << 6) - 1)); ++const int kSwsaELMMask = (15U << 22); ++const int kSwsaLongerELMMask = kSwsaELMMask | (63U << 16); ++const int kSwsa3RMask = ((7U << 23) | ((1 << 6) - 1)); ++const int kSwsa3RFMask = ((15U << 22) | ((1 << 6) - 1)); ++const int kSwsaVECMask = (23U << 21); ++const int kSwsa2RMask = (7U << 18); ++const int kSwsa2RFMask = (15U << 17); ++const int kRsFieldMask = ((1 << kRsBits) - 1) << kRsShift; ++const int kRtFieldMask = ((1 << kRtBits) - 1) << kRtShift; ++const int kRdFieldMask = ((1 << kRdBits) - 1) << kRdShift; ++const int kSaFieldMask = ((1 << kSaBits) - 1) << kSaShift; ++const int kFunctionFieldMask = ((1 << kFunctionBits) - 1) << kFunctionShift; ++// Misc masks. ++const int kHiMaskOf32 = 0xffff << 16; // Only to be used with 32-bit values ++const int kLoMaskOf32 = 0xffff; ++const int kSignMaskOf32 = 0x80000000; // Only to be used with 32-bit values ++const int kJumpAddrMask = (1 << (kImm26Bits + kImmFieldShift)) - 1; ++const int64_t kTop16MaskOf64 = (int64_t)0xffff << 48; ++const int64_t kHigher16MaskOf64 = (int64_t)0xffff << 32; ++const int64_t kUpper16MaskOf64 = (int64_t)0xffff << 16; ++const int32_t kJalRawMark = 0x00000000; ++const int32_t kJRawMark = 0xf0000000; ++const int32_t kJumpRawMask = 0xf0000000; ++ ++// ----- Fields offset and length for sw64 ++const int sOpcodeShift = 26; // 31-26 ++const int sOpcodeBits = 6; ++const int sRaShift = 21; // 25-21 ++const int sRaBits = 5; ++const int sRbShift = 16; // 20-16 ++const int sRbBits = 5; ++const int sFunctionShift = 5; // 12- 5 ++const int sFunctionBits = 8; ++const int sRcShift = 0; // 4- 0 ++const int sRcBits = 5; ++const int sR3Shift = 5; // 9- 5 ++const int sR3Bits = 5; ++const int sRdShift = 0; // jzy 20150317 ++const int sRdBits = 5; ++ ++// ----- 21-bits disp(20-0) for SYS_CALL ++const int sImm21Shift = 0; ++const int sImm21Bits = 21; ++ ++// ----- 16-bits disp(15-0) for M ++const int sImm16Shift = 0; ++const int sImm16Bits = 16; ++ ++// ----- 12-bits disp(11-0) for MWithFun ++const int sImm12Shift = 0; ++const int sImm12Bits = 12; ++ ++// ----- 8-bits(20-13) imm for ALU_I & complex interger ALU ++const int sImm8Shift = 13; ++const int sImm8Bits = 8; ++ ++// ----- 5-bits(9-5) imm for complex-float ALU ++const int sImm5Shift = 5; ++const int sImm5Bits = 5; ++ ++//----- 13-bits(25-13) imm for ALU ++const int sImm13Shift = 13; ++const int sImm13Bits = 13; ++ ++//----- 11-bits disp(10-0) for SIMD ++const int sImm11Shift = 0; ++const int sImm11Bits = 11; ++ ++//----- 8-bits disp(7-0) for CSR ++const int RpiShift = 0; ++const int RpiBits = 8; ++ ++// Instruction bit masks. ++const int sOpcodeMask = ((1 << sOpcodeBits) - 1) << sOpcodeShift; ++const int sFunctionMask = ((1 << sFunctionBits) - 1) << sFunctionShift; ++const int sImm5Mask = ((1 << sImm5Bits) - 1) << sImm5Shift; ++const int sImm8Mask = ((1 << sImm8Bits) - 1) << sImm8Shift; ++const int sImm12Mask = ((1 << sImm12Bits) - 1) << sImm12Shift; ++const int sImm16Mask = ((1 << sImm16Bits) - 1) << sImm16Shift; ++const int sImm21Mask = ((1 << sImm21Bits) - 1) << sImm21Shift; ++const int sRaFieldMask = ((1 << sRaBits) - 1) << sRaShift; ++const int sRbFieldMask = ((1 << sRbBits) - 1) << sRbShift; ++const int sRcFieldMask = ((1 << sRcBits) - 1) << sRcShift; ++const int sR3FieldMask = ((1 << sR3Bits) - 1) << sR3Shift; ++const int sRdFieldMask = ((1 << sRdBits) - 1) << sRdShift; ++const int sImm13Mask = ((1 << sImm13Bits) - 1) << sImm13Shift; ++const int sImm11Mask = ((1 << sImm11Bits) - 1) << sImm11Shift; ++const int sRpiMask = ((1 << RpiBits) - 1) << RpiShift; ++ ++#define OP(x) (((x)&0x3F) << 26) ++#define PCD(oo) (OP(oo)) ++#define OPMEM(oo) (OP(oo)) ++#define BRA(oo) (OP(oo)) ++ ++#define OFP(oo, ff) (OP(oo) | (((ff)&0xFF) << 5)) ++#define FMA(oo, ff) (OP(oo) | (((ff)&0x3F) << 10)) ++#define MFC(oo, ff) (OP(oo) | ((ff)&0xFFFF)) ++#define MBR(oo, h) (OP(oo) | (((h)&3) << 14)) ++#define OPR(oo, ff) (OP(oo) | (((ff)&0xFF) << 5)) ++#define OPRL(oo, ff) (OP(oo) | (((ff)&0xFF) << 5)) ++#define TOPR(oo, ff) (OP(oo) | (((ff)&0x07) << 10)) ++#define TOPRL(oo, ff) (OP(oo) | (((ff)&0x07) << 10)) ++ ++#define ATMEM(oo, h) (OP(oo) | (((h)&0xF) << 12)) ++#define PRIRET(oo, h) (OP(oo) | (((h)&0x1) << 20)) ++#define SPCD(oo, ff) (OP(oo) | ((ff)&0x3FFFFFF)) ++#define EV6HWMEM(oo, ff) (OP(oo) | (((ff)&0xF) << 12)) ++#define CSR(oo, ff) (OP(oo) | (((ff)&0xFF) << 8)) ++ ++#define LOGX(oo, ff) (OP(oo) | (((ff)&0x3F) << 10)) ++#define PSE_LOGX(oo, ff) \ ++ (OP(oo) | (((ff)&0x3F) << 10) | (((ff) >> 0x6) << 26) | 0x3E0) ++ ++enum Opcode : uint32_t {}; ++ ++enum Opcode_ops_mem { ++ op_call = OPMEM(0x01), ++ op_ret = OPMEM(0x02), ++ op_jmp = OPMEM(0x03), ++ op_ldwe = OPMEM(0x09), ++ op_fillcs = op_ldwe, ++ op_ldse = OPMEM(0x0A), ++ op_e_fillcs = op_ldse, ++ op_ldde = OPMEM(0x0B), ++ op_fillcs_e = op_ldde, ++ op_vlds = OPMEM(0x0C), ++ op_e_fillde = op_vlds, ++ op_vldd = OPMEM(0x0D), ++ op_vsts = OPMEM(0x0E), ++ op_vstd = OPMEM(0x0F), ++ op_ldbu = OPMEM(0x20), ++ op_flushd = op_ldbu, ++ op_ldhu = OPMEM(0x21), ++ op_evictdg = op_ldhu, ++ op_ldw = OPMEM(0x22), ++ op_s_fillcs = op_ldw, ++ op_ldl = OPMEM(0x23), ++ op_s_fillde = op_ldl, ++ op_ldl_u = OPMEM(0x24), ++ op_evictdl = op_ldl_u, ++ op_flds = OPMEM(0x26), ++ op_fillde = op_flds, ++ op_fldd = OPMEM(0x27), ++ op_fillde_e = op_fldd, ++ op_stb = OPMEM(0x28), ++ op_sth = OPMEM(0x29), ++ op_stw = OPMEM(0x2A), ++ op_stl = OPMEM(0x2B), ++ op_stl_u = OPMEM(0x2C), ++ op_fsts = OPMEM(0x2E), ++ op_fstd = OPMEM(0x2F), ++ op_ldi = OPMEM(0x3E), ++ op_ldih = OPMEM(0x3F) ++ // unop = OPMEM(0x3F) | (30 << 16), ++}; ++ ++enum Opcode_ops_atmem { ++ op_lldw = ATMEM(0x08, 0x0), ++ op_lldl = ATMEM(0x08, 0x1), ++ op_ldw_inc = ATMEM(0x08, 0x2), // SW2F ++ op_ldl_inc = ATMEM(0x08, 0x3), // SW2F ++ op_ldw_dec = ATMEM(0x08, 0x4), // SW2F ++ op_ldl_dec = ATMEM(0x08, 0x5), // SW2F ++ op_ldw_set = ATMEM(0x08, 0x6), // SW2F ++ op_ldl_set = ATMEM(0x08, 0x7), // SW2F ++ op_lstw = ATMEM(0x08, 0x8), ++ op_lstl = ATMEM(0x08, 0x9), ++ op_ldw_nc = ATMEM(0x08, 0xA), ++ op_ldl_nc = ATMEM(0x08, 0xB), ++ op_ldd_nc = ATMEM(0x08, 0xC), ++ op_stw_nc = ATMEM(0x08, 0xD), ++ op_stl_nc = ATMEM(0x08, 0xE), ++ op_std_nc = ATMEM(0x08, 0xF), ++ op_vldw_u = ATMEM(0x1C, 0x0), ++ op_vstw_u = ATMEM(0x1C, 0x1), ++ op_vlds_u = ATMEM(0x1C, 0x2), ++ op_vsts_u = ATMEM(0x1C, 0x3), ++ op_vldd_u = ATMEM(0x1C, 0x4), ++ op_vstd_u = ATMEM(0x1C, 0x5), ++ op_vstw_ul = ATMEM(0x1C, 0x8), ++ op_vstw_uh = ATMEM(0x1C, 0x9), ++ op_vsts_ul = ATMEM(0x1C, 0xA), ++ op_vsts_uh = ATMEM(0x1C, 0xB), ++ op_vstd_ul = ATMEM(0x1C, 0xC), ++ op_vstd_uh = ATMEM(0x1C, 0xD), ++ op_vldd_nc = ATMEM(0x1C, 0xE), ++ op_vstd_nc = ATMEM(0x1C, 0xF), ++ op_ldbu_a = ATMEM(0x1E, 0x0), // SW8A ++ op_ldhu_a = ATMEM(0x1E, 0x1), // SW8A ++ op_ldw_a = ATMEM(0x1E, 0x2), // SW8A ++ op_ldl_a = ATMEM(0x1E, 0x3), // SW8A ++ op_flds_a = ATMEM(0x1E, 0x4), // SW8A ++ op_fldd_a = ATMEM(0x1E, 0x5), // SW8A ++ op_stb_a = ATMEM(0x1E, 0x6), // SW8A ++ op_sth_a = ATMEM(0x1E, 0x7), // SW8A ++ op_stw_a = ATMEM(0x1E, 0x8), // SW8A ++ op_stl_a = ATMEM(0x1E, 0x9), // SW8A ++ op_fsts_a = ATMEM(0x1E, 0xA), // SW8A ++ op_fstd_a = ATMEM(0x1E, 0xB) // SW8A ++}; ++ ++enum Opcode_ops_ev6hwmem { ++ op_pri_ld = EV6HWMEM(0x25, 0x0), ++ op_pri_st = EV6HWMEM(0x2D, 0x0), ++}; ++ ++enum Opcode_ops_opr { ++ op_addw = OPR(0x10, 0x00), ++ op_subw = OPR(0x10, 0x01), ++ op_s4addw = OPR(0x10, 0x02), ++ op_s4subw = OPR(0x10, 0x03), ++ op_s8addw = OPR(0x10, 0x04), ++ op_s8subw = OPR(0x10, 0x05), ++ op_addl = OPR(0x10, 0x08), ++ op_subl = OPR(0x10, 0x09), ++ op_s4addl = OPR(0x10, 0x0A), ++ op_s4subl = OPR(0x10, 0x0B), ++ op_s8addl = OPR(0x10, 0x0C), ++ op_s8subl = OPR(0x10, 0x0D), ++ op_mulw = OPR(0x10, 0x10), ++ op_divw = OPR(0x10, 0x11), // SW8A ++ op_udivw = OPR(0x10, 0x12), // SW8A ++ op_remw = OPR(0x10, 0x13), // SW8A ++ op_uremw = OPR(0x10, 0x14), // SW8A ++ op_mull = OPR(0x10, 0x18), ++ op_umulh = OPR(0x10, 0x19), ++ op_divl = OPR(0x10, 0x1A), // SW8A ++ op_udivl = OPR(0x10, 0x1B), // SW8A ++ op_reml = OPR(0x10, 0x1C), // SW8A ++ op_ureml = OPR(0x10, 0x1D), // SW8A ++ op_addpi = OPR(0x10, 0x1E), // SW8A ++ op_addpis = OPR(0x10, 0x1F), // SW8A ++ op_cmpeq = OPR(0x10, 0x28), ++ op_cmplt = OPR(0x10, 0x29), ++ op_cmple = OPR(0x10, 0x2A), ++ op_cmpult = OPR(0x10, 0x2B), ++ op_cmpule = OPR(0x10, 0x2C), ++ op_sbt = OPR(0x10, 0x2D), // SW8A ++ op_cbt = OPR(0x10, 0x2E), // SW8A ++ op_and = OPR(0x10, 0x38), ++ op_bic = OPR(0x10, 0x39), ++ op_bis = OPR(0x10, 0x3A), ++ op_ornot = OPR(0x10, 0x3B), ++ op_xor = OPR(0x10, 0x3C), ++ op_eqv = OPR(0x10, 0x3D), ++ op_inslb = OPR(0x10, 0x40), // 0x10.40~0x10.47 ++ op_inslh = OPR(0x10, 0x41), ++ op_inslw = OPR(0x10, 0x42), ++ op_insll = OPR(0x10, 0x43), ++ op_inshb = OPR(0x10, 0x44), ++ op_inshh = OPR(0x10, 0x45), ++ op_inshw = OPR(0x10, 0x46), ++ op_inshl = OPR(0x10, 0x47), ++ op_slll = OPR(0x10, 0x48), ++ op_srll = OPR(0x10, 0x49), ++ op_sral = OPR(0x10, 0x4A), ++ op_roll = OPR(0x10, 0x4B), // SW8A ++ op_sllw = OPR(0x10, 0x4C), // SW8A ++ op_srlw = OPR(0x10, 0x4D), // SW8A ++ op_sraw = OPR(0x10, 0x4E), // SW8A ++ op_rolw = OPR(0x10, 0x4F), // SW8A ++ op_extlb = OPR(0x10, 0x50), // 0x10.50~0x10.57 ++ op_extlh = OPR(0x10, 0x51), ++ op_extlw = OPR(0x10, 0x52), ++ op_extll = OPR(0x10, 0x53), ++ op_exthb = OPR(0x10, 0x54), ++ op_exthh = OPR(0x10, 0x55), ++ op_exthw = OPR(0x10, 0x56), ++ op_exthl = OPR(0x10, 0x57), ++ op_ctpop = OPR(0x10, 0x58), ++ op_ctlz = OPR(0x10, 0x59), ++ op_cttz = OPR(0x10, 0x5A), ++ op_revbh = OPR(0x10, 0x5B), // SW8A ++ op_revbw = OPR(0x10, 0x5C), // SW8A ++ op_revbl = OPR(0x10, 0x5D), // SW8A ++ op_casw = OPR(0x10, 0x5E), // SW8A ++ op_casl = OPR(0x10, 0x5F), // SW8A ++ op_masklb = OPR(0x10, 0x60), // 0x10.60~0x10.67 ++ op_masklh = OPR(0x10, 0x61), ++ op_masklw = OPR(0x10, 0x62), ++ op_maskll = OPR(0x10, 0x63), ++ op_maskhb = OPR(0x10, 0x64), ++ op_maskhh = OPR(0x10, 0x65), ++ op_maskhw = OPR(0x10, 0x66), ++ op_maskhl = OPR(0x10, 0x67), ++ op_zap = OPR(0x10, 0x68), ++ op_zapnot = OPR(0x10, 0x69), ++ op_sextb = OPR(0x10, 0x6A), ++ op_sexth = OPR(0x10, 0x6B), ++ op_cmpgeb = OPR(0x10, 0x6C), // 0x10.6C ++ op_fimovs = OPR(0x10, 0x70), ++ op_fimovd = OPR(0x10, 0x78), ++}; ++ ++enum Opcode_ops_sel { ++ op_seleq = TOPR(0x11, 0x0), ++ op_selge = TOPR(0x11, 0x1), ++ op_selgt = TOPR(0x11, 0x2), ++ op_selle = TOPR(0x11, 0x3), ++ op_sellt = TOPR(0x11, 0x4), ++ op_selne = TOPR(0x11, 0x5), ++ op_sellbc = TOPR(0x11, 0x6), ++ op_sellbs = TOPR(0x11, 0x7) ++}; ++ ++enum Opcode_ops_oprl { ++ op_addw_l = OPRL(0x12, 0x00), ++ op_subw_l = OPRL(0x12, 0x01), ++ op_s4addw_l = OPRL(0x12, 0x02), ++ op_s4subw_l = OPRL(0x12, 0x03), ++ op_s8addw_l = OPRL(0x12, 0x04), ++ op_s8subw_l = OPRL(0x12, 0x05), ++ op_addl_l = OPRL(0x12, 0x08), ++ op_subl_l = OPRL(0x12, 0x09), ++ op_s4addl_l = OPRL(0x12, 0x0A), ++ op_s4subl_l = OPRL(0x12, 0x0B), ++ op_s8addl_l = OPRL(0x12, 0x0C), ++ op_s8subl_l = OPRL(0x12, 0x0D), ++ op_mulw_l = OPRL(0x12, 0x10), ++ op_mull_l = OPRL(0x12, 0x18), ++ op_umulh_l = OPRL(0x12, 0x19), ++ op_cmpeq_l = OPRL(0x12, 0x28), ++ op_cmplt_l = OPRL(0x12, 0x29), ++ op_cmple_l = OPRL(0x12, 0x2A), ++ op_cmpult_l = OPRL(0x12, 0x2B), ++ op_cmpule_l = OPRL(0x12, 0x2C), ++ op_sbt_l = OPRL(0x12, 0x2D), // SW8A ++ op_cbt_l = OPRL(0x12, 0x2E), // SW8A ++ op_and_l = OPRL(0x12, 0x38), ++ op_bic_l = OPRL(0x12, 0x39), ++ op_bis_l = OPRL(0x12, 0x3A), ++ op_ornot_l = OPRL(0x12, 0x3B), ++ op_xor_l = OPRL(0x12, 0x3C), ++ op_eqv_l = OPRL(0x12, 0x3D), ++ op_inslb_l = OPRL(0x12, 0x40), // 0x12.40~0x12.47 ++ op_inslh_l = OPRL(0x12, 0x41), ++ op_inslw_l = OPRL(0x12, 0x42), ++ op_insll_l = OPRL(0x12, 0x43), ++ op_inshb_l = OPRL(0x12, 0x44), ++ op_inshh_l = OPRL(0x12, 0x45), ++ op_inshw_l = OPRL(0x12, 0x46), ++ op_inshl_l = OPRL(0x12, 0x47), ++ op_slll_l = OPRL(0x12, 0x48), ++ op_srll_l = OPRL(0x12, 0x49), ++ op_sral_l = OPRL(0x12, 0x4A), ++ op_roll_l = OPRL(0x12, 0x4B), // SW8A ++ op_sllw_l = OPRL(0x12, 0x4C), ++ op_srlw_l = OPRL(0x12, 0x4D), ++ op_sraw_l = OPRL(0x12, 0x4E), ++ op_rolw_l = OPRL(0x12, 0x4F), // SW8A ++ op_extlb_l = OPRL(0x12, 0x50), // 0x12.50~0x12.57 ++ op_extlh_l = OPRL(0x12, 0x51), ++ op_extlw_l = OPRL(0x12, 0x52), ++ op_extll_l = OPRL(0x12, 0x53), ++ op_exthb_l = OPRL(0x12, 0x54), ++ op_exthh_l = OPRL(0x12, 0x55), ++ op_exthw_l = OPRL(0x12, 0x56), ++ op_exthl_l = OPRL(0x12, 0x57), ++ op_masklb_l = OPRL(0x12, 0x60), // 0x12.60~0x12.67 ++ op_masklh_l = OPRL(0x12, 0x61), ++ op_masklw_l = OPRL(0x12, 0x62), ++ op_maskll_l = OPRL(0x12, 0x63), ++ op_maskhb_l = OPRL(0x12, 0x64), ++ op_maskhh_l = OPRL(0x12, 0x65), ++ op_maskhw_l = OPRL(0x12, 0x66), ++ op_maskhl_l = OPRL(0x12, 0x67), ++ op_zap_l = OPRL(0x12, 0x68), ++ op_zapnot_l = OPRL(0x12, 0x69), ++ op_sextb_l = OPRL(0x12, 0x6A), ++ op_sexth_l = OPRL(0x12, 0x6B), ++ op_cmpgeb_l = OPRL(0x12, 0x6C), // 0x12.6C ++}; ++ ++enum Opcode_ops_sel_l { ++ op_seleq_l = TOPRL(0x13, 0x0), ++ op_selge_l = TOPRL(0x13, 0x1), ++ op_selgt_l = TOPRL(0x13, 0x2), ++ op_selle_l = TOPRL(0x13, 0x3), ++ op_sellt_l = TOPRL(0x13, 0x4), ++ op_selne_l = TOPRL(0x13, 0x5), ++ op_sellbc_l = TOPRL(0x13, 0x6), ++ op_sellbs_l = TOPRL(0x13, 0x7) ++}; ++ ++enum Opcode_ops_bra { ++ op_br = BRA(0x04), ++ op_bsr = BRA(0x05), ++ op_beq = BRA(0x30), ++ op_bne = BRA(0x31), ++ op_blt = BRA(0x32), ++ op_ble = BRA(0x33), ++ op_bgt = BRA(0x34), ++ op_bge = BRA(0x35), ++ op_blbc = BRA(0x36), ++ op_blbs = BRA(0x37), ++ op_fbeq = BRA(0x38), ++ op_fbne = BRA(0x39), ++ op_fblt = BRA(0x3A), ++ op_fble = BRA(0x3B), ++ op_fbgt = BRA(0x3C), ++ op_fbge = BRA(0x3D) ++}; ++ ++enum Opcode_ops_fp { ++ op_fadds = OFP(0x18, 0x00), ++ op_faddd = OFP(0x18, 0x01), ++ op_fsubs = OFP(0x18, 0x02), ++ op_fsubd = OFP(0x18, 0x03), ++ op_fmuls = OFP(0x18, 0x04), ++ op_fmuld = OFP(0x18, 0x05), ++ op_fdivs = OFP(0x18, 0x06), ++ op_fdivd = OFP(0x18, 0x07), ++ op_fsqrts = OFP(0x18, 0x08), ++ op_fsqrtd = OFP(0x18, 0x09), ++ op_fcmpeq = OFP(0x18, 0x10), ++ op_fcmple = OFP(0x18, 0x11), ++ op_fcmplt = OFP(0x18, 0x12), ++ op_fcmpun = OFP(0x18, 0x13), ++ op_fcvtsd = OFP(0x18, 0x20), ++ op_fcvtds = OFP(0x18, 0x21), ++ op_fcvtdl_g = OFP(0x18, 0x22), // lx_fcvtdl ++ op_fcvtdl_p = OFP(0x18, 0x23), ++ op_fcvtdl_z = OFP(0x18, 0x24), ++ op_fcvtdl_n = OFP(0x18, 0x25), // lx_fcvtdl ++ op_fcvtdl = OFP(0x18, 0x27), ++ op_fcvtwl = OFP(0x18, 0x28), ++ op_fcvtlw = OFP(0x18, 0x29), ++ op_fcvtls = OFP(0x18, 0x2D), ++ op_fcvtld = OFP(0x18, 0x2F), ++ op_fcvths = OFP(0x18, 0x2E), ++ op_fcvtsh = OFP(0x1B, 0x37), ++ op_cmovdl = OFP(0x10, 0x72), ++ op_cmovdl_g = OFP(0x10, 0x74), ++ op_cmovdl_p = OFP(0x10, 0x7A), ++ op_cmovdl_z = OFP(0x10, 0x7C), ++ op_cmovdl_n = OFP(0x10, 0x80), ++ op_cmovdlu = OFP(0x10, 0x81), ++ op_cmovdlu_g = OFP(0x10, 0x82), ++ op_cmovdlu_p = OFP(0x10, 0x83), ++ op_cmovdlu_z = OFP(0x10, 0x84), ++ op_cmovdlu_n = OFP(0x10, 0x85), ++ op_cmovdwu = OFP(0x10, 0x86), ++ op_cmovdwu_g = OFP(0x10, 0x87), ++ op_cmovdwu_p = OFP(0x10, 0x88), ++ op_cmovdwu_z = OFP(0x10, 0x89), ++ op_cmovdwu_n = OFP(0x10, 0x8A), ++ op_cmovdw = OFP(0x10, 0x8B), ++ op_cmovdw_g = OFP(0x10, 0x8C), ++ op_cmovdw_p = OFP(0x10, 0x8D), ++ op_cmovdw_z = OFP(0x10, 0x8E), ++ op_cmovdw_n = OFP(0x10, 0x8F), ++ op_cmovls = OFP(0x18, 0x48), ++ op_cmovws = OFP(0x18, 0x49), ++ op_cmovld = OFP(0x18, 0x4a), ++ op_cmovwd = OFP(0x18, 0x4b), ++ op_cmovuls = OFP(0x18, 0x4c), ++ op_cmovuws = OFP(0x18, 0x4d), ++ op_cmovuld = OFP(0x18, 0x4e), ++ op_cmovuwd = OFP(0x18, 0x4f), ++ op_fcpys = OFP(0x18, 0x30), ++ op_fcpyse = OFP(0x18, 0x31), ++ op_fcpysn = OFP(0x18, 0x32), ++ op_ifmovs = OFP(0x18, 0x40), ++ op_ifmovd = OFP(0x18, 0x41), ++ op_rfpcr = OFP(0x18, 0x50), ++ op_wfpcr = OFP(0x18, 0x51), ++ op_setfpec0 = OFP(0x18, 0x54), ++ op_setfpec1 = OFP(0x18, 0x55), ++ op_setfpec2 = OFP(0x18, 0x56), ++ op_setfpec3 = OFP(0x18, 0x57), ++ op_frecs = OFP(0x18, 0x58), // SW8A ++ op_frecd = OFP(0x18, 0x59), // SW8A ++ op_fris = OFP(0x18, 0x5A), // SW8A ++ op_fris_g = OFP(0x18, 0x5B), // SW8A ++ op_fris_p = OFP(0x18, 0x5C), // SW8A ++ op_fris_z = OFP(0x18, 0x5D), // SW8A ++ op_fris_n = OFP(0x18, 0x5F), // SW8A ++ op_frid = OFP(0x18, 0x60), // SW8A ++ op_frid_g = OFP(0x18, 0x61), // SW8A ++ op_frid_p = OFP(0x18, 0x62), // SW8A ++ op_frid_z = OFP(0x18, 0x63), // SW8A ++ op_frid_n = OFP(0x18, 0x64), // SW8A ++ op_vaddw = OFP(0x1A, 0x00), ++ op_vsubw = OFP(0x1A, 0x01), ++ op_vcmpgew = OFP(0x1A, 0x02), ++ op_vcmpeqw = OFP(0x1A, 0x03), ++ op_vcmplew = OFP(0x1A, 0x04), ++ op_vcmpltw = OFP(0x1A, 0x05), ++ op_vcmpulew = OFP(0x1A, 0x06), ++ op_vcmpultw = OFP(0x1A, 0x07), ++ op_vsllw = OFP(0x1A, 0x08), ++ op_vsrlw = OFP(0x1A, 0x09), ++ op_vsraw = OFP(0x1A, 0x0A), ++ op_vrolw = OFP(0x1A, 0x0B), ++ op_sllow = OFP(0x1A, 0x0C), ++ op_srlow = OFP(0x1A, 0x0D), ++ op_vaddl = OFP(0x1A, 0x0E), ++ op_vsubl = OFP(0x1A, 0x0F), ++ op_vsllb = OFP(0x1A, 0x10), // SW8A ++ op_vsrlb = OFP(0x1A, 0x11), // SW8A ++ op_vsrab = OFP(0x1A, 0x12), // SW8A ++ op_vrolb = OFP(0x1A, 0x13), // SW8A ++ op_vsllh = OFP(0x1A, 0x14), // SW8A ++ op_vsrlh = OFP(0x1A, 0x15), // SW8A ++ op_vsrah = OFP(0x1A, 0x16), // SW8A ++ op_vrolh = OFP(0x1A, 0x17), // SW8A ++ op_ctpopow = OFP(0x1A, 0x18), ++ op_ctlzow = OFP(0x1A, 0x19), ++ op_vslll = OFP(0x1A, 0x1A), // SW8A ++ op_vsrll = OFP(0x1A, 0x1B), // SW8A ++ op_vsral = OFP(0x1A, 0x1C), // SW8A ++ op_vroll = OFP(0x1A, 0x1D), // SW8A ++ op_vmaxb = OFP(0x1A, 0x1E), // SW8A ++ op_vminb = OFP(0x1A, 0x1F), // SW8A ++ op_vucaddw = OFP(0x1A, 0x40), ++ op_vucsubw = OFP(0x1A, 0x41), ++ op_vucaddh = OFP(0x1A, 0x42), ++ op_vucsubh = OFP(0x1A, 0x43), ++ op_vucaddb = OFP(0x1A, 0x44), ++ op_vucsubb = OFP(0x1A, 0x45), ++ op_sraow = OFP(0x1A, 0x46), // SW8A ++ op_vsumw = OFP(0x1A, 0x47), // SW8A ++ op_vsuml = OFP(0x1A, 0x48), // SW8A ++ op_vcmpueqb = OFP(0x1A, 0x4B), // SW8A ++ op_vcmpugtb = OFP(0x1A, 0x4C), // SW8A ++ op_vmaxh = OFP(0x1A, 0x50), // SW8A ++ op_vminh = OFP(0x1A, 0x51), // SW8A ++ op_vmaxw = OFP(0x1A, 0x52), // SW8A ++ op_vminw = OFP(0x1A, 0x53), // SW8A ++ op_vmaxl = OFP(0x1A, 0x54), // SW8A ++ op_vminl = OFP(0x1A, 0x55), // SW8A ++ op_vumaxb = OFP(0x1A, 0x56), // SW8A ++ op_vuminb = OFP(0x1A, 0x57), // SW8A ++ op_vumaxh = OFP(0x1A, 0x58), // SW8A ++ op_vuminh = OFP(0x1A, 0x59), // SW8A ++ op_vumaxw = OFP(0x1A, 0x5A), // SW8A ++ op_vuminw = OFP(0x1A, 0x5B), // SW8A ++ op_vumaxl = OFP(0x1A, 0x5C), // SW8A ++ op_vuminl = OFP(0x1A, 0x5D), // SW8A ++ op_vsm3msw = OFP(0x1A, 0x67), // SW8A, ENCRYPT ++ op_vsm4r = OFP(0x1A, 0x69), // SW8A, ENCRYPT ++ op_vbinvw = OFP(0x1A, 0x6A), // SW8A, ENCRYPT ++ op_vadds = OFP(0x1A, 0x80), ++ op_vaddd = OFP(0x1A, 0x81), ++ op_vsubs = OFP(0x1A, 0x82), ++ op_vsubd = OFP(0x1A, 0x83), ++ op_vmuls = OFP(0x1A, 0x84), ++ op_vmuld = OFP(0x1A, 0x85), ++ op_vdivs = OFP(0x1A, 0x86), ++ op_vdivd = OFP(0x1A, 0x87), ++ op_vsqrts = OFP(0x1A, 0x88), ++ op_vsqrtd = OFP(0x1A, 0x89), ++ op_vfcmpeq = OFP(0x1A, 0x8C), ++ op_vfcmple = OFP(0x1A, 0x8D), ++ op_vfcmplt = OFP(0x1A, 0x8E), ++ op_vfcmpun = OFP(0x1A, 0x8F), ++ op_vcpys = OFP(0x1A, 0x90), ++ op_vcpyse = OFP(0x1A, 0x91), ++ op_vcpysn = OFP(0x1A, 0x92), ++ op_vsums = OFP(0x1A, 0x93), // SW8A ++ op_vsumd = OFP(0x1A, 0x94), // SW8A ++ op_vfcvtsd = OFP(0x1A, 0x95), // SW8A ++ op_vfcvtds = OFP(0x1A, 0x96), // SW8A ++ op_vfcvtls = OFP(0x1A, 0x99), // SW8A ++ op_vfcvtld = OFP(0x1A, 0x9A), // SW8A ++ op_vfcvtdl = OFP(0x1A, 0x9B), // SW8A ++ op_vfcvtdl_g = OFP(0x1A, 0x9C), // SW8A ++ op_vfcvtdl_p = OFP(0x1A, 0x9D), // SW8A ++ op_vfcvtdl_z = OFP(0x1A, 0x9E), // SW8A ++ op_vfcvtdl_n = OFP(0x1A, 0x9F), // SW8A ++ op_vfris = OFP(0x1A, 0xA0), // SW8A ++ op_vfris_g = OFP(0x1A, 0xA1), // SW8A ++ op_vfris_p = OFP(0x1A, 0xA2), // SW8A ++ op_vfris_z = OFP(0x1A, 0xA3), // SW8A ++ op_vfris_n = OFP(0x1A, 0xA4), // SW8A ++ op_vfrid = OFP(0x1A, 0xA5), // SW8A ++ op_vfrid_g = OFP(0x1A, 0xA6), // SW8A ++ op_vfrid_p = OFP(0x1A, 0xA7), // SW8A ++ op_vfrid_z = OFP(0x1A, 0xA8), // SW8A ++ op_vfrid_n = OFP(0x1A, 0xA9), // SW8A ++ op_vfrecs = OFP(0x1A, 0xAA), // SW8A ++ op_vfrecd = OFP(0x1A, 0xAB), // SW8A ++ op_vmaxs = OFP(0x1A, 0xAC), // SW8A ++ op_vmins = OFP(0x1A, 0xAD), // SW8A ++ op_vmaxd = OFP(0x1A, 0xAE), // SW8A ++ op_vmind = OFP(0x1A, 0xAF), // SW8A ++ ++ op_vbisw = PSE_LOGX(0x14, 0x30), ++ op_vxorw = PSE_LOGX(0x14, 0x3c), ++ op_vandw = PSE_LOGX(0x14, 0xc0), ++ op_veqvw = PSE_LOGX(0x14, 0xc3), ++ op_vornotw = PSE_LOGX(0x14, 0xf3), ++ op_vbicw = PSE_LOGX(0x14, 0xfc) ++}; ++ ++enum Opcode_ops_fpl { ++ op_vaddw_l = OFP(0x1A, 0x20), ++ op_vsubw_l = OFP(0x1A, 0x21), ++ op_vcmpgew_l = OFP(0x1A, 0x22), ++ op_vcmpeqw_l = OFP(0x1A, 0x23), ++ op_vcmplew_l = OFP(0x1A, 0x24), ++ op_vcmpltw_l = OFP(0x1A, 0x25), ++ op_vcmpulew_l = OFP(0x1A, 0x26), ++ op_vcmpultw_l = OFP(0x1A, 0x27), ++ op_vsllw_l = OFP(0x1A, 0x28), ++ op_vsrlw_l = OFP(0x1A, 0x29), ++ op_vsraw_l = OFP(0x1A, 0x2A), ++ op_vrolw_l = OFP(0x1A, 0x2B), ++ op_sllow_l = OFP(0x1A, 0x2C), ++ op_srlow_l = OFP(0x1A, 0x2D), ++ op_vaddl_l = OFP(0x1A, 0x2E), ++ op_vsubl_l = OFP(0x1A, 0x2F), ++ op_vsllb_l = OFP(0x1A, 0x30), // SW8A ++ op_vsrlb_l = OFP(0x1A, 0x31), // SW8A ++ op_vsrab_l = OFP(0x1A, 0x32), // SW8A ++ op_vrolb_l = OFP(0x1A, 0x33), // SW8A ++ op_vsllh_l = OFP(0x1A, 0x34), // SW8A ++ op_vsrlh_l = OFP(0x1A, 0x35), // SW8A ++ op_vsrah_l = OFP(0x1A, 0x36), // SW8A ++ op_vrolh_l = OFP(0x1A, 0x37), // SW8A ++ op_vslll_l = OFP(0x1A, 0x3A), // SW8A ++ op_vsrll_l = OFP(0x1A, 0x3B), // SW8A ++ op_vsral_l = OFP(0x1A, 0x3C), // SW8A ++ op_vroll_l = OFP(0x1A, 0x3D), // SW8A ++ op_vucaddw_l = OFP(0x1A, 0x60), ++ op_vucsubw_l = OFP(0x1A, 0x61), ++ op_vucaddh_l = OFP(0x1A, 0x62), ++ op_vucsubh_l = OFP(0x1A, 0x63), ++ op_vucaddb_l = OFP(0x1A, 0x64), ++ op_vucsubb_l = OFP(0x1A, 0x65), ++ op_sraow_l = OFP(0x1A, 0x66), // SW8A ++ op_vsm4key_l = OFP(0x1A, 0x68), // SW8A, ENCRYPT ++ op_vcmpueqb_l = OFP(0x1A, 0x6B), // SW8A ++ op_vcmpugtb_l = OFP(0x1A, 0x6C), // SW8A ++ op_vfcvtsh_l = OFP(0x1B, 0x35), // SW8A ++ op_vfcvths_l = OFP(0x1B, 0x36) // SW8A ++}; ++ ++enum Opcode_ops_fma { ++ op_fmas = FMA(0x19, 0x00), ++ op_fmad = FMA(0x19, 0x01), ++ op_fmss = FMA(0x19, 0x02), ++ op_fmsd = FMA(0x19, 0x03), ++ op_fnmas = FMA(0x19, 0x04), ++ op_fnmad = FMA(0x19, 0x05), ++ op_fnmss = FMA(0x19, 0x06), ++ op_fnmsd = FMA(0x19, 0x07), ++ op_fseleq = FMA(0x19, 0x10), ++ op_fselne = FMA(0x19, 0x11), ++ op_fsellt = FMA(0x19, 0x12), ++ op_fselle = FMA(0x19, 0x13), ++ op_fselgt = FMA(0x19, 0x14), ++ op_fselge = FMA(0x19, 0x15), ++ op_vmas = FMA(0x1B, 0x00), ++ op_vmad = FMA(0x1B, 0x01), ++ op_vmss = FMA(0x1B, 0x02), ++ op_vmsd = FMA(0x1B, 0x03), ++ op_vnmas = FMA(0x1B, 0x04), ++ op_vnmad = FMA(0x1B, 0x05), ++ op_vnmss = FMA(0x1B, 0x06), ++ op_vnmsd = FMA(0x1B, 0x07), ++ op_vfseleq = FMA(0x1B, 0x10), ++ op_vfsellt = FMA(0x1B, 0x12), ++ op_vfselle = FMA(0x1B, 0x13), ++ op_vseleqw = FMA(0x1B, 0x18), ++ op_vsellbcw = FMA(0x1B, 0x19), ++ op_vselltw = FMA(0x1B, 0x1A), ++ op_vsellew = FMA(0x1B, 0x1B), ++ op_vcpyw = FMA(0x1B, 0x24), ++ op_vcpyf = FMA(0x1B, 0x25), ++ op_vconw = FMA(0x1B, 0x26), ++ op_vshfw = FMA(0x1B, 0x27), ++ op_vcons = FMA(0x1B, 0x28), ++ op_vcond = FMA(0x1B, 0x29), ++ op_vinsectlh = FMA(0x1B, 0x2C), // SW8A ++ op_vinsectlw = FMA(0x1B, 0x2D), // SW8A ++ op_vinsectll = FMA(0x1B, 0x2E), // SW8A ++ op_vinsectlb = FMA(0x1B, 0x2F), // SW8A ++ op_vshfqb = FMA(0x1B, 0x31), // SW8A ++ op_vcpyh = FMA(0x1B, 0x32), // SW8A ++ op_vcpyb = FMA(0x1B, 0x33) // SW8A ++}; ++ ++enum Opcode_ops_fmal { ++ op_vinsw_l = FMA(0x1B, 0x20), ++ op_vinsf_l = FMA(0x1B, 0x21), ++ op_vextw_l = FMA(0x1B, 0x22), ++ op_vextf_l = FMA(0x1B, 0x23), ++ op_vinsb_l = FMA(0x1B, 0x2A), // SW8A ++ op_vinsh_l = FMA(0x1B, 0x2B), // SW8A ++ op_vshfq_l = FMA(0x1B, 0x30), // SW8A ++ op_vsm3r_l = FMA(0x1B, 0x34), // SW8A, ENCRYPT ++ op_vseleqw_l = FMA(0x1B, 0x38), ++ op_vsellbcw_l = FMA(0x1B, 0x39), ++ op_vselltw_l = FMA(0x1B, 0x3A), ++ op_vsellew_l = FMA(0x1B, 0x3B) ++}; ++ ++enum Opcode_ops_extra { ++ op_sys_call = PCD(0x00), ++ op_memb = MFC(0x06, 0x0000), ++ op_imemb = MFC(0x06, 0x0001), // SW8A ++ op_wmemb = MFC(0x06, 0x0002), // SW8A ++ op_rtc = MFC(0x06, 0x0020), ++ op_rcid = MFC(0x06, 0x0040), ++ op_halt = MFC(0x06, 0x0080), ++ op_rd_f = MFC(0x06, 0x1000), // SW2F ++ op_wr_f = MFC(0x06, 0x1020), // SW2F ++ op_rtid = MFC(0x06, 0x1040), ++ op_csrrs = CSR(0x06, 0xFC), // SW8A ++ op_csrrc = CSR(0x06, 0xFD), // SW8A ++ op_csrr = CSR(0x06, 0xFE), ++ op_csrw = CSR(0x06, 0xFF), ++ op_pri_ret = PRIRET(0x07, 0x0), ++ op_vlog = LOGX(0x14, 0x00), ++ op_lbr = PCD(0x1D), // SW8A ++ op_dpfhr = ATMEM(0x1E, 0xE), // SW8A ++ op_dpfhw = ATMEM(0x1E, 0xF), // SW8A ++}; ++ ++enum Opcode_ops_simulator { op_trap = PCD(0x1F) }; ++ ++enum TrapCode : uint32_t { BREAK = 0, REDIRECT = 1 }; ++ ++// ----- Emulated conditions. ++// On SW64 we use this enum to abstract from conditional branch instructions. ++// The 'U' prefix is used to specify unsigned comparisons. ++// Opposite conditions must be paired as odd/even numbers ++// because 'NegateCondition' function flips LSB to negate condition. ++enum Condition { ++ overflow = 0, ++ no_overflow = 1, ++ Uless = 2, ++ Ugreater_equal = 3, ++ Uless_equal = 4, ++ Ugreater = 5, ++ equal = 6, ++ not_equal = 7, // Unordered or Not Equal. ++ negative = 8, ++ positive = 9, ++ parity_even = 10, ++ parity_odd = 11, ++ less = 12, ++ greater_equal = 13, ++ less_equal = 14, ++ greater = 15, ++ ueq = 16, // Unordered or Equal. ++ ogl = 17, // Ordered and Not Equal. ++ cc_always = 18, ++ ++ // Aliases. ++ carry = Uless, ++ not_carry = Ugreater_equal, ++ zero = equal, ++ eq = equal, ++ not_zero = not_equal, ++ ne = not_equal, ++ nz = not_equal, ++ sign = negative, ++ not_sign = positive, ++ mi = negative, ++ pl = positive, ++ hi = Ugreater, ++ ls = Uless_equal, ++ ge = greater_equal, ++ lt = less, ++ gt = greater, ++ le = less_equal, ++ hs = Ugreater_equal, ++ lo = Uless, ++ al = cc_always, ++ ult = Uless, ++ uge = Ugreater_equal, ++ ule = Uless_equal, ++ ugt = Ugreater, ++ ++ // Unified cross-platform condition names/aliases. ++ kEqual = equal, ++ kNotEqual = not_equal, ++ kLessThan = less, ++ kGreaterThan = greater, ++ kLessThanEqual = less_equal, ++ kGreaterThanEqual = greater_equal, ++ kUnsignedLessThan = Uless, ++ kUnsignedGreaterThan = Ugreater, ++ kUnsignedLessThanEqual = Uless_equal, ++ kUnsignedGreaterThanEqual = Ugreater_equal, ++ kOverflow = overflow, ++ kNoOverflow = no_overflow, ++ kZero = equal, ++ kNotZero = not_equal, ++}; ++ ++// Returns the equivalent of !cc. ++inline Condition NegateCondition(Condition cc) { ++ DCHECK(cc != cc_always); ++ return static_cast(cc ^ 1); ++} ++ ++inline Condition NegateFpuCondition(Condition cc) { ++ DCHECK(cc != cc_always); ++ switch (cc) { ++ case ult: ++ return ge; ++ case ugt: ++ return le; ++ case uge: ++ return lt; ++ case ule: ++ return gt; ++ case lt: ++ return uge; ++ case gt: ++ return ule; ++ case ge: ++ return ult; ++ case le: ++ return ugt; ++ case eq: ++ return ne; ++ case ne: ++ return eq; ++ case ueq: ++ return ogl; ++ case ogl: ++ return ueq; ++ default: ++ return cc; ++ } ++} ++ ++// ----- Coprocessor conditions. ++enum FPUCondition { ++ kNoFPUCondition = -1, ++ ++ F = 0x00, // False. ++ UN = 0x01, // Unordered. ++ EQ = 0x02, // Equal. ++ UEQ = 0x03, // Unordered or Equal. ++ OLT = 0x04, // Ordered or Less Than, on Sw64 release < 3. ++ LT = 0x04, // Ordered or Less Than, on Sw64 release >= 3. ++ ULT = 0x05, // Unordered or Less Than. ++ OLE = 0x06, // Ordered or Less Than or Equal, on Sw64 release < 3. ++ LE = 0x06, // Ordered or Less Than or Equal, on Sw64 release >= 3. ++ ULE = 0x07, // Unordered or Less Than or Equal. ++ ++ // Following constants are available on Sw64 release >= 3 only. ++ ORD = 0x11, // Ordered, on Sw64 release >= 3. ++ UNE = 0x12, // Not equal, on Sw64 release >= 3. ++ NE = 0x13, // Ordered Greater Than or Less Than. on Sw64 >= 3 only. ++}; ++ ++// FPU rounding modes. ++enum FPURoundingMode { ++ RN = 0b00, // Round to Nearest. ++ RZ = 0b01, // Round towards zero. ++ RP = 0b10, // Round towards Plus Infinity. ++ RM = 0b11, // Round towards Minus Infinity. ++ ++ // Aliases. ++ kRoundToNearest = RN, ++ kRoundToZero = RZ, ++ kRoundToPlusInf = RP, ++ kRoundToMinusInf = RM, ++ ++ mode_round = RN, ++ mode_ceil = RP, ++ mode_floor = RM, ++ mode_trunc = RZ ++}; ++ ++const uint32_t kFPURoundingModeMask = 3; ++ ++enum CheckForInexactConversion { ++ kCheckForInexactConversion, ++ kDontCheckForInexactConversion ++}; ++ ++enum class MaxMinKind : int { kMin = 0, kMax = 1 }; ++ ++// ----------------------------------------------------------------------------- ++// Hints. ++ ++// Branch hints are not used on the SW64. They are defined so that they can ++// appear in shared function signatures, but will be ignored in SW64 ++// implementations. ++enum Hint { no_hint = 0 }; ++ ++inline Hint NegateHint(Hint hint) { return no_hint; } ++ ++// simulator custom instruction ++// const Instr rtCallRedirInstr = op_trap | REDIRECT; ++const Instr rtCallRedirInstr = BREAK | call_rt_redirected << 6; ++// A nop instruction. (Encoding of sll 0 0 0). ++const Instr nopInstr = op_sllw; ++ ++constexpr uint8_t kInstrSize = 4; ++constexpr uint8_t kInstrSizeLog2 = 2; ++ ++class InstructionBase { ++ public: ++ // Instruction type. ++ enum Type { ++ kRegisterType, ++ kImmediateType, ++ kJumpType, ++ kSwSyscallType, ++ kSwTransferanceType, ++ kSwStorageType, ++ kSwSimpleCalculationType, ++ kSwCompositeCalculationType, ++ kSwExtendType, ++ kSwSimulatorTrap, ++ kUnsupported = -1 ++ }; ++ ++ // Get the raw instruction bits. ++ inline Instr InstructionBits() const { ++ return *reinterpret_cast(this); ++ } ++ ++ // Set the raw instruction bits to value. ++ inline void SetInstructionBits(Instr value) { ++ *reinterpret_cast(this) = value; ++ } ++ ++ // Read one particular bit out of the instruction bits. ++ inline int Bit(int nr) const { return (InstructionBits() >> nr) & 1; } ++ ++ // Read a bit field out of the instruction bits. ++ inline int Bits(int hi, int lo) const { ++ return (InstructionBits() >> lo) & ((2U << (hi - lo)) - 1); ++ } ++ ++ // Accessors for the different named fields used in the SW64 encoding. ++ inline Opcode OpcodeValue() const { ++ return static_cast( ++ Bits(kOpcodeShift + kOpcodeBits - 1, kOpcodeShift)); ++ } ++ ++ inline int FunctionFieldRaw() const { ++ return InstructionBits() & kFunctionFieldMask; ++ } ++ ++ // Return the fields at their original place in the instruction encoding. ++ inline Opcode OpcodeFieldRaw() const { ++ return static_cast(InstructionBits() & kOpcodeMask); ++ } ++ ++ inline int OpcodeFieldValue() const { ++ return static_cast(InstructionBits() & kOpcodeMask); ++ } ++ ++ // Get the encoding type of the instruction. ++ inline Type InstructionType() const; ++ ++ protected: ++ InstructionBase() {} ++}; ++ ++template ++class InstructionGetters : public T { ++ public: ++ inline int RsValue() const { ++ return this->Bits(kRsShift + kRsBits - 1, kRsShift); ++ } ++ ++ inline int RtValue() const { ++ return this->Bits(kRtShift + kRtBits - 1, kRtShift); ++ } ++ ++ inline int RdValue() const { ++ return this->Bits(kRdShift + kRdBits - 1, kRdShift); ++ } ++ ++ inline int BaseValue() const { ++ DCHECK_EQ(this->InstructionType(), InstructionBase::kImmediateType); ++ return this->Bits(kBaseShift + kBaseBits - 1, kBaseShift); ++ } ++ ++ inline int SaValue() const { ++ DCHECK_EQ(this->InstructionType(), InstructionBase::kRegisterType); ++ return this->Bits(kSaShift + kSaBits - 1, kSaShift); ++ } ++ ++ inline int FunctionValue() const { ++ DCHECK(this->InstructionType() == InstructionBase::kRegisterType || ++ this->InstructionType() == InstructionBase::kImmediateType); ++ return this->Bits(kFunctionShift + kFunctionBits - 1, kFunctionShift); ++ } ++ ++ inline int FdValue() const { ++ return this->Bits(kFdShift + kFdBits - 1, kFdShift); ++ } ++ ++ inline int FsValue() const { ++ return this->Bits(kFsShift + kFsBits - 1, kFsShift); ++ } ++ ++ inline int FtValue() const { ++ return this->Bits(kFtShift + kFtBits - 1, kFtShift); ++ } ++ ++ inline int FrValue() const { ++ return this->Bits(kFrShift + kFrBits - 1, kFrShift); ++ } ++ ++ // Return the fields at their original place in the instruction encoding. ++ inline Opcode OpcodeFieldRaw() const { ++ return static_cast(this->InstructionBits() & kOpcodeMask); ++ } ++ ++ inline int OpcodeFieldValue() const { ++ return static_cast(this->InstructionBits() & kOpcodeMask); ++ } ++ ++ inline int SwGetMask(int hi, int lo) const { ++ int mask = 2 << (hi - lo); ++ mask -= 1; ++ return mask << lo; ++ } ++ ++ // the position of instruction function_code in SW is different in different ++ // type of instructions ++ inline int SwFunctionFieldRaw(int hi, int lo) const { ++ return this->InstructionBits() & SwGetMask(hi, lo); ++ } ++ ++ inline int SwImmOrDispFieldRaw(int hi, int lo) const { ++ return this->InstructionBits() & SwGetMask(hi, lo); ++ } ++ ++ inline int SwImmOrDispFieldValue(int hi, int lo) const { ++ int shift_len = 32 - (hi - lo + 1); ++ return (((this->InstructionBits() & SwGetMask(hi, lo)) >> lo) ++ << shift_len) >> ++ shift_len; ++ } ++ ++ inline int SwRaFieldRaw() const { ++ return this->InstructionBits() & sRaFieldMask; // SwGetMask(25,21); ++ } ++ inline int SwRbFieldRaw() const { ++ return this->InstructionBits() & sRbFieldMask; // SwGetMask(20,16); ++ } ++ inline int SwRcFieldRaw(int hi, int lo) const { ++ return this->InstructionBits() & SwGetMask(hi, lo); ++ } ++ inline int SwRdFieldRaw() const { ++ return this->InstructionBits() & sRdFieldMask; // SwGetMask(4,0); ++ } ++ ++ inline int SwFaFieldRaw() const { ++ return this->InstructionBits() & sRaFieldMask; // SwGetMask(25,21); ++ } ++ inline int SwFbFieldRaw() const { ++ return this->InstructionBits() & sRbFieldMask; // SwGetMask(20,16); ++ } ++ inline int SwFcFieldRaw(int hi, int lo) const { ++ return this->InstructionBits() & SwGetMask(hi, lo); ++ } ++ inline int SwFdFieldRaw() const { ++ return this->InstructionBits() & sRdFieldMask; // SwGetMask(4,0); ++ } ++ ++ inline int SwRaValue() const { ++ return this->Bits(sRaShift + sRaBits - 1, sRaShift); // Bits(25,21); ++ } ++ inline int SwRbValue() const { ++ return this->Bits(sRbShift + sRbBits - 1, sRbShift); // Bits(20,16); ++ } ++ // the position of rc register in SW is different in different type of ++ // instructions ++ inline int SwRcValue(int hi, int lo) const { return this->Bits(hi, lo); } ++ inline int SwRdValue() const { ++ return this->Bits(sRdShift + sRdBits - 1, sRdShift); // Bits(4,0); ++ } ++ inline int SwFaValue() const { ++ return this->Bits(sRaShift + sRaBits - 1, sRaShift); // Bits(25,21); ++ } ++ inline int SwFbValue() const { ++ return this->Bits(sRbShift + sRbBits - 1, sRbShift); // Bits(20,16); ++ } ++ // the position of rc register in SW is different in different type of ++ // instructions ++ inline int SwFcValue(int hi, int lo) const { return this->Bits(hi, lo); } ++ inline int SwFdValue() const { ++ return this->Bits(sRdShift + sRdBits - 1, sRdShift); // Bits(4,0); ++ } ++ ++ static bool IsForbiddenAfterBranchInstr(Instr instr); ++ ++ // Say if the instruction should not be used in a branch delay slot or ++ // immediately after a compact branch. ++ inline bool IsForbiddenAfterBranch() const { ++ return IsForbiddenAfterBranchInstr(this->InstructionBits()); ++ } ++ ++ inline bool IsForbiddenInBranchDelay() const { ++ return IsForbiddenAfterBranch(); ++ } ++ ++ // Say if the instruction is a break or a trap. ++ bool IsTrap() const; ++}; ++ ++class Instruction : public InstructionGetters { ++ public: ++ // Instructions are read of out a code stream. The only way to get a ++ // reference to an instruction is to convert a pointer. There is no way ++ // to allocate or create instances of class Instruction. ++ // Use the At(pc) function to create references to Instruction. ++ static Instruction* At(byte* pc) { ++ return reinterpret_cast(pc); ++ } ++ ++ private: ++ // We need to prevent the creation of instances of class Instruction. ++ DISALLOW_IMPLICIT_CONSTRUCTORS(Instruction); ++}; ++ ++// ----------------------------------------------------------------------------- ++// SW64 assembly various constants. ++ ++// C/C++ argument slots size. ++const int kCArgSlotCount = 0; ++ ++// TODO(plind): below should be based on kPointerSize ++// TODO(plind): find all usages and remove the needless instructions for n64. ++const int kCArgsSlotsSize = kCArgSlotCount * kInstrSize * 2; ++ ++const int kInvalidStackOffset = -1; ++const int kBranchReturnOffset = 1 * kInstrSize; ++ ++static const int kNegOffset = 0x00008000; ++ ++InstructionBase::Type InstructionBase::InstructionType() const { ++ switch (OpcodeFieldValue()) { ++ // cjq 20150317: add instruction 'sys_call' to do ++ case op_sys_call: ++ return kSwSyscallType; ++ ++ case op_call: ++ case op_ret: ++ case op_jmp: ++ case op_ldwe: ++ case op_ldse: ++ case op_ldde: ++ case op_vlds: ++ case op_vldd: ++ case op_vsts: ++ case op_vstd: ++ case op_ldbu: ++ case op_ldhu: ++ case op_ldw: ++ case op_ldl: ++ case op_ldl_u: ++ case op_flds: ++ case op_fldd: ++ case op_stb: ++ case op_sth: ++ case op_stw: ++ case op_stl: ++ case op_stl_u: ++ case op_fsts: ++ case op_fstd: ++ case op_ldi: ++ case op_ldih: ++ return kSwStorageType; ++ case OP(0x08): ++ return kSwStorageType; ++ case OP(0x06): ++ return kSwStorageType; // jzy 20150213:TODO ++ ++ case op_br: ++ case op_bsr: ++ case op_beq: ++ case op_bne: ++ case op_blt: ++ case op_ble: ++ case op_bgt: ++ case op_bge: ++ case op_blbc: ++ case op_blbs: ++ case op_fbeq: ++ case op_fbne: ++ case op_fblt: ++ case op_fble: ++ case op_fbgt: ++ case op_fbge: ++ return kSwTransferanceType; // ld 20150319 ++ ++ case OP(0x10): ++ case OP(0x12): ++ case OP(0x18): ++ return kSwSimpleCalculationType; ++ ++ case OP(0x11): ++ case OP(0x13): ++ case OP(0x19): ++ return kSwCompositeCalculationType; ++ ++ case op_trap: ++ return kSwSimulatorTrap; ++ ++ default: ++ return kImmediateType; ++ } ++ return kUnsupported; ++} ++ ++#undef OP ++#undef PCD ++#undef OPMEM ++#undef BRA ++ ++#undef OFP ++#undef FMA ++#undef MFC ++#undef MBR ++#undef OPR ++#undef OPRL ++#undef TOPR ++#undef TOPRL ++ ++#undef ATMEM ++#undef PRIRET ++#undef SPCD ++#undef EV6HWMEM ++#undef CSR ++ ++#undef LOGX ++#undef PSE_LOGX ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_CODEGEN_SW64_CONSTANTS_SW64_H_ +diff --git a/deps/v8/src/codegen/sw64/cpu-sw64.cc b/deps/v8/src/codegen/sw64/cpu-sw64.cc +new file mode 100644 +index 00000000..8faa01d5 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/cpu-sw64.cc +@@ -0,0 +1,40 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// CPU specific code for arm independent of OS goes here. ++ ++#include ++#include ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/codegen/assembler.h" ++#include "src/codegen/cpu-features.h" ++#include "src/codegen/macro-assembler.h" ++#include "src/execution/simulator.h" // For cache flushing. ++ ++namespace v8 { ++namespace internal { ++ ++void CpuFeatures::FlushICache(void* start, size_t size) { ++#if !defined(USE_SIMULATOR) ++ // Nothing to do, flushing no instructions. ++ if (size == 0) { ++ return; ++ } ++ ++#if defined(__sw_64__) ++ asm volatile( ++ "ldi $0, 266($31)\n" ++ "sys_call 0x83\n"); ++#else ++#error "Target Architecture are not supported in CpuFeatures::FlushICache" ++#endif ++#endif // !USE_SIMULATOR. ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/codegen/sw64/interface-descriptors-sw64-inl.h b/deps/v8/src/codegen/sw64/interface-descriptors-sw64-inl.h +new file mode 100644 +index 00000000..a1a76961 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/interface-descriptors-sw64-inl.h +@@ -0,0 +1,322 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_CODEGEN_SW64_INTERFACE_DESCRIPTORS_SW64_INL_H_ ++#define V8_CODEGEN_SW64_INTERFACE_DESCRIPTORS_SW64_INL_H_ ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/codegen/interface-descriptors.h" ++#include "src/execution/frames.h" ++ ++namespace v8 { ++namespace internal { ++ ++constexpr auto CallInterfaceDescriptor::DefaultRegisterArray() { ++ auto registers = RegisterArray(a0, a1, a2, a3, a4); ++ static_assert(registers.size() == kMaxBuiltinRegisterParams); ++ return registers; ++} ++ ++#if DEBUG ++template ++void StaticCallInterfaceDescriptor:: ++ VerifyArgumentRegisterCount(CallInterfaceDescriptorData* data, int argc) { ++ RegList allocatable_regs = data->allocatable_registers(); ++ if (argc >= 1) DCHECK(allocatable_regs.has(a0)); ++ if (argc >= 2) DCHECK(allocatable_regs.has(a1)); ++ if (argc >= 3) DCHECK(allocatable_regs.has(a2)); ++ if (argc >= 4) DCHECK(allocatable_regs.has(a3)); ++ if (argc >= 5) DCHECK(allocatable_regs.has(a4)); ++ if (argc >= 6) DCHECK(allocatable_regs.has(a5)); ++ // if (argc >= 7) DCHECK(allocatable_regs.has(t9)); ++ // if (argc >= 8) DCHECK(allocatable_regs.has(t10)); ++ // Additional arguments are passed on the stack. ++} ++#endif // DEBUG ++ ++// static ++constexpr auto WriteBarrierDescriptor::registers() { ++ return RegisterArray(a1, a5, a4, a0, a2, v0, a3, kContextRegister); ++} ++ ++// static ++constexpr Register LoadDescriptor::ReceiverRegister() { return a1; } ++// static ++constexpr Register LoadDescriptor::NameRegister() { return a2; } ++// static ++constexpr Register LoadDescriptor::SlotRegister() { return a0; } ++ ++// static ++constexpr Register LoadWithVectorDescriptor::VectorRegister() { return a3; } ++ ++// static ++constexpr Register KeyedLoadBaselineDescriptor::ReceiverRegister() { ++ return a1; ++} ++// static ++constexpr Register KeyedLoadBaselineDescriptor::NameRegister() { ++ return kInterpreterAccumulatorRegister; ++} ++// static ++constexpr Register KeyedLoadBaselineDescriptor::SlotRegister() { return a2; } ++ ++// static ++constexpr Register KeyedLoadWithVectorDescriptor::VectorRegister() { ++ return a3; ++} ++ ++// static ++constexpr Register KeyedHasICBaselineDescriptor::ReceiverRegister() { ++ return kInterpreterAccumulatorRegister; ++} ++// static ++constexpr Register KeyedHasICBaselineDescriptor::NameRegister() { return a1; } ++// static ++constexpr Register KeyedHasICBaselineDescriptor::SlotRegister() { return a2; } ++ ++// static ++constexpr Register KeyedHasICWithVectorDescriptor::VectorRegister() { ++ return a3; ++} ++ ++// static ++constexpr Register ++LoadWithReceiverAndVectorDescriptor::LookupStartObjectRegister() { ++ return a4; ++} ++ ++// static ++constexpr Register StoreDescriptor::ReceiverRegister() { return a1; } ++// static ++constexpr Register StoreDescriptor::NameRegister() { return a2; } ++// static ++constexpr Register StoreDescriptor::ValueRegister() { return a0; } ++// static ++constexpr Register StoreDescriptor::SlotRegister() { return a4; } ++ ++// static ++constexpr Register StoreWithVectorDescriptor::VectorRegister() { return a3; } ++ ++// static ++constexpr Register DefineKeyedOwnDescriptor::FlagsRegister() { return a5; } ++ ++// static ++constexpr Register StoreTransitionDescriptor::MapRegister() { return a5; } ++ ++// static ++constexpr Register ApiGetterDescriptor::HolderRegister() { return a0; } ++// static ++constexpr Register ApiGetterDescriptor::CallbackRegister() { return a3; } ++ ++// static ++constexpr Register GrowArrayElementsDescriptor::ObjectRegister() { return a0; } ++// static ++constexpr Register GrowArrayElementsDescriptor::KeyRegister() { return a3; } ++ ++// static ++constexpr Register BaselineLeaveFrameDescriptor::ParamsSizeRegister() { ++ return a2; ++} ++ ++// static ++constexpr Register BaselineLeaveFrameDescriptor::WeightRegister() { return a3; } ++ ++// static ++constexpr Register TypeConversionDescriptor::ArgumentRegister() { return a0; } ++ ++// static ++constexpr auto TypeofDescriptor::registers() { return RegisterArray(a0); } ++ ++// static ++constexpr auto CallTrampolineDescriptor::registers() { ++ // a1: target ++ // a0: number of arguments ++ return RegisterArray(a1, a0); ++} ++ ++// static ++constexpr auto CopyDataPropertiesWithExcludedPropertiesDescriptor::registers() { ++ // a1 : the source ++ // a0 : the excluded property count ++ return RegisterArray(a1, a0); ++} ++ ++// static ++constexpr auto ++CopyDataPropertiesWithExcludedPropertiesOnStackDescriptor::registers() { ++ // a1 : the source ++ // a0 : the excluded property count ++ // a2 : the excluded property base ++ return RegisterArray(a1, a0, a2); ++} ++ ++// static ++constexpr auto CallVarargsDescriptor::registers() { ++ // a0 : number of arguments (on the stack) ++ // a1 : the target to call ++ // a4 : arguments list length (untagged) ++ // a2 : arguments list (FixedArray) ++ return RegisterArray(a1, a0, a4, a2); ++} ++ ++// static ++constexpr auto CallForwardVarargsDescriptor::registers() { ++ // a1: the target to call ++ // a0: number of arguments ++ // a2: start index (to support rest parameters) ++ return RegisterArray(a1, a0, a2); ++} ++ ++// static ++constexpr auto CallFunctionTemplateDescriptor::registers() { ++ // a1 : function template info ++ // a0 : number of arguments (on the stack) ++ return RegisterArray(a1, a0); ++} ++ ++// static ++constexpr auto CallWithSpreadDescriptor::registers() { ++ // a0 : number of arguments (on the stack) ++ // a1 : the target to call ++ // a2 : the object to spread ++ return RegisterArray(a1, a0, a2); ++} ++ ++// static ++constexpr auto CallWithArrayLikeDescriptor::registers() { ++ // a1 : the target to call ++ // a2 : the arguments list ++ return RegisterArray(a1, a2); ++} ++ ++// static ++constexpr auto ConstructVarargsDescriptor::registers() { ++ // a0 : number of arguments (on the stack) ++ // a1 : the target to call ++ // a3 : the new target ++ // a4 : arguments list length (untagged) ++ // a2 : arguments list (FixedArray) ++ return RegisterArray(a1, a3, a0, a4, a2); ++} ++ ++// static ++constexpr auto ConstructForwardVarargsDescriptor::registers() { ++ // a1: the target to call ++ // a3: new target ++ // a0: number of arguments ++ // a2: start index (to support rest parameters) ++ return RegisterArray(a1, a3, a0, a2); ++} ++ ++// static ++constexpr auto ConstructWithSpreadDescriptor::registers() { ++ // a0 : number of arguments (on the stack) ++ // a1 : the target to call ++ // a3 : the new target ++ // a2 : the object to spread ++ return RegisterArray(a1, a3, a0, a2); ++} ++ ++// static ++constexpr auto ConstructWithArrayLikeDescriptor::registers() { ++ // a1 : the target to call ++ // a3 : the new target ++ // a2 : the arguments list ++ return RegisterArray(a1, a3, a2); ++} ++ ++// static ++constexpr auto ConstructStubDescriptor::registers() { ++ // a1: target ++ // a3: new target ++ // a0: number of arguments ++ return RegisterArray(a1, a3, a0); ++} ++ ++// static ++constexpr auto AbortDescriptor::registers() { return RegisterArray(a0); } ++ ++// static ++constexpr auto CompareDescriptor::registers() { return RegisterArray(a1, a0); } ++ ++// static ++constexpr auto Compare_BaselineDescriptor::registers() { ++ // a1: left operand ++ // a0: right operand ++ // a2: feedback slot ++ return RegisterArray(a1, a0, a2); ++} ++ ++// static ++constexpr auto BinaryOpDescriptor::registers() { return RegisterArray(a1, a0); } ++ ++// static ++constexpr auto BinaryOp_BaselineDescriptor::registers() { ++ // a1: left operand ++ // a0: right operand ++ // a2: feedback slot ++ return RegisterArray(a1, a0, a2); ++} ++ ++// static ++constexpr auto BinarySmiOp_BaselineDescriptor::registers() { ++ // a0: left operand ++ // a1: right operand ++ // a2: feedback slot ++ return RegisterArray(a0, a1, a2); ++} ++ ++// static ++constexpr auto ApiCallbackDescriptor::registers() { ++ // a1 : kApiFunctionAddress ++ // a2 : kArgc ++ // a3 : kCallData ++ // a0 : kHolder ++ return RegisterArray(a1, a2, a3, a0); ++} ++ ++// static ++constexpr auto InterpreterDispatchDescriptor::registers() { ++ return RegisterArray( ++ kInterpreterAccumulatorRegister, kInterpreterBytecodeOffsetRegister, ++ kInterpreterBytecodeArrayRegister, kInterpreterDispatchTableRegister); ++} ++ ++// static ++constexpr auto InterpreterPushArgsThenCallDescriptor::registers() { ++ // a0 : argument count ++ // a2 : address of first argument ++ // a1 : the target callable to be call ++ return RegisterArray(a0, a2, a1); ++} ++ ++// static ++constexpr auto InterpreterPushArgsThenConstructDescriptor::registers() { ++ // a0 : argument count ++ // a4 : address of the first argument ++ // a1 : constructor to call ++ // a3 : new target ++ // a2 : allocation site feedback if available, undefined otherwise ++ return RegisterArray(a0, a4, a1, a3, a2); ++} ++ ++// static ++constexpr auto ResumeGeneratorDescriptor::registers() { ++ // v0 : the value to pass to the generator ++ // a1 : the JSGeneratorObject to resume ++ return RegisterArray(v0, a1); ++} ++ ++// static ++constexpr auto RunMicrotasksEntryDescriptor::registers() { ++ return RegisterArray(a0, a1); ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 ++ ++#endif // V8_CODEGEN_SW64_INTERFACE_DESCRIPTORS_SW64_INL_H_ +diff --git a/deps/v8/src/codegen/sw64/macro-assembler-sw64.cc b/deps/v8/src/codegen/sw64/macro-assembler-sw64.cc +new file mode 100644 +index 00000000..57693f90 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/macro-assembler-sw64.cc +@@ -0,0 +1,5765 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include // For LONG_MIN, LONG_MAX. ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/base/bits.h" ++#include "src/base/division-by-constant.h" ++#include "src/codegen/assembler-inl.h" ++#include "src/codegen/callable.h" ++#include "src/codegen/code-factory.h" ++#include "src/codegen/external-reference-table.h" ++#include "src/codegen/interface-descriptors-inl.h" ++#include "src/codegen/macro-assembler.h" ++#include "src/codegen/register-configuration.h" ++#include "src/debug/debug.h" ++#include "src/deoptimizer/deoptimizer.h" ++#include "src/execution/frames-inl.h" ++#include "src/heap/memory-chunk.h" ++#include "src/init/bootstrapper.h" ++#include "src/logging/counters.h" ++#include "src/objects/heap-number.h" ++#include "src/runtime/runtime.h" ++#include "src/snapshot/snapshot.h" ++ ++#if V8_ENABLE_WEBASSEMBLY ++#include "src/wasm/wasm-code-manager.h" ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++// Satisfy cpplint check, but don't include platform-specific header. It is ++// included recursively via macro-assembler.h. ++#if 0 ++#include "src/codegen/sw64/macro-assembler-sw64.h" ++#endif ++ ++#define __ ACCESS_MASM(masm) ++ ++namespace v8 { ++namespace internal { ++ ++static inline bool IsZero(const Operand& rt) { ++ if (rt.is_reg()) { ++ return rt.rm() == zero_reg; ++ } else { ++ return rt.immediate() == 0; ++ } ++} ++ ++int MacroAssembler::RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode, ++ Register exclusion1, ++ Register exclusion2, ++ Register exclusion3) const { ++ int bytes = 0; ++ RegList exclusions = {exclusion1, exclusion2, exclusion3}; ++ RegList list = kJSCallerSaved - exclusions; ++ bytes += list.Count() * kPointerSize; ++ ++ if (fp_mode == SaveFPRegsMode::kSave) { ++ bytes += kCallerSavedFPU.Count() * kDoubleSize; ++ } ++ ++ return bytes; ++} ++ ++int MacroAssembler::PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1, ++ Register exclusion2, Register exclusion3) { ++ ASM_CODE_COMMENT(this); ++ int bytes = 0; ++ RegList exclusions = {exclusion1, exclusion2, exclusion3}; ++ RegList list = kJSCallerSaved - exclusions; ++ MultiPush(list); ++ bytes += list.Count() * kPointerSize; ++ ++ if (fp_mode == SaveFPRegsMode::kSave) { ++ MultiPushFPU(kCallerSavedFPU); ++ bytes += kCallerSavedFPU.Count() * kDoubleSize; ++ } ++ ++ return bytes; ++} ++ ++int MacroAssembler::PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1, ++ Register exclusion2, Register exclusion3) { ++ ASM_CODE_COMMENT(this); ++ int bytes = 0; ++ if (fp_mode == SaveFPRegsMode::kSave) { ++ MultiPopFPU(kCallerSavedFPU); ++ bytes += kCallerSavedFPU.Count() * kDoubleSize; ++ } ++ ++ RegList exclusions = {exclusion1, exclusion2, exclusion3}; ++ RegList list = kJSCallerSaved - exclusions; ++ MultiPop(list); ++ bytes += list.Count() * kPointerSize; ++ ++ return bytes; ++} ++ ++void MacroAssembler::LoadRoot(Register destination, RootIndex index) { ++ Ldl(destination, MemOperand(s4, RootRegisterOffsetForRootIndex(index))); ++} ++ ++void MacroAssembler::LoadRoot(Register destination, RootIndex index, ++ Condition cond, Register src1, ++ const Operand& src2) { ++ Branch(2, NegateCondition(cond), src1, src2); ++ Ldl(destination, MemOperand(s4, RootRegisterOffsetForRootIndex(index))); ++} ++ ++void MacroAssembler::PushCommonFrame(Register marker_reg) { ++ if (marker_reg.is_valid()) { ++ Push(ra, fp, marker_reg); ++ Addl(fp, sp, Operand(kPointerSize)); ++ } else { ++ Push(ra, fp); ++ mov(fp, sp); ++ } ++} ++ ++void MacroAssembler::PushStandardFrame(Register function_reg) { ++ int offset = -StandardFrameConstants::kContextOffset; ++ if (function_reg.is_valid()) { ++ Push(ra, fp, cp, function_reg, kJavaScriptCallArgCountRegister); ++ offset += 2 * kPointerSize; ++ } else { ++ Push(ra, fp, cp, kJavaScriptCallArgCountRegister); ++ offset += kPointerSize; ++ } ++ Addl(fp, sp, Operand(offset)); ++} ++ ++// Clobbers object, dst, value, and ra, if (ra_status == kRAHasBeenSaved) ++// The register 'object' contains a heap object pointer. The heap object ++// tag is shifted away. ++void MacroAssembler::RecordWriteField(Register object, int offset, ++ Register value, Register dst, ++ RAStatus ra_status, ++ SaveFPRegsMode save_fp, ++ SmiCheck smi_check) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(!AreAliased(value, dst, t11, object)); ++ // First, check if a write barrier is even needed. The tests below ++ // catch stores of Smis. ++ Label done; ++ ++ // Skip barrier if writing a smi. ++ if (smi_check == SmiCheck::kInline) { ++ JumpIfSmi(value, &done); ++ } ++ ++ // Although the object register is tagged, the offset is relative to the start ++ // of the object, so offset must be a multiple of kPointerSize. ++ DCHECK(IsAligned(offset, kPointerSize)); ++ ++ Addl(dst, object, Operand(offset - kHeapObjectTag)); ++ if (v8_flags.debug_code) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Label ok; ++ And(t11, dst, Operand(kPointerSize - 1)); ++ Branch(&ok, eq, t11, Operand(zero_reg)); ++ halt(); // stop("Unaligned cell in write barrier"); ++ bind(&ok); ++ } ++ ++ RecordWrite(object, dst, value, ra_status, save_fp, SmiCheck::kOmit); ++ ++ bind(&done); ++ ++ // Clobber clobbered input registers when running with the debug-code flag ++ // turned on to provoke errors. ++ if (v8_flags.debug_code) { ++ li(value, Operand(base::bit_cast(kZapValue + 4))); ++ li(dst, Operand(base::bit_cast(kZapValue + 8))); ++ } ++} ++ ++void MacroAssembler::MaybeSaveRegisters(RegList registers) { ++ if (registers.is_empty()) return; ++ MultiPush(registers); ++} ++ ++void MacroAssembler::MaybeRestoreRegisters(RegList registers) { ++ if (registers.is_empty()) return; ++ MultiPop(registers); ++} ++ ++void MacroAssembler::CallEphemeronKeyBarrier(Register object, ++ Register slot_address, ++ SaveFPRegsMode fp_mode) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(!AreAliased(object, slot_address)); ++ RegList registers = ++ WriteBarrierDescriptor::ComputeSavedRegisters(object, slot_address); ++ MaybeSaveRegisters(registers); ++ ++ Register object_parameter = WriteBarrierDescriptor::ObjectRegister(); ++ Register slot_address_parameter = ++ WriteBarrierDescriptor::SlotAddressRegister(); ++ ++ Push(object); ++ Push(slot_address); ++ Pop(slot_address_parameter); ++ Pop(object_parameter); ++ ++ Call(isolate()->builtins()->code_handle( ++ Builtins::GetEphemeronKeyBarrierStub(fp_mode)), ++ RelocInfo::CODE_TARGET); ++ MaybeRestoreRegisters(registers); ++} ++ ++void MacroAssembler::CallRecordWriteStubSaveRegisters(Register object, ++ Register slot_address, ++ SaveFPRegsMode fp_mode, ++ StubCallMode mode) { ++ DCHECK(!AreAliased(object, slot_address)); ++ RegList registers = ++ WriteBarrierDescriptor::ComputeSavedRegisters(object, slot_address); ++ MaybeSaveRegisters(registers); ++ ++ Register object_parameter = WriteBarrierDescriptor::ObjectRegister(); ++ Register slot_address_parameter = ++ WriteBarrierDescriptor::SlotAddressRegister(); ++ ++ Push(object); ++ Push(slot_address); ++ Pop(slot_address_parameter); ++ Pop(object_parameter); ++ ++ CallRecordWriteStub(object_parameter, slot_address_parameter, fp_mode, mode); ++ ++ MaybeRestoreRegisters(registers); ++} ++ ++void MacroAssembler::CallRecordWriteStub(Register object, Register slot_address, ++ SaveFPRegsMode fp_mode, ++ StubCallMode mode) { ++ // Use CallRecordWriteStubSaveRegisters if the object and slot registers ++ // need to be caller saved. ++ DCHECK_EQ(WriteBarrierDescriptor::ObjectRegister(), object); ++ DCHECK_EQ(WriteBarrierDescriptor::SlotAddressRegister(), slot_address); ++#if V8_ENABLE_WEBASSEMBLY ++ if (mode == StubCallMode::kCallWasmRuntimeStub) { ++ auto wasm_target = wasm::WasmCode::GetRecordWriteStub(fp_mode); ++ Call(wasm_target, RelocInfo::WASM_STUB_CALL); ++#else ++ if (false) { ++#endif ++ } else { ++ Builtin builtin = Builtins::GetRecordWriteStub(fp_mode); ++ CallBuiltin(builtin); ++ } ++} ++ ++// Clobbers object, address, value, and ra, if (ra_status == kRAHasBeenSaved) ++// The register 'object' contains a heap object pointer. The heap object ++// tag is shifted away. ++void MacroAssembler::RecordWrite(Register object, Register address, ++ Register value, RAStatus ra_status, ++ SaveFPRegsMode fp_mode, SmiCheck smi_check) { ++ DCHECK(!AreAliased(object, address, value, t11)); ++ DCHECK(!AreAliased(object, address, value, t12)); ++ ++ if (v8_flags.debug_code) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(!AreAliased(object, value, scratch)); ++ Ldl(scratch, MemOperand(address)); ++ Assert(eq, AbortReason::kWrongAddressOrValuePassedToRecordWrite, scratch, ++ Operand(value)); ++ } ++ ++ if (v8_flags.disable_write_barriers) { ++ return; ++ } ++ ++ // First, check if a write barrier is even needed. The tests below ++ // catch stores of smis and stores into the young generation. ++ Label done; ++ ++ if (smi_check == SmiCheck::kInline) { ++ DCHECK_EQ(0, kSmiTag); ++ JumpIfSmi(value, &done); ++ } ++ ++ CheckPageFlag(value, ++ value, // Used as scratch. ++ MemoryChunk::kPointersToHereAreInterestingMask, eq, &done); ++ CheckPageFlag(object, ++ value, // Used as scratch. ++ MemoryChunk::kPointersFromHereAreInterestingMask, eq, &done); ++ ++ // Record the actual write. ++ if (ra_status == kRAHasNotBeenSaved) { ++ Push(ra); ++ } ++ ++ Register slot_address = WriteBarrierDescriptor::SlotAddressRegister(); ++ DCHECK(!AreAliased(object, slot_address, value)); ++ mov(slot_address, address); ++ CallRecordWriteStub(object, slot_address, fp_mode); ++ ++ if (ra_status == kRAHasNotBeenSaved) { ++ pop(ra); ++ } ++ ++ bind(&done); ++ ++ // Clobber clobbered registers when running with the debug-code flag ++ // turned on to provoke errors. ++ if (v8_flags.debug_code) { ++ li(address, Operand(base::bit_cast(kZapValue + 12))); ++ li(value, Operand(base::bit_cast(kZapValue + 16))); ++ li(slot_address, Operand(base::bit_cast(kZapValue + 20))); ++ } ++} ++ ++// --------------------------------------------------------------------------- ++// Instruction macros. ++ ++void MacroAssembler::Addw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Addw, this); ++ if (rt.is_reg()) { ++ addw(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ addw(rs, (int)rt.immediate(), rd); ++ } else if (is_uint8(-rt.immediate()) && !MustUseReg(rt.rmode())) { ++ subw(rs, (int)-rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ addw(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Addl(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Addl, this); ++ if (rt.is_reg()) { ++ addl(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ addl(rs, (int)rt.immediate(), rd); ++ } else if (is_uint8(-rt.immediate()) && !MustUseReg(rt.rmode())) { ++ subl(rs, (int)-rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ addl(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Subw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Subw, this); ++ if (rt.is_reg()) { ++ subw(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(-rt.immediate()) && !MustUseReg(rt.rmode())) { ++ addw(rs, (int)-rt.immediate(), rd); ++ } else if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ subw(rs, (int)rt.immediate(), rd); ++ } else { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ subw(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Subl(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Subl, this); ++ if (rt.is_reg()) { ++ subl(rs, rt.rm(), rd); ++ } else if (is_uint8(-rt.immediate()) && !MustUseReg(rt.rmode())) { ++ addl(rs, (int)-rt.immediate(), rd); ++ } else if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ subl(rs, (int)rt.immediate(), rd); ++ } else { ++ DCHECK(rs != at); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, rt); ++ subl(rs, scratch, rd); ++ } ++} ++ ++void MacroAssembler::Mulw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Mulw, this); ++ if (rt.is_reg()) { ++ mulw(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ mulw(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ mulw(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Mulwh(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Mulwh, this); ++ if (rt.is_reg()) { ++ mull(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ mull(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ mull(rs, scratch, rd); ++ } ++ } ++ sral(rd, 32, rd); ++} ++//( unsigned rs[31..0] * unsigned rt[31..0] )>>32 --> rd [63..32] ++void MacroAssembler::Mulwhu(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Mulwhu, this); ++ if (rt.is_reg()) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ DCHECK(rt.rm() != scratch); ++ zapnot(rs, 0xf, scratch); ++ zapnot(rt.rm(), 0xf, rd); ++ mull(scratch, rd, rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ zapnot(rs, 0xf, scratch); ++ mull(scratch, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ zapnot(scratch, 0xf, scratch); ++ zapnot(rs, 0xf, rd); ++ mull(rd, scratch, rd); ++ } ++ } ++ sral(rd, 32, rd); ++} ++ ++void MacroAssembler::Mull(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Mull, this); ++ if (rt.is_reg()) { ++ mull(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ mull(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ mull(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Mullh(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Mullh, this); ++ if (rt.is_reg()) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire();//t3; ++ DCHECK(rs != scratch); ++ DCHECK(rt.rm() != scratch); ++ DCHECK(a5 != scratch); ++ umulh(rs, rt.rm(), a5); ++ srll(rs, 63, scratch); ++ mull(scratch, rt.rm(), scratch); ++ subl(a5, scratch, a5); ++ srll(rt.rm(), 63, scratch); ++ mull(scratch, rs, scratch); ++ subl(a5, scratch, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ DCHECK(a5 != scratch); ++ li(scratch, rt); ++ umulh(rs, scratch, rd); ++ srll(rs, 63, a5); ++ mull(a5, scratch, a5); ++ subl(rd, a5, rd); ++ srll(scratch, 63, a5); ++ mull(a5, rs, a5); ++ subl(rd, a5, rd); ++ } ++} ++ ++void MacroAssembler::Mullhu(Register rd, Register rs, const Operand& rt) { ++ if (rt.is_reg()) { ++ umulh(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ umulh(rs, (int)rt.immediate(), rd); ++ } else { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ umulh(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Divw(Register rd, Register rs, const Operand& rt) { ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, rd); ++ } ++} ++ ++void MacroAssembler::Divwu(Register rd, Register rs, const Operand& rt) { ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ zapnot(rs, 0xf, rs); ++ ++ if (rt.is_reg()) { ++ zapnot(rt.rm(), 0xf, rt.rm()); ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ zapnot(scratch, 0xf, scratch); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, rd); ++ } ++} ++ ++void MacroAssembler::Divl(Register rd, Register rs, const Operand& rt) { ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, rd); ++ } ++} ++ ++void MacroAssembler::Divlu(Register rd, Register rs, const Operand& rt) { ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, rd); ++ } ++} ++ ++void MacroAssembler::Modw(Register rd, Register rs, const Operand& rt) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(scratch != rs); ++ ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, scratch); ++ mulw(scratch, rt.rm(), scratch); ++ subw(rs, scratch, rd); ++ } else { ++ Register scratch2 = t12; ++ DCHECK(scratch2 != rs); ++ // li handles the relocation. ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, scratch2); ++ mulw(scratch, scratch2, scratch); ++ subw(rs, scratch, rd); ++ } ++} ++ ++void MacroAssembler::Modwu(Register rd, Register rs, const Operand& rt) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(scratch != rs); ++ zapnot(rs, 0xf, rs); ++ ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ zapnot(rt.rm(), 0xf, rt.rm()); ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, scratch); ++ mulw(scratch, rt.rm(), scratch); ++ subw(rs, scratch, rd); ++ } else { ++ Register scratch2 = t12; ++ DCHECK(scratch2 != rs); ++ // li handles the relocation. ++ li(scratch, rt); ++ zapnot(scratch, 0xf, scratch); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fcvtlw(fdest, fdest); ++ fimovs(fdest, scratch2); ++ mulw(scratch, scratch2, scratch); ++ subw(rs, scratch, rd); ++ } ++} ++ ++void MacroAssembler::Modl(Register rd, Register rs, const Operand& rt) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(scratch != rs); ++ ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, scratch); ++ mull(scratch, rt.rm(), scratch); ++ subl(rs, scratch, rd); ++ } else { ++ Register scratch2 = t12; ++ DCHECK(scratch2 != rs); ++ // li handles the relocation. ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, scratch2); ++ mull(scratch, scratch2, scratch); ++ subl(rs, scratch, rd); ++ } ++} ++ ++void MacroAssembler::Modlu(Register rd, Register rs, const Operand& rt) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(scratch != rs); ++ ++ FPURegister fsrc1 = f22; ++ FPURegister fsrc2 = f23; ++ FPURegister fdest = f24; ++ ++ if (rt.is_reg()) { ++ ifmovd(rs, fsrc1); ++ ifmovd(rt.rm(), fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, scratch); ++ mull(scratch, rt.rm(), scratch); ++ subl(rs, scratch, rd); ++ } else { ++ Register scratch2 = t12; ++ DCHECK(scratch2 != rs); ++ // li handles the relocation. ++ li(scratch, rt); ++ ifmovd(rs, fsrc1); ++ ifmovd(scratch, fsrc2); ++ fcvtld(fsrc1, fsrc1); ++ fcvtld(fsrc2, fsrc2); ++ fdivd(fsrc1, fsrc2, fdest); ++ fcvtdl_z(fdest, fdest); ++ fimovd(fdest, scratch2); ++ mull(scratch, scratch2, scratch); ++ subl(rs, scratch, rd); ++ } ++} ++ ++void MacroAssembler::Dmodu(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Dmodu, this); ++ UNREACHABLE(); ++} ++ ++void MacroAssembler::Fabs(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Fabs, this); ++ fcpys(f31, fs, fd); ++} ++ ++void MacroAssembler::Sllw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Sllw, this); ++ if (rt.is_reg()) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ and_(rt.rm(), 0x1f, scratch); ++ slll(rs, scratch, rd); ++ addw(rd, 0x0, rd); ++ } else { ++ slll(rs, ((int)rt.immediate()) & 0x1f, rd); ++ addw(rd, 0x0, rd); ++ } ++} ++ ++void MacroAssembler::Srlw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Srlw, this); ++ if (rt.is_reg()) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ and_(rt.rm(), 0x1f, scratch); ++ zapnot(rs, 0xf, rd); ++ srll(rd, scratch, rd); ++ addw(rd, 0x0, rd); ++ } else { ++ zapnot(rs, 0xf, rd); ++ srll(rd, ((int)rt.immediate()) & 0x1f, rd); ++ addw(rd, 0x0, rd); ++ } ++} ++ ++void MacroAssembler::Sraw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Sraw, this); ++ if (rt.is_reg()) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ and_(rt.rm(), 0x1f, scratch); ++ addw(rs, 0x0, rd); ++ sral(rd, scratch, rd); ++ } else { ++ addw(rs, 0x0, rd); ++ sral(rd, ((int)rt.immediate()) & 0x1f, rd); ++ } ++} ++ ++void MacroAssembler::And(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::And, this); ++ if (rt.is_reg()) { ++ and_(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && ++ !MustUseReg(rt.rmode())) { // 20181121 is_uint16 ++ and_(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ and_(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Or(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Or, this); ++ if (rt.is_reg()) { ++ or_(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && ++ !MustUseReg(rt.rmode())) { // 20181121 is_uint16 ++ or_(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ or_(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Xor(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Xor, this); ++ if (rt.is_reg()) { ++ xor_(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ xor_(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ xor_(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Nor(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Nor, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ if (rt.is_reg()) { ++ bis(rs, rt.rm(), scratch); ++ ornot(zero_reg, scratch, rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ bis(rs, (int)rt.immediate(), rd); ++ ornot(zero_reg, rd, rd); ++ } else { ++ // li handles the relocation. ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ bis(rs, scratch, scratch); ++ ornot(zero_reg, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Neg(Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Neg, this); ++ subl(zero_reg, rt.rm(), rs); ++} ++ ++void MacroAssembler::Cmplt(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmplt, this); ++ if (rt.is_reg()) { ++ cmplt(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ cmplt(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmplt(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Cmpult(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpult, this); ++ if (rt.is_reg()) { ++ cmpult(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ cmpult(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmpult(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Cmple(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmple, this); ++ if (rt.is_reg()) { ++ cmple(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ cmple(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmple(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Cmpule(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpule, this); ++ if (rt.is_reg()) { ++ cmpule(rs, rt.rm(), rd); ++ } else { ++ if (is_uint8(rt.immediate()) && !MustUseReg(rt.rmode())) { ++ cmpule(rs, (int)rt.immediate(), rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmpule(rs, scratch, rd); ++ } ++ } ++} ++ ++void MacroAssembler::Cmpge(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpge, this); ++ if (rt.is_reg()) { ++ cmple(rt.rm(), rs, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmple(scratch, rs, rd); ++ } ++} ++ ++void MacroAssembler::Cmpuge(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpuge, this); ++ if (rt.is_reg()) { ++ cmpule(rt.rm(), rs, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmpule(scratch, rs, rd); ++ } ++} ++ ++void MacroAssembler::Cmpgt(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpgt, this); ++ if (rt.is_reg()) { ++ cmplt(rt.rm(), rs, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmplt(scratch, rs, rd); ++ } ++} ++ ++void MacroAssembler::Cmpugt(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Cmpugt, this); ++ if (rt.is_reg()) { ++ cmpult(rt.rm(), rs, rd); ++ } else { ++ // li handles the relocation. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ DCHECK(rs != scratch); ++ li(scratch, rt); ++ cmpult(scratch, rs, rd); ++ } ++} ++ ++void MacroAssembler::Rolw(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Rolw, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ DCHECK(rd != scratch); ++ if (rt.is_reg()) { ++ Register scratch1 = (scratch == t11) ? a5 : t11; ++ Register scratch2 = t12; ++ Register scratch3 = gp; // avoid to get at in srlv and sllv ++ and_(rt.rm(), 0x1f, scratch1); ++ ldi(scratch2, 32, zero_reg); ++ subw(scratch2, scratch1, scratch2); ++ { ++ // srlv(scratch1, rs, scratch1); // srlw(rs, scratch1, scratch1); ++ and_(scratch1, 0x1f, scratch3); ++ zapnot(rs, 0xf, scratch1); ++ srll(scratch1, scratch3, scratch1); ++ addw(scratch1, 0, scratch1); ++ } ++ { ++ // sllv(rd, rs, scratch2); // sllw(rs, scratch2, rd); ++ and_(scratch2, 0x1f, scratch3); ++ slll(rs, scratch3, rd); ++ addw(rd, 0, rd); ++ } ++ bis(scratch1, rd, rd); ++ addw(rd, 0, rd); ++ } else { ++ int64_t ror_value = rt.immediate() % 32; ++ if (ror_value < 0) { ++ ror_value += 32; ++ } ++ Srlw(scratch, rs, ror_value); // srlw(rs, ror_value, scratch); ++ Sllw(rd, rs, 32 - ror_value); // sllw(rs, 32-ror_value, rd); ++ bis(scratch, rd, rd); ++ addw(rd, 0, rd); ++ } ++} ++ ++void MacroAssembler::Roll(Register rd, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Roll, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ DCHECK(rs != scratch); ++ DCHECK(rd != scratch); ++ if (rt.is_reg()) { ++ Register scratch1 = (scratch == t11) ? a5 : t11; ++ Register scratch2 = t12; ++ srll(rs, rt.rm(), scratch1); ++ ldi(scratch2, 64, zero_reg); ++ subl(scratch2, rt.rm(), scratch2); ++ slll(rs, scratch2, rd); ++ bis(scratch1, rd, rd); ++ } else { ++ int64_t dror_value = rt.immediate() % 64; ++ if (dror_value < 0) dror_value += 64; ++ srll(rs, (int)dror_value, scratch); ++ slll(rs, (int)(64 - dror_value), rd); ++ bis(scratch, rd, rd); ++ } ++} ++ ++ ++void MacroAssembler::Lsaw(Register rd, Register rt, Register rs, uint8_t sa, ++ Register scratch) {//SCOPEMARK_NAME(TurboAssembler::Lsa, this); ++ DCHECK(sa >= 1 && sa <= 31); ++#ifdef SW64 ++ if (sa == 3) { ++ s8addw(rs, rt, rd); //rd = rs * 8 + rt ++ } else if (sa == 2) { ++ s4addw(rs, rt, rd); //rd = rs * 4 + rt ++ } else { ++ Register tmp = rd == rt ? scratch : rd; ++ DCHECK(tmp != rt); ++ Sllw(tmp, rs, sa); //not sw's sllw ++ addw(rt, tmp, rd); ++ } ++#else ++ //if (kArchVariant == kSw64r3 && sa <= 4) { ++ // lsa(rd, rt, rs, sa - 1); ++ //} else { ++ Register tmp = rd == rt ? scratch : rd; ++ DCHECK(tmp != rt); ++ Sllw(tmp, rs, sa); ++ Addw(rd, rt, tmp); ++ //} ++#endif ++} ++ ++void MacroAssembler::Lsal(Register rd, Register rt, Register rs, uint8_t sa, ++ Register scratch) {//SCOPEMARK_NAME(TurboAssembler::Dlsa, this); ++ DCHECK(sa >= 1 && sa <= 63); ++#ifdef SW64 ++ if (sa == 3) { ++ s8addl(rs, rt, rd); //rd = rs * 8 + rt ++ } else if (sa == 2) { ++ s4addl(rs, rt, rd); //rd = rs * 4 + rt ++ } else { ++ Register tmp = rd == rt ? scratch : rd; ++ DCHECK(tmp != rt); ++ slll(rs, sa, tmp); ++ Addl(rd, rt, tmp); ++ } ++#else ++ Register tmp = rd == rt ? scratch : rd; ++ DCHECK(tmp != rt); ++ slll(rs, sa, tmp); ++ Addl(rd, rt, tmp); ++#endif ++// } ++} ++ ++// ------------Pseudo-instructions------------- ++ ++// Change endianness ++void MacroAssembler::ByteSwapSigned(Register dest, Register src, ++ int operand_size) { ++ // SCOPEMARK_NAME(TurboAssembler::ByteSwapSigned, this); ++ DCHECK(operand_size == 2 || operand_size == 4 || operand_size == 8); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(src != scratch); ++ if (operand_size == 2) { ++ // HGFEDCBA ==> 000000AB ++ zapnot(src, 0x3, dest); ++ srll(dest, 8, scratch); ++ slll(dest, 24, dest); ++ addw(dest, 0, dest); ++ sral(dest, 16, dest); ++ or_(dest, scratch, dest); ++ } else if (operand_size == 4) { ++ // HGFEDCBA ==> 0000ABCD ++ zapnot(src, 0xf, dest); ++ srll(dest, 8, scratch); // 0DCB ++ slll(dest, 24, dest); // A000 ++ bis(dest, scratch, dest); // ADCB ++ srll(scratch, 16, scratch); // 000D ++ xor_(dest, scratch, scratch); ++ and_(scratch, 0xff, scratch); // 000B^D ++ xor_(dest, scratch, dest); // ADCD ++ slll(scratch, 16, scratch); // 0B^D00 ++ xor_(dest, scratch, dest); // 0000ABCD ++ addw(dest, 0, dest); ++ } else { ++ // 87654321 ==> 12345678 ++ srll(src, 8, scratch); // 08765432 ++ slll(src, 56, dest); // 10000000 ++ bis(dest, scratch, dest); // 18765432 ++ // 8 <==> 2 ++ srll(scratch, 48, scratch); // 00000008 ++ xor_(dest, scratch, scratch); ++ and_(scratch, 0xff, scratch); // 00000002^8 ++ xor_(dest, scratch, dest); // 18765438 ++ slll(scratch, 48, scratch); // 02^8000000 ++ xor_(dest, scratch, dest); // 12765438 ++ // 7 <==> 3 ++ srll(dest, 32, scratch); // 00001276 ++ xor_(dest, scratch, scratch); ++ zapnot(scratch, 0x2, scratch); // 0000003^70 ++ xor_(dest, scratch, dest); // 12765478 ++ slll(scratch, 32, scratch); // 03^7000000 ++ xor_(dest, scratch, dest); // 12365478 ++ // 6 <==> 4 ++ srll(dest, 16, scratch); // 00123654 ++ xor_(dest, scratch, scratch); ++ zapnot(scratch, 0x4, scratch); // 000004^600 ++ xor_(dest, scratch, dest); // 12365678 ++ slll(scratch, 16, scratch); // 0004^60000 ++ xor_(dest, scratch, dest); // 12345678 ++ } ++} ++ ++void MacroAssembler::ByteSwapUnsigned(Register dest, Register src, ++ int operand_size) { ++ // SCOPEMARK_NAME(TurboAssembler::ByteSwapUnsigned, this); ++ DCHECK(operand_size == 2 || operand_size == 4); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(src != scratch); ++ if (operand_size == 2) { ++ zapnot(src, 0x3, dest); ++ srll(dest, 8, scratch); ++ slll(dest, 8, dest); ++ bis(dest, scratch, dest); ++ // slll(dest, 48, dest); ++ zapnot(dest, 0x3, dest); ++ } else { ++ zapnot(src, 0xf, dest); ++ srll(dest, 8, scratch); // 0DCB ++ slll(dest, 24, dest); // A000 ++ bis(dest, scratch, dest); // ADCB ++ srll(scratch, 16, scratch); // 000D ++ xor_(dest, scratch, scratch); ++ and_(scratch, 0xff, scratch); // 000B^D ++ xor_(dest, scratch, dest); // ADCD ++ slll(scratch, 16, scratch); // 0B^D000 ++ xor_(dest, scratch, dest); // 0000ABCD ++ // slll(dest, 32, dest); //ABCD0000 ++ } ++} ++ ++void MacroAssembler::Ldw_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldw_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ Ldw(rd, rs); ++} ++ ++void MacroAssembler::Ldwu_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldwu_u, this); DCHECK_EQ(kArchVariant, ++ // kSw64r2); ++ Ldw_u(rd, rs); ++ zapnot(rd, 0xf, rd); ++} ++ ++void MacroAssembler::Stw_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Stw_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ DCHECK(rd != rs.rm()); ++ Stw(rd, rs); ++} ++ ++void MacroAssembler::Ldh_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldh_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ MemOperand source = rs; ++ // Adjust offset for two accesses and check if offset + 1 fits into int16_t. ++ AdjustBaseAndOffset(&source, OffsetAccessType::TWO_ACCESSES, 1); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ if (source.rm() == scratch) { ++#if defined(V8_TARGET_LITTLE_ENDIAN) ++ Ldb(rd, MemOperand(source.rm(), source.offset() + 1)); ++ Ldbu(scratch, source); ++#endif ++ } else { ++#if defined(V8_TARGET_LITTLE_ENDIAN) ++ Ldbu(scratch, source); ++ Ldb(rd, MemOperand(source.rm(), source.offset() + 1)); ++#endif ++ } ++ slll(rd, 8, rd); ++ or_(rd, scratch, rd); ++} ++ ++void MacroAssembler::Ldhu_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldhu_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ MemOperand source = rs; ++ // Adjust offset for two accesses and check if offset + 1 fits into int16_t. ++ AdjustBaseAndOffset(&source, OffsetAccessType::TWO_ACCESSES, 1); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ if (source.rm() == scratch) { ++#if defined(V8_TARGET_LITTLE_ENDIAN) ++ Ldbu(rd, MemOperand(source.rm(), source.offset() + 1)); ++ Ldbu(scratch, source); ++#endif ++ } else { ++#if defined(V8_TARGET_LITTLE_ENDIAN) ++ Ldbu(scratch, source); ++ Ldbu(rd, MemOperand(source.rm(), source.offset() + 1)); ++#endif ++ } ++ slll(rd, 8, rd); ++ or_(rd, scratch, rd); ++} ++ ++void MacroAssembler::Sth_u(Register rd, const MemOperand& rs, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Sth_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ DCHECK(rs.rm() != scratch); ++ DCHECK(scratch != at); ++ MemOperand source = rs; ++ // Adjust offset for two accesses and check if offset + 1 fits into int16_t. ++ AdjustBaseAndOffset(&source, OffsetAccessType::TWO_ACCESSES, 1); ++ if (scratch != rd) { ++ mov(scratch, rd); ++ } ++#if defined(V8_TARGET_LITTLE_ENDIAN) ++ Stb(scratch, source); ++ Srlw(scratch, scratch, 8); ++ Stb(scratch, MemOperand(source.rm(), source.offset() + 1)); ++#endif ++} ++ ++void MacroAssembler::Ldl_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldl_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ Ldl(rd, rs); ++} ++ ++void MacroAssembler::Stl_u(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Stl_u, this); ++ DCHECK(rd != at); ++ DCHECK(rs.rm() != at); ++ Stl(rd, rs); ++} ++ ++void MacroAssembler::Flds_u(FPURegister fd, const MemOperand& rs, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Flds_u, this); ++ Flds(fd, rs); ++} ++ ++void MacroAssembler::Fsts_u(FPURegister fd, const MemOperand& rs, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Fsts_u, this); ++ Fsts(fd, rs); ++} ++ ++void MacroAssembler::Fldd_u(FPURegister fd, const MemOperand& rs, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Fldd_u, this); ++ DCHECK(scratch != at); ++ Fldd(fd, rs); ++} ++ ++void MacroAssembler::Fstd_u(FPURegister fd, const MemOperand& rs, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Fstd_u, this); ++ DCHECK(scratch != at); ++ Fstd(fd, rs); ++} ++ ++void MacroAssembler::Ldb(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldb, this); ++ ldbu(rd, rs); ++ sextb(rd, rd); ++} ++ ++void MacroAssembler::Ldbu(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldbu, this); ++ ldbu(rd, rs); ++} ++ ++void MacroAssembler::Stb(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Stb, this); ++ stb(rd, rs); ++} ++ ++void MacroAssembler::Ldh(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldh, this); ++ ldhu(rd, rs); ++ sexth(rd, rd); ++} ++ ++void MacroAssembler::Ldhu(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldhu, this); ++ ldhu(rd, rs); ++} ++ ++void MacroAssembler::Sth(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Sth, this); ++ sth(rd, rs); ++} ++ ++void MacroAssembler::Ldw(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldw, this); ++ ldw(rd, rs); ++} ++ ++void MacroAssembler::Ldwu(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldwu, this); ++ ldw(rd, rs); ++ zapnot(rd, 0xf, rd); ++} ++ ++void MacroAssembler::Stw(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Stw, this); ++ stw(rd, rs); ++} ++ ++void MacroAssembler::Ldl(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ldl, this); ++ ldl(rd, rs); ++} ++ ++void MacroAssembler::Stl(Register rd, const MemOperand& rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Stl, this); ++ stl(rd, rs); ++} ++ ++void MacroAssembler::Flds(FPURegister fd, const MemOperand& src) { ++ // SCOPEMARK_NAME(TurboAssembler::Flds, this); ++ flds(fd, src); ++} ++ ++void MacroAssembler::Fsts(FPURegister fs, const MemOperand& src) { ++ // SCOPEMARK_NAME(TurboAssembler::Fsts, this); ++ fsts(fs, src); ++} ++ ++void MacroAssembler::Fldd(FPURegister fd, const MemOperand& src) { ++ // SCOPEMARK_NAME(TurboAssembler::Fldd, this); ++ fldd(fd, src); ++} ++ ++void MacroAssembler::Fstd(FPURegister fs, const MemOperand& src) { ++ // SCOPEMARK_NAME(TurboAssembler::Fstd, this); ++ fstd(fs, src); ++} ++ ++void MacroAssembler::li(Register dst, Handle value, LiFlags mode) { ++ // SCOPEMARK_NAME(TurboAssembler::li, this); ++ if (root_array_available_ && options().isolate_independent_code) { ++ IndirectLoadConstant(dst, value); ++ return; ++ } ++ li(dst, Operand(value), mode); ++} ++ ++void MacroAssembler::li(Register dst, ExternalReference value, LiFlags mode) { ++ // SCOPEMARK_NAME(TurboAssembler::li, this); ++ if (root_array_available_ && options().isolate_independent_code) { ++ IndirectLoadExternalReference(dst, value); ++ return; ++ } ++ li(dst, Operand(value), mode); ++} ++ ++static inline int InstrCountForLiLower32Bit(int64_t value) { ++ int32_t lsb32 = static_cast(value); ++ int16_t lsb_h = (lsb32 - static_cast(lsb32)) >> 16; ++ int16_t lsb_l = static_cast(lsb32); ++ ++ if (is_int16(lsb32)) { ++ return 1; ++ } else { ++ if ((int32_t)(lsb_h) == -32768 && (int32_t)(lsb_l) < 0) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ return lsb_l ? 3 : 2; ++ } else { ++ return lsb_l ? 2 : 1; ++ } ++ } ++} ++ ++void MacroAssembler::LiLower32BitHelper(Register rd, Operand j) { ++ // SCOPEMARK_NAME(TurboAssembler::LiLower32BitHelper, this); ++ int32_t lsb32 = static_cast(j.immediate()); ++ ++ if (is_int16(lsb32)) { ++ ldi(rd, lsb32, zero_reg); ++ } else { ++ int16_t lsb_h = (lsb32 - static_cast(lsb32)) >> 16; ++ int16_t lsb_l = static_cast(lsb32); ++ if ((int32_t)(lsb_h) == -32768 && (int32_t)(lsb_l) < 0) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ ldih(rd, 0x4000, zero_reg); ++ ldih(rd, 0x4000, rd); ++ if (lsb_l) ldi(rd, lsb_l, rd); ++ } else { ++ ldih(rd, lsb_h, zero_reg); ++ if (lsb_l) { ++ ldi(rd, lsb_l, rd); ++ } ++ } ++ } ++} ++ ++int MacroAssembler::InstrCountForLi64Bit(int64_t value) { ++ int32_t lo = static_cast(value); ++ int32_t hi = static_cast((value - lo) >> 32); ++ int16_t lo_h16 = (lo - static_cast(lo)) >> 16; ++ int16_t lo_l16 = static_cast(lo); ++ int16_t hi_l16 = static_cast(hi); ++ ++ if (is_int32(value)) { ++ return InstrCountForLiLower32Bit(value); ++ } else { ++ int count = 1; // slll 32 ++ if (is_int16(hi)) { ++ count += 1; ++ } else { ++ count += hi_l16 ? 2 : 1; ++ } ++ if (lo != 0) { ++ if (((int32_t)lo_h16 == -32768) && ((int32_t)lo_l16 < 0)) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ count += lo_l16 ? 3 : 2; ++ } else { ++ count += lo_l16 ? 2 : 1; ++ } ++ } ++ return count; ++ } ++ ++ UNREACHABLE(); ++ return INT_MAX; ++} ++ ++// All changes to if...else conditions here must be added to ++// InstrCountForLi64Bit as well. ++void MacroAssembler::li_optimized(Register rd, Operand j, LiFlags mode) { ++ // SCOPEMARK_NAME(TurboAssembler::li_optimized, this); ++ DCHECK(!j.is_reg()); ++ DCHECK(!MustUseReg(j.rmode())); ++ DCHECK(mode == OPTIMIZE_SIZE); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ int64_t value = j.immediate(); ++ int32_t lo = static_cast(value); ++ int32_t hi = static_cast((value - lo) >> 32); ++ int16_t lo_h16 = (lo - static_cast(lo)) >> 16; ++ int16_t lo_l16 = static_cast(lo); ++ int16_t hi_h16 = (hi - static_cast(hi)) >> 16; ++ int16_t hi_l16 = static_cast(hi); ++ // Normal load of an immediate value which does not need Relocation Info. ++ if (is_int32(value)) { ++ LiLower32BitHelper(rd, j); ++ } else { ++ if (is_int16(hi)) { ++ ldi(rd, hi, zero_reg); ++ } else { ++ ldih(rd, hi_h16, zero_reg); ++ if (hi_l16 != 0) ldi(rd, hi_l16, rd); ++ } ++ slll(rd, 32, rd); ++ if (lo != 0) { ++ if (((int32_t)lo_h16 == -32768) && ((int32_t)lo_l16 < 0)) { ++ // range from 0x7FFF8000 to 0x7FFFFFFF ++ ldih(rd, 0x4000, rd); ++ ldih(rd, 0x4000, rd); ++ if (lo_l16 != 0) ldi(rd, lo_l16, rd); ++ } else { ++ ldih(rd, lo_h16, rd); ++ if (lo_l16 != 0) ldi(rd, lo_l16, rd); ++ } ++ } ++ } ++} ++ ++void MacroAssembler::li(Register rd, Operand j, LiFlags mode) { ++ // SCOPEMARK_NAME(TurboAssembler::li, this); ++ DCHECK(!j.is_reg()); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ if (!MustUseReg(j.rmode()) && mode == OPTIMIZE_SIZE) { ++ int li_count = InstrCountForLi64Bit(j.immediate()); ++ int li_neg_count = InstrCountForLi64Bit(-j.immediate()); ++ int li_not_count = InstrCountForLi64Bit(~j.immediate()); ++ // Loading -MIN_INT64 could cause problems, but loading MIN_INT64 takes ++ // only two instructions so no need to check for this. ++ if (li_neg_count <= li_not_count && li_neg_count < li_count - 1) { ++ DCHECK(j.immediate() != std::numeric_limits::min()); ++ li_optimized(rd, Operand(-j.immediate()), mode); ++ Subl(rd, zero_reg, rd); ++ } else if (li_neg_count > li_not_count && li_not_count < li_count - 1) { ++ DCHECK(j.immediate() != std::numeric_limits::min()); ++ li_optimized(rd, Operand(~j.immediate()), mode); ++ ornot(zero_reg, rd, rd); // nor(rd, rd, rd); ++ } else { ++ li_optimized(rd, j, mode); ++ } ++ } else if (MustUseReg(j.rmode())) { ++ int64_t immediate; ++ if (j.IsHeapNumberRequest()) { ++ RequestHeapNumber(j.heap_number_request()); ++ immediate = 0; ++ } else { ++ immediate = j.immediate(); ++ } ++ ++ RecordRelocInfo(j.rmode(), immediate); ++ ++ int32_t lsb32 = static_cast(immediate); ++ int32_t msb32 = static_cast((immediate - lsb32) >> 32); ++ int16_t msb_l = static_cast(msb32); ++ int16_t lsb_h = (lsb32 - static_cast(lsb32)) >> 16; ++ int16_t lsb_l = static_cast(lsb32); ++ ++ // lsb32's range should not be from 0x7FFF8000 to 0x7FFFFFFF. ++ DCHECK(!((lsb32 > 0x7FFF8000) && (lsb32 < 0x7FFFFFFF))); ++ ldi(rd, msb_l, zero_reg); ++ slll(rd, 32, rd); ++ ldih(rd, lsb_h, rd); ++ ldi(rd, lsb_l, rd); ++ ++ } else if (mode == ADDRESS_LOAD) { ++ // We always need the same number of instructions as we may need to patch ++ // this code to load another value which may need all 4 instructions. ++ int32_t lsb32 = static_cast(j.immediate()); ++ int32_t msb32 = static_cast((j.immediate() - lsb32) >> 32); ++ ++ if (lsb32 < 0 && (j.immediate() >> 32) > 0) { ++ return li_optimized(rd, j, OPTIMIZE_SIZE); ++ } ++ ++ int16_t msb_l = static_cast(msb32); ++ int16_t lsb_h = (lsb32 - static_cast(lsb32)) >> 16; ++ int16_t lsb_l = static_cast(lsb32); ++ ++ // lsb32's range should not be from 0x7FFF8000 to 0x7FFFFFFF. ++ DCHECK(!((lsb32 > 0x7FFF8000) && (lsb32 < 0x7FFFFFFF))); ++ ldi(rd, msb_l, zero_reg); ++ slll(rd, 32, rd); ++ ldih(rd, lsb_h, rd); ++ ldi(rd, lsb_l, rd); ++ ++ } else { // mode == CONSTANT_SIZE - always emit the same instruction ++ // sequence. ++ // CONSTANT_SIZE, must 5 instructions. ++ int64_t imm = j.immediate(); ++ int32_t lsb32 = static_cast(imm); ++ int32_t msb32 = static_cast((imm - lsb32) >> 32); ++ int16_t msb_h = (msb32 - static_cast(msb32)) >> 16; ++ int16_t msb_l = static_cast(msb32); ++ int16_t lsb_h = (lsb32 - static_cast(lsb32)) >> 16; ++ int16_t lsb_l = static_cast(lsb32); ++ ++ ldih(rd, msb_h, zero_reg); ++ ldi(rd, msb_l, rd); ++ slll(rd, 32, rd); ++ ldih(rd, lsb_h, rd); ++ ldi(rd, lsb_l, rd); ++ } ++} ++ ++void MacroAssembler::MultiPush(RegList regs) { ++ // SCOPEMARK_NAME(TurboAssembler::MultiPush, this); ++ int16_t num_to_push = regs.Count(); ++ int16_t stack_offset = num_to_push * kPointerSize; ++ ++ Subl(sp, sp, Operand(stack_offset)); ++ if ((regs.bits() & (1 << ra.code())) != 0) { ++ stack_offset -= kPointerSize; ++ stl(ToRegister(ra.code()), MemOperand(sp, stack_offset)); ++ } ++ if ((regs.bits() & (1 << fp.code())) != 0) { ++ stack_offset -= kPointerSize; ++ stl(ToRegister(fp.code()), MemOperand(sp, stack_offset)); ++ } ++ for (int16_t i = kNumRegisters - 1; i >= 0; i--) { ++ if ((regs.bits() & (1 << i)) != 0 && (i != ra.code()) && (i != fp.code())) { ++ stack_offset -= kPointerSize; ++ stl(ToRegister(i), MemOperand(sp, stack_offset)); ++ } ++ } ++} ++ ++void MacroAssembler::MultiPop(RegList regs) { ++ // SCOPEMARK_NAME(TurboAssembler::MultiPop, this); ++ int16_t stack_offset = 0; ++ ++ for (int16_t i = 0; i < kNumRegisters; i++) { ++ if ((regs.bits() & (1 << i)) != 0 && (i != ra.code()) && (i != fp.code())) { ++ ldl(ToRegister(i), MemOperand(sp, stack_offset)); ++ stack_offset += kPointerSize; ++ } ++ } ++ if ((regs.bits() & (1 << fp.code())) != 0) { ++ ldl(ToRegister(fp.code()), MemOperand(sp, stack_offset)); ++ stack_offset += kPointerSize; ++ } ++ if ((regs.bits() & (1 << ra.code())) != 0) { ++ ldl(ToRegister(ra.code()), MemOperand(sp, stack_offset)); ++ stack_offset += kPointerSize; ++ } ++ addl(sp, stack_offset, sp); ++} ++ ++void MacroAssembler::MultiPushFPU(DoubleRegList regs) { ++ int16_t num_to_push = regs.Count(); ++ int16_t stack_offset = num_to_push * kDoubleSize; ++ ++ Subl(sp, sp, Operand(stack_offset)); ++ for (int16_t i = kNumRegisters - 1; i >= 0; i--) { ++ if ((regs.bits() & (1 << i)) != 0) { ++ stack_offset -= kDoubleSize; ++ fstd(FPURegister::from_code(i), MemOperand(sp, stack_offset)); ++ } ++ } ++} ++ ++void MacroAssembler::MultiPopFPU(DoubleRegList regs) { ++ int16_t stack_offset = 0; ++ ++ for (int16_t i = 0; i < kNumRegisters; i++) { ++ if ((regs.bits() & (1 << i)) != 0) { ++ fldd(FPURegister::from_code(i), MemOperand(sp, stack_offset)); ++ stack_offset += kDoubleSize; ++ } ++ } ++ addl(sp, stack_offset, sp); ++} ++ ++void MacroAssembler::MultiPushSWSA(DoubleRegList regs) { ++ int16_t num_to_push = regs.Count(); ++ int16_t stack_offset = num_to_push * kSimd128Size; ++ ++ Subl(sp, sp, Operand(stack_offset)); ++ for (int16_t i = kNumRegisters - 1; i >= 0; i--) { ++ if ((regs.bits() & (1 << i)) != 0) { ++ stack_offset -= kSimd128Size; ++ stl(ToRegister(i), MemOperand(sp, stack_offset)); ++ } ++ } ++} ++ ++void MacroAssembler::MultiPopSWSA(DoubleRegList regs) { ++ int16_t stack_offset = 0; ++ ++ for (int16_t i = 0; i < kNumRegisters; i++) { ++ if ((regs.bits() & (1 << i)) != 0) { ++ ldl(ToRegister(i), MemOperand(sp, stack_offset)); ++ stack_offset += kSimd128Size; ++ } ++ } ++ addl(sp, stack_offset, sp); ++} ++ ++void MacroAssembler::Extw(Register rt, Register rs, uint16_t pos, ++ uint16_t size) { ++ // SCOPEMARK_NAME(TurboAssembler::Ext, this); ++ DCHECK_LT(pos, 32); ++ DCHECK_LT(pos + size, 33); ++ // Ext is word-sign-extend. ++ if (pos == 0) { ++ if (size == 8) { ++ zapnot(rs, 0x1, rt); ++ } else if (size == 16) { ++ zapnot(rs, 0x3, rt); ++ } else if (size == 32) { ++ addw(rs, 0, rt); ++ } else { ++ long bitmask = (0x1L << size) - 1; ++ And(rt, rs, (int)bitmask); ++ // addw(rt, 0, rt); //the only case that rt[31]==0 is pos==0 && ++ // size==32 ++ } ++ } else { ++ long bitmask = (0x1L << size) - 1; ++ srll(rs, pos, rt); ++ And(rt, rt, (int)bitmask); ++ // addw(rt, 0, rt); ++ } ++} ++ ++void MacroAssembler::Extl(Register rt, Register rs, uint16_t pos, ++ uint16_t size) { ++ // SCOPEMARK_NAME(TurboAssembler::Extl, this); ++ DCHECK(pos < 64 && 0 < size && size <= 64 && 0 < pos + size && ++ pos + size <= 64); ++ // dext is zero-extend ++ if (pos != 0) { ++ srll(rs, pos, rt); ++ ++ switch (size) { ++ case 8: ++ zapnot(rt, 0x1, rt); ++ break; ++ case 16: ++ zapnot(rt, 0x3, rt); ++ break; ++ case 32: ++ zapnot(rt, 0xf, rt); ++ break; ++ default: { ++ DCHECK(size < 64); ++ long bitmask = (0x1L << size) - 1; ++ And(rt, rt, (int)bitmask); ++ } ++ } ++ } else { ++ switch (size) { ++ case 8: ++ zapnot(rs, 0x1, rt); ++ break; ++ case 16: ++ zapnot(rs, 0x3, rt); ++ break; ++ case 32: ++ zapnot(rs, 0xf, rt); ++ break; ++ case 64: // the result of 0x1L<<64 is 1. ++ mov(rt, rs); ++ break; ++ default: { ++ long bitmask = (0x1L << size) - 1; ++ And(rt, rs, (int)bitmask); ++ } ++ } ++ } ++ // TODO ++} ++ ++void MacroAssembler::Insw(Register rt, Register rs, uint16_t pos, ++ uint16_t size) { ++ // SCOPEMARK_NAME(TurboAssembler::Ins, this); ++ DCHECK_LT(pos, 32); ++ DCHECK_LE(pos + size, 32); ++ DCHECK_NE(size, 0); ++ DCHECK(rs != t11 && rt != t11); ++ DCHECK(rt != at); ++ ++ long bitsize = (0x1L << size) - 1; ++ li(t11, bitsize); ++ and_(rs, t11, at); ++ slll(at, pos, at); ++ slll(t11, pos, t11); ++ bic(rt, t11, rt); ++ bis(rt, at, rt); ++ addw(rt, 0, rt); ++} ++ ++void MacroAssembler::Insd(Register rt, Register rs, uint16_t pos, ++ uint16_t size) { ++ // SCOPEMARK_NAME(TurboAssembler::Dins, this); ++ DCHECK_LT(pos, 64); ++ DCHECK_LE(pos + size, 64); ++ DCHECK_NE(size, 0); ++ DCHECK(rs != t11 && rt != t11); ++ DCHECK(rt != at); ++ ++ long bitsize = (size == 64) ? -1 : (0x1L << size) - 1; ++ li(t11, bitsize); ++ and_(rs, t11, at); ++ slll(at, pos, at); ++ slll(t11, pos, t11); ++ bic(rt, t11, rt); ++ bis(rt, at, rt); ++} ++ ++void MacroAssembler::ExtractBits(Register dest, Register source, Register pos, ++ int size, bool sign_extend) { ++ // SCOPEMARK_NAME(TurboAssembler::ExtractBits, this); ++ sral(source, pos, dest); ++ if (sign_extend) { ++ switch (size) { ++ case 8: ++ sextb(dest, dest); ++ break; ++ case 16: ++ sexth(dest, dest); ++ break; ++ case 32: ++ addw(dest, 0, dest); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ } else { ++ switch (size) { ++ case 8: ++ zapnot(dest, 0x1, dest); ++ break; ++ case 16: ++ zapnot(dest, 0x3, dest); ++ break; ++ case 32: ++ zapnot(dest, 0xf, dest); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ } ++} ++ ++void MacroAssembler::InsertBits(Register dest, Register source, Register pos, ++ int size) { ++ // SCOPEMARK_NAME(TurboAssembler::InsertBits, this); ++ DCHECK(source != t12 && dest != t12); ++ DCHECK(source != t11 && dest != t11); ++ ++ long sizemask = (0x1L << size) - 1; ++ li(t11, sizemask); ++ and_(source, t11, t12); ++ slll(t12, pos, t12); // (source 0..size-1) << pos ++ slll(t11, pos, t11); ++ bic(dest, t11, dest); ++ bis(dest, t12, dest); ++} ++ ++void MacroAssembler::Fneg(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Fneg, this); ++ fcpysn(fs, fs, fd); ++} ++ ++void MacroAssembler::Cvt_d_uw(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_d_uw, this); ++ // Move the data from fs to t11. ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ fimovs(fs, t11); ++ Cvt_d_uw(fd, t11); ++} ++ ++void MacroAssembler::Cvt_d_uw(FPURegister fd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_d_uw, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ ++ // Convert rs to a FP value in fd. ++ DCHECK(rs != t12); ++ DCHECK(rs != at); ++ ++ // Zero extend int32 in rs. ++ zapnot(rs, 0xf, t12); ++ ifmovd(t12, fd); ++ fcvtld_(fd, fd); ++} ++ ++void MacroAssembler::Cvt_d_ul(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_d_ul, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Move the data from fs to t11. ++ fimovd(fs, t11); ++ Cvt_d_ul(fd, t11); ++} ++ ++void MacroAssembler::Cvt_d_ul(FPURegister fd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_d_ul, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Convert rs to a FP value in fd. ++ ++ DCHECK(rs != t12); ++ DCHECK(rs != at); ++ ++ Label msb_clear, conversion_done; ++ ++ Branch(&msb_clear, ge, rs, Operand(zero_reg)); ++ ++ // Rs >= 2^63 ++ and_(rs, 1, t12); ++ srll(rs, 1, rs); ++ or_(t12, rs, t12); ++ ifmovd(t12, fd); ++ fcvtld_(fd, fd); ++ faddd(fd, fd, fd); // In delay slot. ++ Branch(&conversion_done); ++ ++ bind(&msb_clear); ++ // Rs < 2^63, we can do simple conversion. ++ ifmovd(rs, fd); ++ fcvtld_(fd, fd); ++ ++ bind(&conversion_done); ++} ++ ++void MacroAssembler::Cvt_s_uw(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_s_uw, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Move the data from fs to t11. ++ fimovs(fs, t11); ++ Cvt_s_uw(fd, t11); ++} ++ ++void MacroAssembler::Cvt_s_uw(FPURegister fd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_s_uw, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Convert rs to a FP value in fd. ++ DCHECK(rs != t12); ++ DCHECK(rs != at); ++ ++ // Zero extend int32 in rs. ++ zapnot(rs, 0xf, t12); ++ ifmovd(t12, fd); ++ fcvtls_(fd, fd); ++} ++ ++void MacroAssembler::Cvt_s_ul(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_s_ul, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Move the data from fs to t11. ++ fimovd(fs, t11); ++ Cvt_s_ul(fd, t11); ++} ++ ++void MacroAssembler::Cvt_s_ul(FPURegister fd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cvt_s_ul, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Convert rs to a FP value in fd. ++ ++ DCHECK(rs != t12); ++ DCHECK(rs != at); ++ ++ Label positive, conversion_done; ++ ++ Branch(&positive, ge, rs, Operand(zero_reg)); ++ ++ // Rs >= 2^31. ++ and_(rs, 1, t12); ++ srll(rs, 1, rs); ++ or_(t12, rs, t12); ++ ifmovd(t12, fd); ++ fcvtls_(fd, fd); ++ fadds(fd, fd, fd); // In delay slot. ++ Branch(&conversion_done); ++ ++ bind(&positive); ++ // Rs < 2^31, we can do simple conversion. ++ ifmovd(rs, fd); ++ fcvtls_(fd, fd); ++ ++ bind(&conversion_done); ++} ++ ++void MacroAssembler::Round_l_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Round_l_d, this); ++ fcvtdl_g(fs, fd); // rounding to nearest ++} ++ ++void MacroAssembler::Floor_l_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Floor_l_d, this); ++ fcvtdl_n(fs, fd); // rounding down ++} ++ ++void MacroAssembler::Ceil_l_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Ceil_l_d, this); ++ fcvtdl_p(fs, fd); // rounding up ++} ++ ++void MacroAssembler::Trunc_l_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Trunc_l_d, this); ++ fcvtdl_z(fs, fd); // rounding toward zero ++} ++ ++void MacroAssembler::Trunc_l_ud( ++ FPURegister fd, FPURegister fs, ++ FPURegister scratch) { // SCOPEMARK_NAME(MacroAssembler::Trunc_l_ud, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Load to GPR. ++ fimovd(fs, t11); ++ // Reset sign bit. ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ li(scratch1, 0x7FFFFFFFFFFFFFFF); ++ and_(t11, scratch1, t11); ++ } ++ ifmovd(t11, fs); ++ ftruncdl(fs, fd); ++} ++ ++void MacroAssembler::Trunc_uw_d(FPURegister fd, FPURegister fs, ++ FPURegister scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_uw_d, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Trunc_uw_d(t11, fs, scratch); ++ ifmovs(t11, fd); ++} ++ ++void MacroAssembler::Trunc_uw_s(FPURegister fd, FPURegister fs, ++ FPURegister scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_uw_s, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Trunc_uw_s(t11, fs, scratch); ++ ifmovs(t11, fd); ++} ++ ++void MacroAssembler::Trunc_ul_d(FPURegister fd, FPURegister fs, ++ FPURegister scratch, Register result) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_ul_d, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Trunc_ul_d(t11, fs, scratch, result); ++ ifmovd(t11, fd); ++} ++ ++void MacroAssembler::Trunc_ul_s(FPURegister fd, FPURegister fs, ++ FPURegister scratch, Register result) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_ul_s, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Trunc_ul_s(t11, fs, scratch, result); ++ ifmovd(t11, fd); ++} ++ ++void MacroAssembler::Trunc_w_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Trunc_w_d, this); ++ ftruncdw(fs, fd); ++} ++ ++void MacroAssembler::Round_w_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Round_w_d, this); ++ frounddw(fs, fd); ++} ++ ++void MacroAssembler::Floor_w_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Floor_w_d, this); ++ ffloordw(fs, fd); ++} ++ ++void MacroAssembler::Ceil_w_d(FPURegister fd, FPURegister fs) { ++ // SCOPEMARK_NAME(MacroAssembler::Ceil_w_d, this); ++ fceildw(fs, fd); ++} ++ ++void MacroAssembler::Trunc_uw_d(Register rd, FPURegister fs, ++ FPURegister scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_uw_d, this); ++ DCHECK(fs != scratch); ++ DCHECK(rd != at); ++ ++ { ++ // Load 2^31 into scratch as its float representation. ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ li(scratch1, 0x41E00000); ++ slll(scratch1, 32, scratch1); ++ ifmovd(scratch1, scratch); ++ } ++ // Test if scratch > fd. ++ // If fd < 2^31 we can convert it normally. ++ Label simple_convert; ++ CompareF(OLT, fs, scratch); ++ BranchTrueShortF(&simple_convert); ++ ++ // First we subtract 2^31 from fd, then trunc it to rs ++ // and add 2^31 to rs. ++ fsubd(fs, scratch, kDoubleCompareReg); ++ ftruncdw(kDoubleCompareReg, scratch); ++ fimovs(scratch, rd); ++ Or(rd, rd, 1 << 31); ++ ++ Label done; ++ Branch(&done); ++ // Simple conversion. ++ bind(&simple_convert); ++ fcvtdl_z(fs, kScratchDoubleReg1); ++ fcvtlw(kScratchDoubleReg1, scratch); ++ fimovs(scratch, rd); ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Trunc_uw_s(Register rd, FPURegister fs, ++ FPURegister scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_uw_s, this); ++ DCHECK(fs != scratch); ++ DCHECK(rd != at); ++ ++ { ++ // Load 2^31 into scratch as its float representation. ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ li(scratch1, 0x4F000000); ++ ifmovs(scratch1, scratch); ++ } ++ // Test if scratch > fs. ++ // If fs < 2^31 we can convert it normally. ++ Label simple_convert; ++ CompareF(OLT, fs, scratch); ++ BranchTrueShortF(&simple_convert); ++ ++ // First we subtract 2^31 from fs, then trunc it to rd ++ // and add 2^31 to rd. ++ fsubs(fs, scratch, kDoubleCompareReg); // sub_s(scratch, fs, scratch); ++ ftruncsw(kDoubleCompareReg, scratch); // trunc_w_s(scratch, scratch); ++ fimovs(scratch, rd); ++ Or(rd, rd, 1 << 31); ++ ++ Label done; ++ Branch(&done); ++ // Simple conversion. ++ bind(&simple_convert); ++ ftruncsw(fs, scratch); ++ fimovs(scratch, rd); ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Trunc_ul_d(Register rd, FPURegister fs, ++ FPURegister scratch, Register result) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_ul_d, this); ++ DCHECK(fs != scratch); ++ DCHECK(result.is_valid() ? !AreAliased(rd, result, at) : !AreAliased(rd, at)); ++ ++ Label simple_convert, done, fail; ++ if (result.is_valid()) { ++ mov(result, zero_reg); ++ Move(scratch, -1.0); ++ // If fd =< -1 or unordered, then the conversion fails. ++ CompareF(OLE, fs, scratch); ++ BranchTrueShortF(&fail); ++ CompareIsNanF(fs, scratch); ++ BranchTrueShortF(&fail); ++ // if fd >= (double)UINT64_MAX, then the conversion fails. ++ ldih(rd, 0x43f0, zero_reg); ++ slll(rd, 32, rd); ++ ifmovd(rd, scratch); ++ CompareF(OLT, fs, scratch); ++ BranchFalseShortF(&fail); ++ } ++ ++ // Load 2^63 into scratch as its double representation. ++ li(at, 0x43E0000000000000); ++ ifmovd(at, scratch); ++ ++ // Test if scratch > fs. ++ // If fs < 2^63 we can convert it normally. ++ CompareF(OLT, fs, scratch); ++ BranchTrueShortF(&simple_convert); ++ ++ // First we subtract 2^63 from fs, then trunc it to rd ++ // and add 2^63 to rd. ++ fsubd(fs, scratch, kDoubleCompareReg); // sub_d(scratch, fs, scratch); ++ fcvtdl_z(kDoubleCompareReg, scratch); // trunc_l_d(scratch, scratch); ++ fimovd(scratch, rd); ++ Or(rd, rd, Operand(1UL << 63)); ++ Branch(&done); ++ ++ // Simple conversion. ++ bind(&simple_convert); ++ ftruncdl(fs, scratch); ++ fimovd(scratch, rd); ++ ++ bind(&done); ++ if (result.is_valid()) { ++ // Conversion is failed if the result is negative. ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ Addw(scratch1, zero_reg, Operand(-1)); ++ srll(scratch1, 1, scratch1); // Load 2^62. ++ fimovd(scratch, result); ++ xor_(result, scratch1, result); ++ } ++ Cmplt(result, zero_reg, result); ++ } ++ ++ bind(&fail); ++} ++ ++void MacroAssembler::Trunc_ul_s(Register rd, FPURegister fs, ++ FPURegister scratch, Register result) { ++ // SCOPEMARK_NAME(TurboAssembler::Trunc_ul_s, this); ++ DCHECK(fs != scratch); ++ DCHECK(result.is_valid() ? !AreAliased(rd, result, at) : !AreAliased(rd, at)); ++ ++ Label simple_convert, done, fail; ++ FPURegister fscratch2 = kScratchDoubleReg2; ++ if (result.is_valid()) { ++ mov(result, zero_reg); ++ Move(scratch, -1.0f); ++ // If fd =< -1 or unordered, then the conversion fails. ++ CompareF(OLE, fs, scratch); ++ BranchTrueShortF(&fail); ++ CompareIsNanF(fs, scratch); ++ BranchTrueShortF(&fail); ++ // if fd >= (float)UINT64_MAX, then the conversion fails. ++ ldih(rd, 0x5F80, zero_reg); ++ ifmovs(rd, scratch); ++ CompareF(OLT, fs, scratch); ++ BranchFalseShortF(&fail); ++ } ++ ++ { ++ // Load 2^63 into scratch as its float representation. ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ li(scratch1, 0x5F000000); ++ ifmovs(scratch1, scratch); ++ } ++ ++ // Test if scratch > fs. ++ // If fs < 2^63 we can convert it normally. ++ CompareF(OLT, fs, scratch); ++ BranchTrueShortF(&simple_convert); ++ ++ // First we subtract 2^63 from fs, then trunc it to rd ++ // and add 2^63 to rd. ++ fsubs(fs, scratch, fscratch2); ++ ftruncsl(fscratch2, scratch); ++ fimovd(scratch, rd); ++ Or(rd, rd, Operand(1UL << 63)); ++ Branch(&done); ++ ++ // Simple conversion. ++ bind(&simple_convert); ++ ftruncsl(fs, scratch); ++ fimovd(scratch, rd); ++ ++ bind(&done); ++ if (result.is_valid()) { ++ // Conversion is failed if the result is negative or unordered. ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch1 = temps.Acquire(); ++ Addw(scratch1, zero_reg, Operand(-1)); ++ srll(scratch1, 1, scratch1); // Load 2^62. ++ fimovd(scratch, result); ++ xor_(result, scratch1, result); ++ } ++ Cmplt(result, zero_reg, result); ++ } ++ ++ bind(&fail); ++} ++ ++void MacroAssembler::Fridn_d_d(FPURegister dst, FPURegister src) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = t11; ++ Label done; ++ fimovd(src, scratch); ++ srll(scratch, 32, scratch); ++ srll(scratch, HeapNumber::kExponentShift, at); ++ li(gp, (0x1L< ++void MacroAssembler::RoundDouble(FPURegister dst, FPURegister src, ++ FPURoundingMode mode, RoundFunc round) { ++ // SCOPEMARK_NAME(TurboAssembler::RoundDouble, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = t11; ++ FPURegister fscratch = f12; ++ FPURegister fscratch2 = kScratchDoubleReg2; ++ Label done; ++ fimovd(src, scratch); ++ srll(scratch, 32, scratch); ++ srll(scratch, HeapNumber::kExponentShift, at); ++ li(gp, (0x1L << HeapNumber::kExponentBits) - 1); ++ and_(at, gp, at); ++ addw(at, 0, at); ++ fmovd(src, dst); ++ li(gp, HeapNumber::kExponentBias + HeapNumber::kMantissaBits); ++ cmpult(at, gp, at); ++ beq(at, &done); ++ // round(this, dst, src); ++ // fimovd(dst,at); ++ // fcvtld_(dst, dst); ++ // bne(at, &done); ++ // srll(scratch, 31, at); ++ // slll(at, 31 + 32, at); ++ // ifmovd(at, dst); ++ round(this, fscratch, src); ++ fcvtld_(fscratch,fscratch2); ++ fcpys(src,fscratch2,dst); ++ bind(&done); ++} ++ ++void MacroAssembler::Floord(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Floord, this); ++ RoundDouble(dst, src, mode_floor, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->ffloordl(src, dst); ++ }); ++} ++ ++void MacroAssembler::Ceild(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Ceild, this); ++ RoundDouble(dst, src, mode_ceil, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->fceildl(src, dst); ++ }); ++} ++ ++void MacroAssembler::Truncd(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Truncd, this); ++ RoundDouble(dst, src, mode_trunc, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->ftruncdl(src, dst); ++ }); ++} ++ ++void MacroAssembler::Roundd(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Roundd, this); ++ RoundDouble(dst, src, mode_round, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->frounddl(src, dst); ++ }); ++} ++ ++template ++void MacroAssembler::RoundFloat(FPURegister dst, FPURegister src, ++ FPURoundingMode mode, RoundFunc round) { ++ // SCOPEMARK_NAME(TurboAssembler::RoundFloat, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = t11; ++ Register scratch2 = t8; ++ FPURegister fscratch = f12; ++ FPURegister fscratch2 = kScratchDoubleReg2; ++ int32_t kFloat32ExponentBias = 127; ++ int32_t kFloat32MantissaBits = 23; ++ // int32_t kFloat32ExponentBits = 8; ++ Label done; ++ fimovd(src, scratch); ++ srll(scratch, 32, scratch); ++ srll(scratch, 20, scratch2); // sign + exponent, 12 bits ++ and_(scratch2, 0x7F, at); // low 7 exponent bits ++ addw(at, 0, at); ++ srll(scratch2, 3, gp); ++ and_(gp, 0x80, gp); ++ addw(gp, 0, gp); ++ or_(at, gp, at); ++ addw(at, 0, at); ++ fmovs(src, dst); ++ li(gp, kFloat32ExponentBias + kFloat32MantissaBits); ++ cmpult(at, gp, at); ++ beq(at, &done); ++ round(this, fscratch, src); ++ // fimovs(dst, at); ++ fcvtws(fscratch, fscratch2); ++ // bne(at, &done); ++ // srll(scratch, 31, at); ++ // slll(at, 31 + 32, at); ++ // ifmovd(at, dst); ++ fcpys(src,fscratch2,dst); ++ bind(&done); ++} ++ ++void MacroAssembler::Floors(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Floors, this); ++ RoundFloat(dst, src, mode_floor, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->ffloorsw(src, dst); ++ }); ++} ++ ++void MacroAssembler::Ceils(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Ceils, this); ++ RoundFloat(dst, src, mode_ceil, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->fceilsw(src, dst); ++ }); ++} ++ ++void MacroAssembler::Truncs(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Truncs, this); ++ RoundFloat(dst, src, mode_trunc, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->ftruncsw(src, dst); ++ }); ++} ++ ++void MacroAssembler::Rounds(FPURegister dst, FPURegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::Rounds, this); ++ RoundFloat(dst, src, mode_round, ++ [](MacroAssembler* masm, FPURegister dst, FPURegister src) { ++ masm->froundsw(src, dst); ++ }); ++} ++// SKTODO ++#if 0 ++ ++void MacroAssembler::StoreLane(SWSASize sz, SWSARegister src, uint8_t laneidx, ++ MemOperand dst) { ++ switch (sz) { ++ case SWSA_B: ++ copy_u_b(kScratchReg, src, laneidx); ++ Sb(kScratchReg, dst); ++ break; ++ case SWSA_H: ++ copy_u_h(kScratchReg, src, laneidx); ++ Sh(kScratchReg, dst); ++ break; ++ case SWSA_W: ++ if (laneidx == 0) { ++ FPURegister src_reg = FPURegister::from_code(src.code()); ++ Swc1(src_reg, dst); ++ } else { ++ copy_u_w(kScratchReg, src, laneidx); ++ Sw(kScratchReg, dst); ++ } ++ break; ++ case SWSA_D: ++ if (laneidx == 0) { ++ FPURegister src_reg = FPURegister::from_code(src.code()); ++ Sdc1(src_reg, dst); ++ } else { ++ copy_s_d(kScratchReg, src, laneidx); ++ Sd(kScratchReg, dst); ++ } ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void MacroAssembler::SWSARoundW(SWSARegister dst, SWSARegister src, ++ FPURoundingMode mode) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = t8; ++ Register scratch2 = at; ++ cfcswsa(scratch, SWSACSR); ++ if (mode == kRoundToNearest) { ++ scratch2 = zero_reg; ++ } else { ++ li(scratch2, Operand(mode)); ++ } ++ ctcswsa(SWSACSR, scratch2); ++ frint_w(dst, src); ++ ctcswsa(SWSACSR, scratch); ++} ++ ++void MacroAssembler::SWSARoundD(SWSARegister dst, SWSARegister src, ++ FPURoundingMode mode) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = t8; ++ Register scratch2 = at; ++ cfcswsa(scratch, SWSACSR); ++ if (mode == kRoundToNearest) { ++ scratch2 = zero_reg; ++ } else { ++ li(scratch2, Operand(mode)); ++ } ++ ctcswsa(SWSACSR, scratch2); ++ frint_d(dst, src); ++ ctcswsa(SWSACSR, scratch); ++} ++#endif ++ ++void MacroAssembler::Madd_s(FPURegister fd, FPURegister fr, FPURegister fs, ++ FPURegister ft, FPURegister scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::Madd_s, this); ++ DCHECK(fr != scratch && fs != scratch && ft != scratch); ++ fmuls(fs, ft, scratch); ++ fadds(fr, scratch, fd); ++} ++ ++void MacroAssembler::Madd_d(FPURegister fd, FPURegister fr, FPURegister fs, ++ FPURegister ft, FPURegister scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::Madd_d, this); ++ DCHECK(fr != scratch && fs != scratch && ft != scratch); ++ fmuld(fs, ft, scratch); ++ faddd(fr, scratch, fd); ++} ++ ++void MacroAssembler::Msub_s(FPURegister fd, FPURegister fr, FPURegister fs, ++ FPURegister ft, FPURegister scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::Msub_s, this); ++ DCHECK(fr != scratch && fs != scratch && ft != scratch); ++ fmuls(fs, ft, scratch); ++ fsubs(scratch, fr, fd); ++} ++ ++void MacroAssembler::Msub_d(FPURegister fd, FPURegister fr, FPURegister fs, ++ FPURegister ft, FPURegister scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::Msub_d, this); ++ DCHECK(fr != scratch && fs != scratch && ft != scratch); ++ fmuld(fs, ft, scratch); ++ fsubd(scratch, fr, fd); ++} ++ ++void MacroAssembler::CompareF(FPUCondition cc, ++ FPURegister cmp1, FPURegister cmp2) { ++ // SCOPEMARK_NAME(TurboAssembler::CompareF, this); ++ DCHECK(cmp1 != kDoubleCompareReg && cmp2 != kDoubleCompareReg); ++ switch (cc) { ++ case EQ: ++ fcmpeq(cmp1, cmp2, kDoubleCompareReg); ++ break; ++ case OLT: ++ fcmplt(cmp1, cmp2, kDoubleCompareReg); ++ break; ++ case OLE: ++ fcmple(cmp1, cmp2, kDoubleCompareReg); ++ break; ++ case UN: ++ fcmpun(cmp1, cmp2, kDoubleCompareReg); ++ break; ++ default: ++ UNREACHABLE(); ++ }; ++} ++ ++void MacroAssembler::CompareIsNanF(FPURegister cmp1, ++ FPURegister cmp2) { ++ // SCOPEMARK_NAME(TurboAssembler::CompareIsNanF, this); ++ CompareF(UN, cmp1, cmp2); ++} ++ ++void MacroAssembler::BranchTrueShortF(Label* target) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchTrueShortF, this); ++ fbne(kDoubleCompareReg, target); ++} ++ ++void MacroAssembler::BranchFalseShortF(Label* target) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchFalseShortF, this); ++ fbeq(kDoubleCompareReg, target); ++} ++ ++void MacroAssembler::BranchTrueF(Label* target) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchTrueF, this); ++ bool long_branch = ++ target->is_bound() ? !is_near(target) : is_trampoline_emitted(); ++ if (long_branch) { ++ Label skip; ++ BranchFalseShortF(&skip); ++ BranchLong(target); ++ bind(&skip); ++ } else { ++ BranchTrueShortF(target); ++ } ++} ++ ++void MacroAssembler::BranchFalseF(Label* target) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchFalseF, this); ++ bool long_branch = ++ target->is_bound() ? !is_near(target) : is_trampoline_emitted(); ++ if (long_branch) { ++ Label skip; ++ BranchTrueShortF(&skip); ++ BranchLong(target); ++ bind(&skip); ++ } else { ++ BranchFalseShortF(target); ++ } ++} ++ ++void MacroAssembler::FmoveLow(FPURegister dst, Register src_low) { ++ // SCOPEMARK_NAME(TurboAssembler::FmoveLow, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Register scratch1 = t8; ++ DCHECK(src_low != scratch); ++ fimovd(dst, scratch); ++ zap(scratch, 0xf, scratch); ++ zapnot(src_low, 0xf, scratch1); ++ or_(scratch, scratch1, scratch); ++ ifmovd(scratch, dst); ++} ++ ++void MacroAssembler::Move(FPURegister dst, uint32_t src) { ++ // SCOPEMARK_NAME(TurboAssembler::Move, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(static_cast(src))); ++ ifmovs(scratch, dst); ++} ++ ++void MacroAssembler::Move(FPURegister dst, uint64_t src) { ++ // SCOPEMARK_NAME(TurboAssembler::Move, this); ++ // Handle special values first. ++ if (src == base::bit_cast(0.0) /*&& has_double_zero_reg_set_*/) { ++ fmovd(kDoubleRegZero, dst); ++ } else if (src == ++ base::bit_cast(-0.0) /*&& has_double_zero_reg_set_*/) { ++ Fneg(dst, kDoubleRegZero); ++ } else { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(base::bit_cast(src))); ++ ifmovd(scratch, dst); ++ } ++} ++ ++void MacroAssembler::Seleq(Register rd, Register rs, Register rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Seleq, this); ++ seleq(rt, rs, rd, rd); ++} ++ ++void MacroAssembler::Selne(Register rd, Register rs, Register rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Selne, this); ++ selne(rt, rs, rd, rd); ++} ++ ++void MacroAssembler::LoadZeroOnCondition(Register rd, Register rs, ++ const Operand& rt, Condition cond) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadZeroOnCondition, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ switch (cond) { ++ case cc_always: ++ mov(rd, zero_reg); ++ break; ++ case eq: ++ if (rs == zero_reg) { ++ if (rt.is_reg()) { ++ LoadZeroIfConditionZero(rd, rt.rm()); ++ } else { ++ if (rt.immediate() == 0) { ++ mov(rd, zero_reg); ++ } else { ++ nop(); ++ } ++ } ++ } else if (IsZero(rt)) { ++ LoadZeroIfConditionZero(rd, rs); ++ } else { ++ Subl(t12, rs, rt); ++ LoadZeroIfConditionZero(rd, t12); ++ } ++ break; ++ case ne: ++ if (rs == zero_reg) { ++ if (rt.is_reg()) { ++ LoadZeroIfConditionNotZero(rd, rt.rm()); ++ } else { ++ if (rt.immediate() != 0) { ++ mov(rd, zero_reg); ++ } else { ++ nop(); ++ } ++ } ++ } else if (IsZero(rt)) { ++ LoadZeroIfConditionNotZero(rd, rs); ++ } else { ++ Subl(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ } ++ break; ++ ++ // Signed comparison. ++ case greater: ++ Cmpgt(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ break; ++ case greater_equal: ++ Cmpge(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs >= rt ++ break; ++ case less: ++ Cmplt(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs < rt ++ break; ++ case less_equal: ++ Cmple(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs <= rt ++ break; ++ ++ // Unsigned comparison. ++ case Ugreater: ++ Cmpugt(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs > rt ++ break; ++ ++ case Ugreater_equal: ++ Cmpuge(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs >= rt ++ break; ++ case Uless: ++ Cmpult(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs < rt ++ break; ++ case Uless_equal: ++ Cmpule(t12, rs, rt); ++ LoadZeroIfConditionNotZero(rd, t12); ++ // rs <= rt ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void MacroAssembler::LoadZeroIfConditionNotZero(Register dest, ++ Register condition) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadZeroIfConditionNotZero, this); ++ Selne(dest, zero_reg, condition); ++} ++ ++void MacroAssembler::LoadZeroIfConditionZero(Register dest, ++ Register condition) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadZeroIfConditionZero, this); ++ Seleq(dest, zero_reg, condition); ++} ++ ++void MacroAssembler::LoadZeroIfFPUCondition(Register dest) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadZeroIfFPUCondition, this); ++ fimovd(kDoubleCompareReg, kScratchReg); ++ LoadZeroIfConditionNotZero(dest, kScratchReg); ++} ++ ++void MacroAssembler::LoadZeroIfNotFPUCondition(Register dest) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadZeroIfNotFPUCondition, this); ++ fimovd(kDoubleCompareReg, kScratchReg); ++ LoadZeroIfConditionZero(dest, kScratchReg); ++} ++ ++void MacroAssembler::Ctlzw(Register rd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ctlzw, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ addw(rs, 0, scratch); // sign extend ++ ctlz(scratch, rd); ++ subl(rd, 32, rd); // rd=rd-32; ++ sellt(scratch, zero_reg, rd, rd); // (int)rs < 0 => rd = 0; ++} ++ ++void MacroAssembler::Ctlzl(Register rd, Register rs) { ctlz(rs, rd); } ++ ++void MacroAssembler::Cttzw(Register rd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cttzw, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ cttz(rs, rd); ++ subl(rd, 32, scratch); ++ selge(scratch, 32, rd, rd); ++} ++ ++void MacroAssembler::Cttzl(Register rd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Cttzl, this); ++ cttz(rs, rd); ++} ++ ++void MacroAssembler::Ctpopw(Register rd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ctpopw, this); ++ ASM_CODE_COMMENT(this); ++ zapnot(rs, 0xf, rd); ++ ctpop(rd, rd); ++} ++ ++void MacroAssembler::Ctpopl(Register rd, Register rs) { ++ // SCOPEMARK_NAME(TurboAssembler::Ctpopl, this); ++ ASM_CODE_COMMENT(this); ++ ctpop(rs, rd); ++} ++ ++void MacroAssembler::TryInlineTruncateDoubleToI(Register result, ++ DoubleRegister double_input, ++ Label* done) { ++ //SCOPEMARK_NAME(TurboAssembler::TryInlineTruncateDoubleToI, this); ++ if (v8_flags.use_sw8a) { ++ DoubleRegister single_scratch = kScratchDoubleReg; ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.Acquire(); ++ Register scratch2 = t12; ++ Register scratch3 = gp; ++ ++ DCHECK(single_scratch != double_input); ++ DCHECK(scratch != result && scratch2 != result); ++ ++ fcvtdl_z(double_input, single_scratch); ++ fimovd(single_scratch, scratch2); ++ li(scratch, 1L << 63); ++ xor_(scratch2, scratch, scratch); ++ roll(scratch,-1,scratch3); ++ addw(scratch2, 0,result); ++ Branch(done, ne, scratch, Operand(scratch3)); ++ }else { ++ DoubleRegister single_scratch = kScratchDoubleReg; ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.Acquire(); ++ Register scratch2 = t12; ++ ++ DoubleRegister fp_scratch = f20; ++ DoubleRegister fp_scratch2 = f21; ++ DCHECK(fp_scratch != double_input && fp_scratch2 != double_input && single_scratch != double_input); ++ DCHECK(scratch != result && scratch2 != result); ++ ++ DoubleRegList FPUscratch = {fp_scratch, fp_scratch2}; ++ // MultiPushFPU(FPUscratch); // optimize from octane ++ ++ // Clear cumulative exception flags and save the FPCR. ++ // SW64 FPCR, equal to DoubleToIStub::Generate ++ //in order to have same effection, we should do four steps in sw: ++ //1) set fpcr = 0 ++ //2) Rounding: sw(10), round-to-even ++ //3) set trap bit: sw(62~61,51~49), exception controlled by fpcr but not trap ++ //4) set exception mode: sw(00) setfpec0 ++ rfpcr(fp_scratch2); ++ if((strcmp(v8_flags.sw64_arch, "sw8a") == 0) ||CpuFeatures::IsSupported(SW_8A)) { ++ li(scratch, sFPCR_8aControlMask | sFPCRRound1Mask); //1), 2), 3) ++ } else { ++ li(scratch, sFPCRControlMask | sFPCRRound1Mask); //1), 2), 3) ++ } ++ ifmovd(scratch, fp_scratch); ++ wfpcr(fp_scratch); ++ setfpec1();//4) ++ ++ // Try a conversion to a signed integer. ++ if(v8_flags.use_cmovdw|| v8_flags.use_cmovx) { ++ fcvtdl_z(double_input, single_scratch); ++ fcvtlw(single_scratch, fp_scratch); ++ fimovs(fp_scratch, result); ++ // cmovdw_z(double_input, result); ++ }else { ++ fcvtdl_z(double_input, single_scratch); ++ fcvtlw(single_scratch, fp_scratch); ++ fimovs(fp_scratch, result); ++ } ++ // Retrieve and restore the FPCR. ++ rfpcr(fp_scratch); ++ wfpcr(fp_scratch2); ++ setfpec1(); ++ fimovd(fp_scratch, scratch); ++ ++ // MultiPopFPU(FPUscratch); ++ ++ // Check for overflow and NaNs. ++ if((strcmp(v8_flags.sw64_arch, "sw8a") == 0) ||CpuFeatures::IsSupported(SW_8A)) { ++ li(scratch2, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask | sFPCROverflowIntegerFlagMask | sFPCRInexactFlagBit); ++ } else { ++ li(scratch2, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask); ++ } ++ And(scratch, scratch, Operand(scratch2)); ++ ++ // If we had no exceptions we are done. ++ Branch(done, eq, scratch, Operand(zero_reg)); ++ } ++} ++ ++void MacroAssembler::TruncateDoubleToI(Isolate* isolate, Zone* zone, ++ Register result, ++ DoubleRegister double_input, ++ StubCallMode stub_mode) { ++ // SCOPEMARK_NAME(TurboAssembler::TruncateDoubleToI, this); ++ Label done; ++ ++ TryInlineTruncateDoubleToI(result, double_input, &done); ++ ++ // If we fell through then inline version didn't succeed - call stub instead. ++ Push(ra); ++ Subl(sp, sp, Operand(kDoubleSize)); // Put input on stack. ++ Fstd(double_input, MemOperand(sp, 0)); ++ ++#if V8_ENABLE_WEBASSEMBLY ++ if (stub_mode == StubCallMode::kCallWasmRuntimeStub) { ++ Call(wasm::WasmCode::kDoubleToI, RelocInfo::WASM_STUB_CALL); ++#else ++ // For balance. ++ if (false) { ++#endif // V8_ENABLE_WEBASSEMBLY ++ } else { ++ CallBuiltin(Builtin::kDoubleToI); ++ } ++ Ldl(result, MemOperand(sp, 0)); ++ ++ Addl(sp, sp, Operand(kDoubleSize)); ++ pop(ra); ++ ++ bind(&done); ++} ++ ++// Emulated condtional branches do not emit a nop in the branch delay slot. ++// ++// BRANCH_ARGS_CHECK checks that conditional jump arguments are correct. ++#define BRANCH_ARGS_CHECK(cond, rs, rt) \ ++ DCHECK((cond == cc_always && rs == zero_reg && rt.rm() == zero_reg) || \ ++ (cond != cc_always && (rs != zero_reg || rt.rm() != zero_reg))) ++ ++void MacroAssembler::Branch(int32_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::Branch, this); ++ DCHECK(is_int21(offset)); ++ BranchShort(offset); ++} ++ ++void MacroAssembler::Branch(int32_t offset, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Branch, this); ++ bool is_near = BranchShortCheck(offset, nullptr, cond, rs, rt); ++ DCHECK(is_near); ++ USE(is_near); ++} ++ ++void MacroAssembler::Branch(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::Branch, this); ++ if (L->is_bound()) { ++ if (is_near(L)) { ++ BranchShort(L); ++ } else { ++ BranchLong(L); ++ } ++ } else { ++ if (is_trampoline_emitted()) { ++ BranchLong(L); ++ } else { ++ BranchShort(L); ++ } ++ } ++} ++ ++void MacroAssembler::Branch(Label* L, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Branch, this); ++ if (L->is_bound()) { ++ if (!BranchShortCheck(0, L, cond, rs, rt)) { ++ if (cond != cc_always) { ++ Label skip; ++ Condition neg_cond = NegateCondition(cond); ++ BranchShort(&skip, neg_cond, rs, rt); ++ BranchLong(L); ++ bind(&skip); ++ } else { ++ BranchLong(L); ++ } ++ } ++ } else { ++ if (is_trampoline_emitted()) { ++ if (cond != cc_always) { ++ Label skip; ++ Condition neg_cond = NegateCondition(cond); ++ BranchShort(&skip, neg_cond, rs, rt); ++ BranchLong(L); ++ bind(&skip); ++ } else { ++ BranchLong(L); ++ } ++ } else { ++ BranchShort(L, cond, rs, rt); ++ } ++ } ++} ++ ++void MacroAssembler::Branch(Label* L, Condition cond, Register rs, ++ RootIndex index) { ++ // SCOPEMARK_NAME(TurboAssembler::Branch, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ LoadRoot(scratch, index); ++ Branch(L, cond, rs, Operand(scratch)); ++} ++ ++void MacroAssembler::BranchShortHelper(int32_t offset, Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShortHelper, this); ++ DCHECK(L == nullptr || offset == 0); ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(offset); ++} ++ ++void MacroAssembler::BranchShort(int32_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShort, this); ++ DCHECK(is_int21(offset)); ++ BranchShortHelper(offset, nullptr); ++} ++ ++void MacroAssembler::BranchShort(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShort, this); ++ BranchShortHelper(0, L); ++} ++ ++int32_t MacroAssembler::GetOffset(int32_t offset, Label* L, OffsetSize bits) { ++ // SCOPEMARK_NAME(TurboAssembler::GetOffset, this); ++ if (L) { ++ offset = branch_offset_helper(L, bits) >> 2; ++ } else { ++ DCHECK(is_intn(offset, bits)); ++ } ++ return offset; ++} ++ ++Register MacroAssembler::GetRtAsRegisterHelper(const Operand& rt, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::GetRtAsRegisterHelper, this); ++ Register r2 = no_reg; ++ if (rt.is_reg()) { ++ r2 = rt.rm(); ++ } else { ++ r2 = scratch; ++ li(r2, rt); ++ } ++ ++ return r2; ++} ++ ++bool MacroAssembler::CalculateOffset(Label* L, int32_t* offset, ++ OffsetSize bits) { ++ // SCOPEMARK_NAME(TurboAssembler::CalculateOffset, this); ++ if (!is_near(L, bits)) return false; ++ *offset = GetOffset(*offset, L, bits); ++ return true; ++} ++ ++bool MacroAssembler::CalculateOffset(Label* L, int32_t* offset, OffsetSize bits, ++ Register* scratch, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::CalculateOffset, this); ++ if (!is_near(L, bits)) return false; ++ *scratch = GetRtAsRegisterHelper(rt, *scratch); ++ *offset = GetOffset(*offset, L, bits); ++ return true; ++} ++ ++bool MacroAssembler::BranchShortHelper(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShortHelper, this); ++ DCHECK(L == nullptr || offset == 0); ++ if (!is_near(L, OffsetSize::kOffset21)) return false; ++ ++ UseScratchRegisterScope temps(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register scratch = temps.hasAvailable() ? temps.Acquire() : t11; ++ Register scratch2 = gp; ++ int32_t offset32; ++ ++ // Be careful to always use shifted_branch_offset only just before the ++ // branch instruction, as the location will be remember for patching the ++ // target. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ switch (cond) { ++ case cc_always: ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(offset32); // b(offset32); ++ break; ++ case eq: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(rs, offset32); // beq(rs, zero_reg, offset32); ++ } else { ++ // We don't want any other register but scratch clobbered. ++ scratch = GetRtAsRegisterHelper(rt, scratch); ++ DCHECK(rs != scratch2 && scratch != scratch2); ++ cmpeq(rs, scratch, scratch2); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(scratch2, offset32); ++ } ++ break; ++ case ne: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(rs, offset32); // bne(rs, zero_reg, offset32); ++ } else { ++ // We don't want any other register but scratch clobbered. ++ scratch = GetRtAsRegisterHelper(rt, scratch); ++ DCHECK(rs != scratch2 && scratch != scratch2); ++ cmpeq(rs, scratch, scratch2); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(scratch2, offset32); ++ } ++ break; ++ ++ // Signed comparison. ++ case greater: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bgt(rs, offset32); // bgtz(rs, offset32); ++ } else { ++ Cmplt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(scratch, offset32); // bne(scratch, zero_reg, offset32); ++ } ++ break; ++ case greater_equal: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bge(rs, offset32); // bgez(rs, offset32); ++ } else { ++ Cmplt(scratch, rs, rt); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(scratch, offset32); // beq(scratch, zero_reg, offset32); ++ } ++ break; ++ case less: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ blt(rs, offset32); // bltz(rs, offset32); ++ } else { ++ Cmplt(scratch, rs, rt); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(scratch, offset32); // bne(scratch, zero_reg, offset32); ++ } ++ break; ++ case less_equal: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ ble(rs, offset32); // blez(rs, offset32); ++ } else { ++ Cmplt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(scratch, offset32); // beq(scratch, zero_reg, offset32); ++ } ++ break; ++ ++ // Unsigned comparison. ++ case Ugreater: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(rs, offset32); // bne(rs, zero_reg, offset32); ++ } else { ++ Cmpult(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(scratch, offset32); // bne(scratch, zero_reg, offset32); ++ } ++ break; ++ case Ugreater_equal: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(offset32); // b(offset32); ++ } else { ++ Cmpult(scratch, rs, rt); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(scratch, offset32); // beq(scratch, zero_reg, offset32); ++ } ++ break; ++ case Uless: ++ if (IsZero(rt)) { ++ return true; // No code needs to be emitted. ++ } else { ++ Cmpult(scratch, rs, rt); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ bne(scratch, offset32); // bne(scratch, zero_reg, offset32); ++ } ++ break; ++ case Uless_equal: ++ if (IsZero(rt)) { ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(rs, offset32); // beq(rs, zero_reg, offset32); ++ } else { ++ Cmpult(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ offset32 = GetOffset(offset, L, OffsetSize::kOffset21); ++ beq(scratch, offset32); // beq(scratch, zero_reg, offset32); ++ } ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ } ++ ++ return true; ++} ++ ++bool MacroAssembler::BranchShortCheck(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShortCheck, this); ++ BRANCH_ARGS_CHECK(cond, rs, rt); ++ ++ if (!L) { ++ DCHECK(is_int21(offset)); ++ return BranchShortHelper(offset, nullptr, cond, rs, rt); ++ } else { ++ DCHECK_EQ(offset, 0); ++ return BranchShortHelper(0, L, cond, rs, rt); ++ } ++} ++ ++void MacroAssembler::BranchShort(int32_t offset, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShort, this); ++ BranchShortCheck(offset, nullptr, cond, rs, rt); ++} ++ ++void MacroAssembler::BranchShort(Label* L, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchShort, this); ++ BranchShortCheck(0, L, cond, rs, rt); ++} ++ ++void MacroAssembler::BranchAndLink(int32_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLink, this); ++ BranchAndLinkShort(offset); ++} ++ ++void MacroAssembler::BranchAndLink(int32_t offset, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLink, this); ++ bool is_near = BranchAndLinkShortCheck(offset, nullptr, cond, rs, rt); ++ DCHECK(is_near); ++ USE(is_near); ++} ++ ++void MacroAssembler::BranchAndLink(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLink, this); ++ if (L->is_bound()) { ++ if (is_near(L)) { ++ BranchAndLinkShort(L); ++ } else { ++ BranchAndLinkLong(L); ++ } ++ } else { ++ if (is_trampoline_emitted()) { ++ BranchAndLinkLong(L); ++ } else { ++ BranchAndLinkShort(L); ++ } ++ } ++} ++ ++void MacroAssembler::BranchAndLink(Label* L, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLink, this); ++ if (L->is_bound()) { ++ if (!BranchAndLinkShortCheck(0, L, cond, rs, rt)) { ++ Label skip; ++ Condition neg_cond = NegateCondition(cond); ++ BranchShort(&skip, neg_cond, rs, rt); ++ BranchAndLinkLong(L); ++ bind(&skip); ++ } ++ } else { ++ if (is_trampoline_emitted()) { ++ Label skip; ++ Condition neg_cond = NegateCondition(cond); ++ BranchShort(&skip, neg_cond, rs, rt); ++ BranchAndLinkLong(L); ++ bind(&skip); ++ } else { ++ BranchAndLinkShortCheck(0, L, cond, rs, rt); ++ } ++ } ++} ++ ++void MacroAssembler::BranchAndLinkShortHelper(int32_t offset, Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkShortHelper, this); ++ DCHECK(L == nullptr || offset == 0); ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(ra, offset); // bal(offset); ++} ++ ++void MacroAssembler::BranchAndLinkShort(int32_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkShort, this); ++ DCHECK(is_int21(offset)); ++ BranchAndLinkShortHelper(offset, nullptr); ++} ++ ++void MacroAssembler::BranchAndLinkShort(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkShort, this); ++ BranchAndLinkShortHelper(0, L); ++} ++ ++// Pre r6 we need to use a bgezal or bltzal, but they can't be used directly ++// with the cmplt instructions. We could use sub or add instead but we would ++// miss overflow cases, so we keep cmplt and add an intermediate third ++// instruction. ++bool MacroAssembler::BranchAndLinkShortHelper(int32_t offset, Label* L, ++ Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkShortHelper, this); ++ DCHECK(L == nullptr || offset == 0); ++ if (!is_near(L, OffsetSize::kOffset21)) return false; ++ ++ Register scratch = t11; ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ ++ switch (cond) { ++ case cc_always: ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(ra, offset); // bal(offset); ++ break; ++ case eq: ++ cmpeq(rs, GetRtAsRegisterHelper(rt, scratch), scratch); ++ beq(scratch, 1); // bne(rs, GetRtAsRegisterHelper(rt, scratch), 2); ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(ra, offset); // bal(offset); ++ break; ++ case ne: ++ cmpeq(rs, GetRtAsRegisterHelper(rt, scratch), scratch); ++ bne(scratch, 1); // beq(rs, GetRtAsRegisterHelper(rt, scratch), 2); ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ br(ra, offset); // bal(offset); ++ break; ++ ++ // Signed comparison. ++ case greater: ++ Cmplt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ Addw(scratch, scratch, Operand(-1)); ++ blt(scratch, 1); ++ bsr(L); // bgezal(scratch, offset); ++ break; ++ case greater_equal: ++ Cmplt(scratch, rs, rt); ++ Addw(scratch, scratch, Operand(-1)); ++ bge(scratch, 1); ++ bsr(L); // bltzal(scratch, offset); ++ break; ++ case less: ++ Cmplt(scratch, rs, rt); ++ Addw(scratch, scratch, Operand(-1)); ++ offset = GetOffset(offset, L, OffsetSize::kOffset21); ++ blt(scratch, 1); ++ br(ra, offset); // bgezal(scratch, offset); ++ break; ++ case less_equal: ++ Cmplt(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ Addw(scratch, scratch, Operand(-1)); ++ bge(scratch, 1); ++ bsr(L); // bltzal(scratch, offset); ++ break; ++ ++ // Unsigned comparison. ++ case Ugreater: ++ Cmpult(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ Addw(scratch, scratch, Operand(-1)); ++ blt(scratch, 1); ++ bsr(L); // bgezal(scratch, offset); ++ break; ++ case Ugreater_equal: ++ Cmpult(scratch, rs, rt); ++ Addw(scratch, scratch, Operand(-1)); ++ bge(scratch, 1); ++ bsr(L); // bltzal(scratch, offset); ++ break; ++ case Uless: ++ Cmpult(scratch, rs, rt); ++ Addw(scratch, scratch, Operand(-1)); ++ blt(scratch, 1); ++ bsr(L); // bgezal(scratch, offset); ++ break; ++ case Uless_equal: ++ Cmpult(scratch, GetRtAsRegisterHelper(rt, scratch), rs); ++ Addw(scratch, scratch, Operand(-1)); ++ bge(scratch, 1); ++ bsr(L); // bltzal(scratch, offset); ++ break; ++ ++ default: ++ UNREACHABLE(); ++ } ++ ++ return true; ++} ++ ++bool MacroAssembler::BranchAndLinkShortCheck(int32_t offset, Label* L, ++ Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkShortCheck, this); ++ BRANCH_ARGS_CHECK(cond, rs, rt); ++ ++ if (!L) { ++ DCHECK(is_int21(offset)); ++ return BranchAndLinkShortHelper(offset, nullptr, cond, rs, rt); ++ } else { ++ DCHECK_EQ(offset, 0); ++ return BranchAndLinkShortHelper(0, L, cond, rs, rt); ++ } ++} ++ ++void MacroAssembler::LoadFromConstantsTable(Register destination, ++ int constant_index) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(RootsTable::IsImmortalImmovable(RootIndex::kBuiltinsConstantsTable)); ++ LoadRoot(destination, RootIndex::kBuiltinsConstantsTable); ++ Ldl(destination, ++ FieldMemOperand(destination, ++ FixedArray::kHeaderSize + constant_index * kPointerSize)); ++} ++ ++void MacroAssembler::LoadRootRelative(Register destination, int32_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadRootRelative, this); ++ Ldl(destination, MemOperand(kRootRegister, offset)); ++} ++ ++void MacroAssembler::LoadRootRegisterOffset(Register destination, ++ intptr_t offset) { ++ // SCOPEMARK_NAME(TurboAssembler::LoadRootRegisterOffset, this); ++ if (offset == 0) { ++ Move(destination, kRootRegister); ++ } else { ++ Addl(destination, kRootRegister, Operand(offset)); ++ } ++} ++ ++MemOperand MacroAssembler::ExternalReferenceAsOperand( ++ ExternalReference reference, Register scratch) { ++ if (root_array_available_ && options().enable_root_relative_access) { ++ int64_t offset = ++ RootRegisterOffsetForExternalReference(isolate(), reference); ++ if (is_int32(offset)) { ++ return MemOperand(kRootRegister, static_cast(offset)); ++ } ++ } ++ if (root_array_available_ && options().isolate_independent_code) { ++ if (IsAddressableThroughRootRegister(isolate(), reference)) { ++ // Some external references can be efficiently loaded as an offset from ++ // kRootRegister. ++ intptr_t offset = ++ RootRegisterOffsetForExternalReference(isolate(), reference); ++ CHECK(is_int32(offset)); ++ return MemOperand(kRootRegister, static_cast(offset)); ++ } else { ++ // Otherwise, do a memory load from the external reference table. ++ Ldl(scratch, MemOperand(kRootRegister, ++ RootRegisterOffsetForExternalReferenceTableEntry( ++ isolate(), reference))); ++ return MemOperand(scratch, 0); ++ } ++ } ++ li(scratch, reference); ++ return MemOperand(scratch, 0); ++} ++ ++void MacroAssembler::Jump(Register target, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Jump, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ if (cond == cc_always) { ++ Assembler::jmp(zero_reg, target, 0); ++ } else { ++ BRANCH_ARGS_CHECK(cond, rs, rt); ++ Branch(1, NegateCondition(cond), rs, rt); ++ Assembler::jmp(zero_reg, target, 0); ++ } ++} ++ ++void MacroAssembler::Jump(intptr_t target, RelocInfo::Mode rmode, ++ Condition cond, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Jump, this); ++ Label skip; ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ li(t12, Operand(target, rmode)); ++ if (cond != cc_always) { ++ Branch(&skip, NegateCondition(cond), rs, rt); ++ } ++ Jump(t12, al, zero_reg, Operand(zero_reg)); ++ bind(&skip); ++ } ++} ++ ++void MacroAssembler::Jump(Address target, RelocInfo::Mode rmode, Condition cond, ++ Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Jump, this); ++ DCHECK(!RelocInfo::IsCodeTarget(rmode)); ++ Jump(static_cast(target), rmode, cond, rs, rt); ++} ++ ++void MacroAssembler::Jump(Handle code, RelocInfo::Mode rmode, ++ Condition cond, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Jump, this); ++ DCHECK(RelocInfo::IsCodeTarget(rmode)); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Label skip; ++ if (cond != cc_always) { ++ BranchShort(&skip, NegateCondition(cond), rs, rt); ++ } ++ ++ Builtin builtin = Builtin::kNoBuiltinId; ++ if (isolate()->builtins()->IsBuiltinHandle(code, &builtin)) { ++ TailCallBuiltin(builtin); ++ bind(&skip); ++ return; ++ } ++ ++ Jump(static_cast(code.address()), rmode, cc_always, rs, rt); ++ bind(&skip); ++} ++ ++void MacroAssembler::Jump(const ExternalReference& reference) { ++ li(t12, reference); ++ Jump(t12); ++} ++ ++// Note: To call gcc-compiled C code on sw64, you must call through t12. ++void MacroAssembler::Call(Register target, Condition cond, Register rs, ++ const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Call, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ if (cond == cc_always) { ++ call(ra, target, 0); ++ } else { ++ BRANCH_ARGS_CHECK(cond, rs, rt); ++ Branch(1, NegateCondition(cond), rs, rt); ++ call(ra, target, 0); ++ } ++ set_pc_for_safepoint(); ++} ++ ++void MacroAssembler::JumpIfIsInRange(Register value, unsigned lower_limit, ++ unsigned higher_limit, ++ Label* on_in_range) { ++ ASM_CODE_COMMENT(this); ++ if (lower_limit != 0) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Subl(scratch, value, Operand(lower_limit)); ++ Branch(on_in_range, ls, scratch, Operand(higher_limit - lower_limit)); ++ } else { ++ Branch(on_in_range, ls, value, Operand(higher_limit - lower_limit)); ++ } ++} ++ ++void MacroAssembler::Call(Address target, RelocInfo::Mode rmode, Condition cond, ++ Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Call, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ li(t12, Operand(static_cast(target), rmode), ADDRESS_LOAD); ++ Call(t12, cond, rs, rt); ++} ++ ++void MacroAssembler::Call(Handle code, RelocInfo::Mode rmode, ++ Condition cond, Register rs, const Operand& rt) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Builtin builtin = Builtin::kNoBuiltinId; ++ if (isolate()->builtins()->IsBuiltinHandle(code, &builtin)) { ++ CallBuiltin(builtin); ++ return; ++ } ++ DCHECK(RelocInfo::IsCodeTarget(rmode)); ++ Call(code.address(), rmode, cond, rs, rt); ++} ++ ++void MacroAssembler::LoadEntryFromBuiltinIndex(Register builtin_index) { ++ ASM_CODE_COMMENT(this); ++ static_assert(kSystemPointerSize == 8); ++ static_assert(kSmiTagSize == 1); ++ static_assert(kSmiTag == 0); ++ ++ // The builtin_index register contains the builtin index as a Smi. ++ SmiUntag(builtin_index, builtin_index); ++ Lsal(builtin_index, kRootRegister, builtin_index, kSystemPointerSizeLog2); ++ Ldl(builtin_index, ++ MemOperand(builtin_index, IsolateData::builtin_entry_table_offset())); ++} ++void MacroAssembler::LoadEntryFromBuiltin(Builtin builtin, ++ Register destination) { ++ Ldl(destination, EntryFromBuiltinAsOperand(builtin)); ++} ++MemOperand MacroAssembler::EntryFromBuiltinAsOperand(Builtin builtin) { ++ DCHECK(root_array_available()); ++ return MemOperand(kRootRegister, ++ IsolateData::BuiltinEntrySlotOffset(builtin)); ++} ++ ++void MacroAssembler::CallBuiltinByIndex(Register builtin_index) { ++ ASM_CODE_COMMENT(this); ++ LoadEntryFromBuiltinIndex(builtin_index); ++ Call(builtin_index); ++} ++void MacroAssembler::CallBuiltin(Builtin builtin) { ++ ASM_CODE_COMMENT_STRING(this, CommentForOffHeapTrampoline("call", builtin)); ++ Register temp = t12; ++ switch (options().builtin_call_jump_mode) { ++ case BuiltinCallJumpMode::kAbsolute: { ++ li(temp, Operand(BuiltinEntry(builtin), RelocInfo::OFF_HEAP_TARGET)); ++ Call(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kIndirect: { ++ LoadEntryFromBuiltin(builtin, temp); ++ Call(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kForMksnapshot: { ++ Handle code = isolate()->builtins()->code_handle(builtin); ++ IndirectLoadConstant(temp, code); ++ CallCodeObject(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kPCRelative: ++ // Short builtin calls is unsupported in sw64. ++ UNREACHABLE(); ++ } ++} ++ ++void MacroAssembler::TailCallBuiltin(Builtin builtin) { ++ ASM_CODE_COMMENT_STRING(this, ++ CommentForOffHeapTrampoline("tail call", builtin)); ++ Register temp = t12; ++ ++ switch (options().builtin_call_jump_mode) { ++ case BuiltinCallJumpMode::kAbsolute: { ++ li(temp, Operand(BuiltinEntry(builtin), RelocInfo::OFF_HEAP_TARGET)); ++ Jump(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kIndirect: { ++ LoadEntryFromBuiltin(builtin, temp); ++ Jump(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kForMksnapshot: { ++ Handle code = isolate()->builtins()->code_handle(builtin); ++ IndirectLoadConstant(temp, code); ++ JumpCodeObject(temp); ++ break; ++ } ++ case BuiltinCallJumpMode::kPCRelative: ++ UNREACHABLE(); ++ } ++} ++ ++void MacroAssembler::PatchAndJump(Address target) { ++ ASM_CODE_COMMENT(this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ mov(scratch, ra); ++ Align(8); ++ br(ra, 0); // jump to ld ++ ldl(t12, MemOperand(ra, kInstrSize * 3)); // ra == pc_ ++ mov(ra, scratch); ++ Assembler::jmp(zero_reg, t12, 0); ++ DCHECK_EQ(reinterpret_cast(pc_) % 8, 0); ++ *reinterpret_cast(pc_) = target; // pc_ should be align. ++ pc_ += sizeof(uint64_t); ++} ++ ++void MacroAssembler::StoreReturnAddressAndCall(Register target) { ++ ASM_CODE_COMMENT(this); ++ // This generates the final instruction sequence for calls to C functions ++ // once an exit frame has been constructed. ++ // ++ // Note that this assumes the caller code (i.e. the InstructionStream object ++ // currently being generated) is immovable or that the callee function ++ // cannot trigger GC, since the callee function will return to it. ++ ++ // Compute the return address in lr to return to after the jump below. The ++ // pc is already at '+ 8' from the current instruction; but return is after ++ // three instructions, so add another 4 to pc to get the return address. ++ ++ Assembler::BlockTrampolinePoolScope block_trampoline_pool(this); ++ static constexpr int kNumInstructionsToJump = 2; ++ Label find_ra; ++ ++ Move(t12, target); ++ br(kScratchReg, 0); ++ addl(kScratchReg, (kNumInstructionsToJump + 1) * kInstrSize, ra); ++ bind(&find_ra); ++ stl(ra, MemOperand(sp, 0)); ++ call(ra, t12, 0); ++ DCHECK_EQ(kNumInstructionsToJump, InstructionsGeneratedSince(&find_ra)); ++ setfpec1(); ++} ++ ++void MacroAssembler::Ret(Condition cond, Register rs, const Operand& rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Ret, this); ++ Jump(ra, cond, rs, rt); ++} ++ ++void MacroAssembler::BranchLong(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchLong, this); ++ // use jmp only when Label is bound and target is beyond br's limit ++ if (L->is_bound() && !is_near(L)) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ int64_t imm64; ++ imm64 = branch_long_offset(L); ++ DCHECK(is_int32(imm64)); ++ br(t8, 0); ++ li(t12, Operand(imm64)); ++ addl(t8, t12, t12); ++ Assembler::jmp(zero_reg, t12, 0); ++ } else { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ { ++ BlockGrowBufferScope block_buf_growth(this); ++ // Buffer growth (and relocation) must be blocked for internal ++ // references until associated instructions are emitted and available to ++ // be patched. ++ RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); ++ br(L); // ZHJ j(L); ++ } ++ } ++} ++ ++// SKTODO ++void MacroAssembler::BranchLong(int32_t offset) { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ br(t8, 0); ++ li(t12, Operand(offset)); ++ addl(t8, t12, t12); ++ Assembler::jmp(zero_reg, t12, 0); ++} ++ ++void MacroAssembler::BranchAndLinkLong(Label* L) { ++ // SCOPEMARK_NAME(TurboAssembler::BranchAndLinkLong, this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ { ++ BlockGrowBufferScope block_buf_growth(this); ++ // Buffer growth (and relocation) must be blocked for internal references ++ // until associated instructions are emitted and available to be patched. ++ RecordRelocInfo(RelocInfo::INTERNAL_REFERENCE_ENCODED); ++ bsr(L); // jal(L); ++ } ++} ++ ++void MacroAssembler::DropArguments(Register count, ArgumentsCountType type, ++ ArgumentsCountMode mode, Register scratch) { ++ switch (type) { ++ case kCountIsInteger: { ++ Lsal(sp, sp, count, kPointerSizeLog2); ++ break; ++ } ++ case kCountIsSmi: { ++ static_assert(kSmiTagSize == 1 && kSmiTag == 0); ++ DCHECK_NE(scratch, no_reg); ++ SmiScale(scratch, count, kPointerSizeLog2); ++ Addl(sp, sp, scratch); ++ break; ++ } ++ case kCountIsBytes: { ++ Addl(sp, sp, count); ++ break; ++ } ++ } ++ if (mode == kCountExcludesReceiver) { ++ Addl(sp, sp, kSystemPointerSize); ++ } ++} ++ ++void MacroAssembler::DropArgumentsAndPushNewReceiver(Register argc, ++ Register receiver, ++ ArgumentsCountType type, ++ ArgumentsCountMode mode, ++ Register scratch) { ++ DCHECK(!AreAliased(argc, receiver)); ++ if (mode == kCountExcludesReceiver) { ++ // Drop arguments without receiver and override old receiver. ++ DropArguments(argc, type, kCountIncludesReceiver, scratch); ++ Stl(receiver, MemOperand(sp)); ++ } else { ++ DropArguments(argc, type, mode, scratch); ++ Push(receiver); ++ } ++} ++ ++void MacroAssembler::DropAndRet(int drop) { ++ // SCOPEMARK_NAME(TurboAssembler::DropAndRet, this); ++ if (is_uint8(drop * kPointerSize)) { ++ addl(sp, drop * kPointerSize, sp); ++ } else { ++ DCHECK(is_int16(drop * kPointerSize)); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ ldi(scratch, drop * kPointerSize, zero_reg); ++ addl(sp, scratch, sp); ++ } ++ Ret(); ++} ++ ++void MacroAssembler::DropAndRet(int drop, Condition cond, Register r1, ++ const Operand& r2) { ++ // SCOPEMARK_NAME(TurboAssembler::DropAndRet, this); ++ // Both Drop and Ret need to be conditional. ++ Label skip; ++ if (cond != cc_always) { ++ Branch(&skip, NegateCondition(cond), r1, r2); ++ } ++ ++ Drop(drop); ++ Ret(); ++ ++ if (cond != cc_always) { ++ bind(&skip); ++ } ++} ++ ++void MacroAssembler::Drop(int count, Condition cond, Register reg, ++ const Operand& op) { ++ // SCOPEMARK_NAME(TurboAssembler::Drop, this); ++ if (count <= 0) { ++ return; ++ } ++ ++ Label skip; ++ ++ if (cond != al) { ++ Branch(&skip, NegateCondition(cond), reg, op); ++ } ++ ++ Addl(sp, sp, Operand(count * kPointerSize)); ++ ++ if (cond != al) { ++ bind(&skip); ++ } ++} ++ ++void MacroAssembler::Swap(Register reg1, Register reg2, Register scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::Swap, this); ++ if (scratch == no_reg) { ++ Xor(reg1, reg1, Operand(reg2)); ++ Xor(reg2, reg2, Operand(reg1)); ++ Xor(reg1, reg1, Operand(reg2)); ++ } else { ++ mov(scratch, reg1); ++ mov(reg1, reg2); ++ mov(reg2, scratch); ++ } ++} ++ ++void MacroAssembler::Call(Label* target) { ++ // SCOPEMARK_NAME(TurboAssembler::Call, this); ++ BranchAndLink(target); ++} ++ ++void MacroAssembler::LoadAddress(Register dst, Label* target) { ++ uint64_t address = jump_address(target); ++ li(dst, address); ++} ++ ++void MacroAssembler::Push( ++ Smi smi) { // SCOPEMARK_NAME(TurboAssembler::Push, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(smi)); ++ Push(scratch); ++} ++ ++void MacroAssembler::Push(Handle handle) { ++ // SCOPEMARK_NAME(TurboAssembler::Push, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(handle)); ++ Push(scratch); ++} ++ ++// SKTODO ++void MacroAssembler::PushArray(Register array, Register size, Register scratch, ++ Register scratch2, PushArrayOrder order) { ++ DCHECK(!AreAliased(array, size, scratch, scratch2)); ++ Label loop, entry; ++ if (order == PushArrayOrder::kReverse) { ++ mov(scratch, zero_reg); ++ jmp(&entry); ++ bind(&loop); ++ Lsal(scratch2, array, scratch, kPointerSizeLog2); ++ Ldl(scratch2, MemOperand(scratch2)); ++ Push(scratch2); ++ Addl(scratch, scratch, Operand(1)); ++ bind(&entry); ++ Branch(&loop, less, scratch, Operand(size)); ++ } else { ++ mov(scratch, size); ++ jmp(&entry); ++ bind(&loop); ++ Lsal(scratch2, array, scratch, kPointerSizeLog2); ++ Ldl(scratch2, MemOperand(scratch2)); ++ Push(scratch2); ++ bind(&entry); ++ Addl(scratch, scratch, Operand(-1)); ++ Branch(&loop, greater_equal, scratch, Operand(zero_reg)); ++ } ++} ++ ++// --------------------------------------------------------------------------- ++// Exception handling. ++ ++void MacroAssembler::PushStackHandler() { ++ // SCOPEMARK_NAME(MacroAssembler::PushStackHandler, this); ++ // Adjust this code if not the case. ++ static_assert(StackHandlerConstants::kSize == 2 * kPointerSize); ++ static_assert(StackHandlerConstants::kNextOffset == 0 * kPointerSize); ++ ++ Push(Smi::zero()); // Padding. ++ ++ // Link the current handler as the next handler. ++ li(t9, ++ ExternalReference::Create(IsolateAddressId::kHandlerAddress, isolate())); ++ Ldl(t1, MemOperand(t9)); ++ Push(t1); ++ ++ // Set this new handler as the current one. ++ Stl(sp, MemOperand(t9)); ++} ++ ++void MacroAssembler::PopStackHandler() { ++ // SCOPEMARK_NAME(MacroAssembler::PopStackHandler, this); ++ static_assert(StackHandlerConstants::kNextOffset == 0); ++ pop(a1); ++ Addl(sp, sp, ++ Operand( ++ static_cast(StackHandlerConstants::kSize - kPointerSize))); ++ // UseScratchRegisterScope temps(this); ++ // Register scratch = temps.Acquire(); ++ // li(scratch, ++ li(t9, ++ ExternalReference::Create(IsolateAddressId::kHandlerAddress, isolate())); ++ Stl(a1, MemOperand(t9)); ++} ++ ++void MacroAssembler::FPUCanonicalizeNaN(const DoubleRegister dst, ++ const DoubleRegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::FPUCanonicalizeNaN, this); ++ fsubd(src, kDoubleRegZero, dst); ++} ++ ++void MacroAssembler::MovFromFloatResult(const DoubleRegister dst) { ++ // SCOPEMARK_NAME(TurboAssembler::MovFromFloatResult, this); ++ Move(dst, f0); // Reg f0 is o32 ABI FP return value. ++} ++ ++void MacroAssembler::MovFromFloatParameter(const DoubleRegister dst) { ++ // SCOPEMARK_NAME(TurboAssembler::MovFromFloatParameter, this); ++ Move(dst, f16); // Reg f16 is sw64 ABI FP first argument value. ++} ++ ++void MacroAssembler::MovToFloatParameter(DoubleRegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToFloatParameter, this); ++ Move(f16, src); ++} ++ ++void MacroAssembler::MovToFloatResult(DoubleRegister src) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToFloatResult, this); ++ Move(f0, src); ++} ++ ++void MacroAssembler::MovToFloatParameters(DoubleRegister fsrc0, ++ DoubleRegister fsrc1) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToFloatParameters, this); ++ const DoubleRegister fparg2 = f17; ++ if (fsrc1 == f16) { ++ DCHECK(fsrc0 != fparg2); ++ Move(fparg2, fsrc1); ++ Move(f16, fsrc0); ++ } else { ++ Move(f16, fsrc0); ++ Move(fparg2, fsrc1); ++ } ++} ++ ++void MacroAssembler::MovFromGeneralResult(const Register dst) { ++ // SCOPEMARK_NAME(TurboAssembler::MovFromGeneralResult, this); ++ Move(dst, v0); ++} ++ ++void MacroAssembler::MovFromGeneralParameter(const Register dst) { ++ // SCOPEMARK_NAME(TurboAssembler::MovFromGeneralParameter, this); ++ Move(dst, a0); ++} ++ ++void MacroAssembler::MovToGeneralParameter(Register src) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToGeneralParameter, this); ++ Move(a0, src); ++} ++ ++void MacroAssembler::MovToGeneralResult(Register src) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToGeneralResult, this); ++ Move(a0, src); ++} ++ ++void MacroAssembler::MovToGeneralParameters(Register src0, Register src1) { ++ // SCOPEMARK_NAME(TurboAssembler::MovToGeneralParameters, this); ++ if (src1 == a0) { ++ if (src0 != a1) { ++ Move(a1, src1); // src1 = a0 ++ Move(a0, src0); ++ } else { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Move(scratch, src1); // at = src1(a0) ++ Move(a0, src0); // a0 = src0(a1) ++ Move(a1, scratch); // a1 = at ++ } ++ } else { ++ Move(a0, src0); ++ Move(a1, src1); ++ } ++} ++ ++// ----------------------------------------------------------------------------- ++// JavaScript invokes. ++ ++void MacroAssembler::LoadStackLimit(Register destination, StackLimitKind kind) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(root_array_available()); ++ Isolate* isolate = this->isolate(); ++ ExternalReference limit = ++ kind == StackLimitKind::kRealStackLimit ++ ? ExternalReference::address_of_real_jslimit(isolate) ++ : ExternalReference::address_of_jslimit(isolate); ++ DCHECK(MacroAssembler::IsAddressableThroughRootRegister(isolate, limit)); ++ ++ intptr_t offset = ++ MacroAssembler::RootRegisterOffsetForExternalReference(isolate, limit); ++ CHECK(is_int32(offset)); ++ Ldl(destination, MemOperand(kRootRegister, static_cast(offset))); ++} ++ ++void MacroAssembler::StackOverflowCheck(Register num_args, Register scratch1, ++ Register scratch2, ++ Label* stack_overflow) { ++ ASM_CODE_COMMENT(this); ++ // Check the stack for overflow. We are not trying to catch ++ // interruptions (e.g. debug break and preemption) here, so the "real stack ++ // limit" is checked. ++ ++ LoadStackLimit(scratch1, StackLimitKind::kRealStackLimit); ++ // Make scratch1 the space we have left. The stack might already be overflowed ++ // here which will cause scratch1 to become negative. ++ subl(sp, scratch1, scratch1); ++ // Check if the arguments will overflow the stack. ++ slll(num_args, kPointerSizeLog2, scratch2); ++ // Signed comparison. ++ Branch(stack_overflow, le, scratch1, Operand(scratch2)); ++} ++ ++void MacroAssembler::TestCodeIsMarkedForDeoptimizationAndJump( ++ Register code_data_container, Register scratch, Condition cond, ++ Label* target) { ++ Ldhu(scratch, ++ FieldMemOperand(code_data_container, Code::kKindSpecificFlagsOffset)); ++ And(scratch, scratch, Operand(1 << Code::kMarkedForDeoptimizationBit)); ++ Branch(target, cond, scratch, Operand(zero_reg)); ++} ++ ++Operand MacroAssembler::ClearedValue() const { ++ return Operand( ++ static_cast(HeapObjectReference::ClearedValue(isolate()).ptr())); ++} ++ ++void MacroAssembler::InvokePrologue(Register expected_parameter_count, ++ Register actual_parameter_count, ++ Label* done, InvokeType type) { ++ ASM_CODE_COMMENT(this); ++ Label regular_invoke; ++ ++ // a0: actual arguments count ++ // a1: function (passed through to callee) ++ // a2: expected arguments count ++ ++ DCHECK_EQ(actual_parameter_count, a0); ++ DCHECK_EQ(expected_parameter_count, a2); ++ ++ // If overapplication or if the actual argument count is equal to the ++ // formal parameter count, no need to push extra undefined values. ++ Subl(expected_parameter_count, expected_parameter_count, ++ actual_parameter_count); ++ Branch(®ular_invoke, le, expected_parameter_count, Operand(zero_reg)); ++ ++ Label stack_overflow; ++ StackOverflowCheck(expected_parameter_count, t0, t1, &stack_overflow); ++ // Underapplication. Move the arguments already in the stack, including the ++ // receiver and the return address. ++ { ++ Label copy; ++ Register src = t9, dest = t10; ++ mov(src, sp); ++ slll(expected_parameter_count, kSystemPointerSizeLog2, t0); ++ Subl(sp, sp, Operand(t0)); ++ // Update stack pointer. ++ mov(dest, sp); ++ mov(t0, actual_parameter_count); ++ bind(©); ++ Ldl(t1, MemOperand(src, 0)); ++ Stl(t1, MemOperand(dest, 0)); ++ Subl(t0, t0, Operand(1)); ++ Addl(src, src, Operand(kSystemPointerSize)); ++ Addl(dest, dest, Operand(kSystemPointerSize)); ++ Branch(©, gt, t0, Operand(zero_reg)); ++ } ++ ++ // Fill remaining expected arguments with undefined values. ++ LoadRoot(t0, RootIndex::kUndefinedValue); ++ { ++ Label loop; ++ bind(&loop); ++ Stl(t0, MemOperand(t10, 0)); ++ Subl(expected_parameter_count, expected_parameter_count, Operand(1)); ++ Addl(t10, t10, Operand(kSystemPointerSize)); ++ Branch(&loop, gt, expected_parameter_count, Operand(zero_reg)); ++ } ++ br(®ular_invoke); ++ // nop(); ++ ++ bind(&stack_overflow); ++ { ++ FrameScope frame( ++ this, has_frame() ? StackFrame::NO_FRAME_TYPE : StackFrame::INTERNAL); ++ CallRuntime(Runtime::kThrowStackOverflow); ++ sys_call(0x80); ++ } ++ ++ bind(®ular_invoke); ++} ++ ++void MacroAssembler::CheckDebugHook(Register fun, Register new_target, ++ Register expected_parameter_count, ++ Register actual_parameter_count) { ++ Label skip_hook; ++ ++ li(t0, ExternalReference::debug_hook_on_function_call_address(isolate())); ++ Ldb(t0, MemOperand(t0)); ++ Branch(&skip_hook, eq, t0, Operand(zero_reg)); ++ ++ { ++ // Load receiver to pass it later to DebugOnFunctionCall hook. ++ LoadReceiver(t0, actual_parameter_count); ++ ++ FrameScope frame( ++ this, has_frame() ? StackFrame::NO_FRAME_TYPE : StackFrame::INTERNAL); ++ SmiTag(expected_parameter_count); ++ Push(expected_parameter_count); ++ ++ SmiTag(actual_parameter_count); ++ Push(actual_parameter_count); ++ ++ if (new_target.is_valid()) { ++ Push(new_target); ++ } ++ Push(fun); ++ Push(fun); ++ Push(t0); ++ CallRuntime(Runtime::kDebugOnFunctionCall); ++ Pop(fun); ++ if (new_target.is_valid()) { ++ Pop(new_target); ++ } ++ ++ Pop(actual_parameter_count); ++ SmiUntag(actual_parameter_count); ++ ++ Pop(expected_parameter_count); ++ SmiUntag(expected_parameter_count); ++ } ++ bind(&skip_hook); ++} ++ ++void MacroAssembler::InvokeFunctionCode(Register function, Register new_target, ++ Register expected_parameter_count, ++ Register actual_parameter_count, ++ InvokeType type) { ++ // You can't call a function without a valid frame. ++ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame()); ++ DCHECK_EQ(function, a1); ++ DCHECK_IMPLIES(new_target.is_valid(), new_target == a3); ++ ++ // On function call, call into the debugger if necessary. ++ CheckDebugHook(function, new_target, expected_parameter_count, ++ actual_parameter_count); ++ ++ // Clear the new.target register if not given. ++ if (!new_target.is_valid()) { ++ LoadRoot(a3, RootIndex::kUndefinedValue); ++ } ++ ++ Label done; ++ InvokePrologue(expected_parameter_count, actual_parameter_count, &done, type); ++ // We call indirectly through the code field in the function to ++ // allow recompilation to take effect without changing any of the ++ // call sites. ++ Register code = kJavaScriptCallCodeStartRegister; ++ Ldl(code, FieldMemOperand(function, JSFunction::kCodeOffset)); ++ switch (type) { ++ case InvokeType::kCall: ++ CallCodeObject(code); ++ break; ++ case InvokeType::kJump: ++ JumpCodeObject(code); ++ break; ++ } ++ ++ // Continue here if InvokePrologue does handle the invocation due to ++ // mismatched parameter counts. ++ bind(&done); ++} ++ ++void MacroAssembler::InvokeFunctionWithNewTarget( ++ Register function, Register new_target, Register actual_parameter_count, ++ InvokeType type) { ++ ASM_CODE_COMMENT(this); ++ // You can't call a function without a valid frame. ++ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame()); ++ ++ // Contract with called JS functions requires that function is passed in a1. ++ DCHECK_EQ(function, a1); ++ Register expected_parameter_count = a2; ++ Register temp_reg = t0; ++ Ldl(temp_reg, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); ++ Ldl(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); ++ // The argument count is stored as int32_t on 64-bit platforms. ++ // TODO(plind): Smi on 32-bit platforms. ++ Ldhu(expected_parameter_count, ++ FieldMemOperand(temp_reg, ++ SharedFunctionInfo::kFormalParameterCountOffset)); ++ ++ InvokeFunctionCode(a1, new_target, expected_parameter_count, ++ actual_parameter_count, type); ++} ++ ++void MacroAssembler::InvokeFunction(Register function, ++ Register expected_parameter_count, ++ Register actual_parameter_count, ++ InvokeType type) { ++ ASM_CODE_COMMENT(this); ++ // You can't call a function without a valid frame. ++ DCHECK_IMPLIES(type == InvokeType::kCall, has_frame()); ++ ++ // Contract with called JS functions requires that function is passed in a1. ++ DCHECK_EQ(function, a1); ++ ++ // Get the function and setup the context. ++ Ldl(cp, FieldMemOperand(a1, JSFunction::kContextOffset)); ++ ++ InvokeFunctionCode(a1, no_reg, expected_parameter_count, ++ actual_parameter_count, type); ++} ++ ++// --------------------------------------------------------------------------- ++// Support functions. ++ ++void MacroAssembler::GetObjectType( ++ Register object, Register map, ++ Register type_reg) { // SCOPEMARK_NAME(MacroAssembler::GetObjectType, ++ // this); ++ LoadMap(map, object); ++ Ldhu(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset)); ++} ++ ++void MacroAssembler::GetInstanceTypeRange(Register map, Register type_reg, ++ InstanceType lower_limit, ++ Register range) { ++ Ldhu(type_reg, FieldMemOperand(map, Map::kInstanceTypeOffset)); ++ Subl(range, type_reg, Operand(lower_limit)); ++} ++ ++// ----------------------------------------------------------------------------- ++// Runtime calls. ++ ++void MacroAssembler::DaddOverflow(Register dst, Register left, ++ const Operand& right, Register overflow) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register right_reg = no_reg; ++ Register scratch = t11; ++ if (!right.is_reg()) { ++ li(at, Operand(right)); ++ right_reg = at; ++ } else { ++ right_reg = right.rm(); ++ } ++ ++ DCHECK(left != scratch && right_reg != scratch && dst != scratch && ++ overflow != scratch); ++ DCHECK(overflow != left && overflow != right_reg); ++ ++ if (dst == left || dst == right_reg) { ++ addl(left, right_reg, scratch); ++ xor_(scratch, left, overflow); ++ xor_(scratch, right_reg, at); ++ and_(overflow, at, overflow); ++ mov(dst, scratch); ++ } else { ++ addl(left, right_reg, dst); ++ xor_(dst, left, overflow); ++ xor_(dst, right_reg, at); ++ and_(overflow, at, overflow); ++ } ++} ++ ++void MacroAssembler::SublOverflow(Register dst, Register left, ++ const Operand& right, Register overflow) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register right_reg = no_reg; ++ Register scratch = t11; ++ if (!right.is_reg()) { ++ li(at, Operand(right)); ++ right_reg = at; ++ } else { ++ right_reg = right.rm(); ++ } ++ ++ DCHECK(left != scratch && right_reg != scratch && dst != scratch && ++ overflow != scratch); ++ DCHECK(overflow != left && overflow != right_reg); ++ ++ if (dst == left || dst == right_reg) { ++ subl(left, right_reg, scratch); ++ xor_(left, scratch, overflow); ++ xor_(left, right_reg, at); ++ and_(overflow, at, overflow); ++ mov(dst, scratch); ++ } else { ++ subl(left, right_reg, dst); ++ xor_(left, dst, overflow); ++ xor_(left, right_reg, at); ++ and_(overflow, at, overflow); ++ } ++} ++ ++void MacroAssembler::MulwOverflow(Register dst, Register left, ++ const Operand& right, Register overflow) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register right_reg = no_reg; ++ Register scratch = t11; ++ if (!right.is_reg()) { ++ li(at, Operand(right)); ++ right_reg = at; ++ } else { ++ right_reg = right.rm(); ++ } ++ ++ DCHECK(left != scratch && right_reg != scratch && dst != scratch && ++ overflow != scratch); ++ DCHECK(overflow != left && overflow != right_reg); ++ ++ if (dst == left || dst == right_reg) { ++ Mulw(scratch, left, right_reg); ++ Mulwh(overflow, left, right_reg); ++ mov(dst, scratch); ++ } else { ++ Mulw(dst, left, right_reg); ++ Mulwh(overflow, left, right_reg); ++ } ++ ++ sral(dst, 32, scratch); ++ xor_(overflow, scratch, overflow); ++} ++ ++void MacroAssembler::MullOverflow(Register dst, Register left, ++ const Operand& right, Register overflow) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Register right_reg = no_reg; ++ Register scratch = t11; ++ if (!right.is_reg()) { ++ li(at, Operand(right)); ++ right_reg = at; ++ } else { ++ right_reg = right.rm(); ++ } ++ ++ DCHECK(left != scratch && right_reg != scratch && dst != scratch && ++ overflow != scratch); ++ DCHECK(overflow != left && overflow != right_reg); ++ ++ // if (dst == left || dst == right_reg) { ++ // Mulw(scratch, left, right_reg); ++ // Mulwh(overflow, left, right_reg); ++ // mov(dst, scratch); ++ // } else { ++ // Mulw(dst, left, right_reg); ++ // Mulwh(overflow, left, right_reg); ++ // } ++ ++ // sral(dst, 32 ,scratch); ++ // xor_ins(overflow, scratch, overflow); ++ Mull(overflow, left, right_reg); //optimize from octane ++ Mulw(dst, left, right_reg); ++ xor_(overflow, dst, overflow); ++} ++ ++void MacroAssembler::CallRuntime(const Runtime::Function* f, ++ int num_arguments) { ++ ASM_CODE_COMMENT(this); ++ // All parameters are on the stack. v0 has the return value after call. ++ ++ // If the expected number of arguments of the runtime function is ++ // constant, we check that the actual number of arguments match the ++ // expectation. ++ CHECK(f->nargs < 0 || f->nargs == num_arguments); ++ ++ // TODO(1236192): Most runtime routines don't need the number of ++ // arguments passed in because it is constant. At some point we ++ // should remove this need and make the runtime routine entry code ++ // smarter. ++ PrepareCEntryArgs(num_arguments); ++ PrepareCEntryFunction(ExternalReference::Create(f)); ++ Handle code = CodeFactory::CEntry(isolate(), f->result_size); ++ Call(code, RelocInfo::CODE_TARGET); ++} ++ ++void MacroAssembler::TailCallRuntime(Runtime::FunctionId fid) { ++ ASM_CODE_COMMENT(this); ++ const Runtime::Function* function = Runtime::FunctionForId(fid); ++ DCHECK_EQ(1, function->result_size); ++ if (function->nargs >= 0) { ++ PrepareCEntryArgs(function->nargs); ++ } ++ JumpToExternalReference(ExternalReference::Create(fid)); ++} ++ ++void MacroAssembler::JumpToExternalReference(const ExternalReference& builtin, ++ bool builtin_exit_frame) { ++ // SCOPEMARK_NAME(MacroAssembler::JumpToExternalReference, this); ++ PrepareCEntryFunction(builtin); ++ Handle code = ++ CodeFactory::CEntry(isolate(), 1, ArgvMode::kStack, builtin_exit_frame); ++ Jump(code, RelocInfo::CODE_TARGET, al, zero_reg, Operand(zero_reg)); ++} ++ ++void MacroAssembler::LoadWeakValue(Register out, Register in, ++ Label* target_if_cleared) { ++ // SCOPEMARK_NAME(MacroAssembler::LoadWeakValue, this); ++ Branch(target_if_cleared, eq, in, Operand(kClearedWeakHeapObjectLower32)); ++ ++ And(out, in, Operand(~kWeakHeapObjectMask)); ++} ++ ++void MacroAssembler::EmitIncrementCounter(StatsCounter* counter, int value, ++ Register scratch1, ++ Register scratch2) { ++ DCHECK_GT(value, 0); ++ if (v8_flags.native_code_counters && counter->Enabled()) { ++ ASM_CODE_COMMENT(this); ++ // This operation has to be exactly 32-bit wide in case the external ++ // reference table redirects the counter to a uint32_t ++ // dummy_stats_counter_ field. ++ li(scratch2, ExternalReference::Create(counter)); ++ Ldw(scratch1, MemOperand(scratch2)); ++ Addw(scratch1, scratch1, Operand(value)); ++ Stw(scratch1, MemOperand(scratch2)); ++ } ++} ++ ++void MacroAssembler::EmitDecrementCounter(StatsCounter* counter, int value, ++ Register scratch1, ++ Register scratch2) { ++ DCHECK_GT(value, 0); ++ if (v8_flags.native_code_counters && counter->Enabled()) { ++ ASM_CODE_COMMENT(this); ++ // This operation has to be exactly 32-bit wide in case the external ++ // reference table redirects the counter to a uint32_t ++ // dummy_stats_counter_ field. ++ li(scratch2, ExternalReference::Create(counter)); ++ Ldw(scratch1, MemOperand(scratch2)); ++ Subw(scratch1, scratch1, Operand(value)); ++ Stw(scratch1, MemOperand(scratch2)); ++ } ++} ++ ++// ----------------------------------------------------------------------------- ++// Debugging. ++ ++void MacroAssembler::Trap() { halt(); } ++void MacroAssembler::DebugBreak() { halt(); } ++ ++void MacroAssembler::Check(Condition cc, AbortReason reason, Register rs, ++ Operand rt) { ++ // SCOPEMARK_NAME(TurboAssembler::Check, this); ++ Label L; ++ Branch(&L, cc, rs, rt); ++ Abort(reason); ++ // Will not return here. ++ bind(&L); ++} ++ ++void MacroAssembler::Abort(AbortReason reason) { ++ // SCOPEMARK_NAME(TurboAssembler::Abort, this); ++ Label abort_start; ++ bind(&abort_start); ++ if (v8_flags.code_comments) { ++ const char* msg = GetAbortReason(reason); ++ RecordComment("Abort message: "); ++ RecordComment(msg); ++ } ++ ++ // Avoid emitting call to builtin if requested. ++ if (trap_on_abort()) { ++ halt(); // stop(msg); ++ return; ++ } ++ ++ if (should_abort_hard()) { ++ // We don't care if we constructed a frame. Just pretend we did. ++ FrameScope assume_frame(this, StackFrame::NO_FRAME_TYPE); ++ PrepareCallCFunction(0, a0); ++ li(a0, Operand(static_cast(reason))); ++ CallCFunction(ExternalReference::abort_with_reason(), 1); ++ return; ++ } ++ ++ Move(a0, Smi::FromInt(static_cast(reason))); ++ ++ { ++ // We don't actually want to generate a pile of code for this, so just ++ // claim there is a stack frame, without generating one. ++ FrameScope scope(this, StackFrame::NO_FRAME_TYPE); ++ if (root_array_available()) { ++ // Generate an indirect call via builtins entry table here in order to ++ // ensure that the interpreter_entry_return_pc_offset is the same for ++ // InterpreterEntryTrampoline and InterpreterEntryTrampolineForProfiling ++ // when v8_flags.debug_code is enabled. ++ LoadEntryFromBuiltin(Builtin::kAbort, t12); ++ Call(t12); ++ } else { ++ Call(BUILTIN_CODE(isolate(), Abort), RelocInfo::CODE_TARGET); ++ } ++ } ++ // Will not return here. ++ if (is_trampoline_pool_blocked()) { ++ // If the calling code cares about the exact number of ++ // instructions generated, we insert padding here to keep the size ++ // of the Abort macro constant. ++ // Currently in debug mode with debug_code enabled the number of ++ // generated instructions is 10, so we use this as a maximum value. ++ static const int kExpectedAbortInstructions = 10; ++ int abort_instructions = InstructionsGeneratedSince(&abort_start); ++ DCHECK_LE(abort_instructions, kExpectedAbortInstructions); ++ while (abort_instructions++ < kExpectedAbortInstructions) { ++ nop(); ++ } ++ } ++} ++ ++void MacroAssembler::LoadMap(Register destination, Register object) { ++ Ldl(destination, FieldMemOperand(object, HeapObject::kMapOffset)); ++} ++ ++void MacroAssembler::LoadNativeContextSlot(Register dst, int index) { ++ LoadMap(dst, cp); ++ Ldl(dst, FieldMemOperand( ++ dst, Map::kConstructorOrBackPointerOrNativeContextOffset)); ++ Ldl(dst, MemOperand(dst, Context::SlotOffset(index))); ++} ++ ++void MacroAssembler::StubPrologue(StackFrame::Type type) { ++ // SCOPEMARK_NAME(TurboAssembler::StubPrologue, this); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(StackFrame::TypeToMarker(type))); ++ PushCommonFrame(scratch); ++} ++ ++void MacroAssembler::Prologue() { ++ // SCOPEMARK_NAME(TurboAssembler::Prologue, this); ++ PushStandardFrame(a1); ++} ++ ++void MacroAssembler::EnterFrame(StackFrame::Type type) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Push(ra, fp); ++ Move(fp, sp); ++ if (!StackFrame::IsJavaScript(type)) { ++ li(kScratchReg, Operand(StackFrame::TypeToMarker(type))); ++ Push(kScratchReg); ++ } ++#if V8_ENABLE_WEBASSEMBLY ++ if (type == StackFrame::WASM || type == StackFrame::WASM_LIFTOFF_SETUP) ++ Push(kWasmInstanceRegister); ++#endif // V8_ENABLE_WEBASSEMBLY ++} ++ ++void MacroAssembler::LeaveFrame(StackFrame::Type type) { ++ ASM_CODE_COMMENT(this); ++ Addl(sp, fp, 2 * kPointerSize); ++ Ldl(ra, MemOperand(fp, 1 * kPointerSize)); ++ Ldl(fp, MemOperand(fp, 0 * kPointerSize)); ++} ++ ++void MacroAssembler::EnterExitFrame(int stack_space, ++ StackFrame::Type frame_type) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(frame_type == StackFrame::EXIT || ++ frame_type == StackFrame::BUILTIN_EXIT); ++ ++ // Set up the frame structure on the stack. ++ static_assert(2 * kPointerSize == ExitFrameConstants::kCallerSPDisplacement); ++ static_assert(1 * kPointerSize == ExitFrameConstants::kCallerPCOffset); ++ static_assert(0 * kPointerSize == ExitFrameConstants::kCallerFPOffset); ++ ++ // This is how the stack will look: ++ // fp + 2 (==kCallerSPDisplacement) - old stack's end ++ // [fp + 1 (==kCallerPCOffset)] - saved old ra ++ // [fp + 0 (==kCallerFPOffset)] - saved old fp ++ // [fp - 1 StackFrame::EXIT Smi ++ // [fp - 2 (==kSPOffset)] - sp of the called function ++ // fp - (2 + stack_space + alignment) == sp == [fp - kSPOffset] - top of the ++ // new stack (will contain saved ra) ++ ++ // Save registers and reserve room for saved entry sp and code object. ++ subl(sp, 2 * kPointerSize + ExitFrameConstants::kFixedFrameSizeFromFp, sp); ++ Stl(ra, MemOperand(sp, 3 * kPointerSize)); ++ Stl(fp, MemOperand(sp, 2 * kPointerSize)); ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ li(scratch, Operand(StackFrame::TypeToMarker(frame_type))); ++ Stl(scratch, MemOperand(sp, 1 * kPointerSize)); ++ } ++ // Set up new frame pointer. ++ addl(sp, ExitFrameConstants::kFixedFrameSizeFromFp, fp); ++ ++ if (v8_flags.debug_code) { ++ Stl(zero_reg, MemOperand(fp, ExitFrameConstants::kSPOffset)); ++ } ++ ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ // Save the frame pointer and the context in top. ++ li(t11, ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, ++ isolate())); ++ Stl(fp, MemOperand(t11)); ++ li(t11, ++ ExternalReference::Create(IsolateAddressId::kContextAddress, isolate())); ++ Stl(cp, MemOperand(t11)); ++ } ++ ++ const int frame_alignment = MacroAssembler::ActivationFrameAlignment(); ++ ++ // Reserve place for the return address, stack space and an optional slot ++ // (used by DirectCEntry to hold the return value if a struct is ++ // returned) and align the frame preparing for calling the runtime function. ++ DCHECK_GE(stack_space, 0); ++ Subl(sp, sp, Operand((stack_space + 2) * kPointerSize)); ++ if (frame_alignment > 0) { ++ DCHECK(base::bits::IsPowerOfTwo(frame_alignment)); ++ And(sp, sp, Operand(-frame_alignment)); // Align stack. ++ } ++ ++ // Set the exit frame sp value to point just before the return address ++ // location. ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ addl(sp, kPointerSize, scratch); ++ Stl(scratch, MemOperand(fp, ExitFrameConstants::kSPOffset)); ++} ++ ++void MacroAssembler::LeaveExitFrame(Register argument_count, bool do_return, ++ bool argument_count_is_length) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ ++ // Clear top frame. ++ li(t11, ++ ExternalReference::Create(IsolateAddressId::kCEntryFPAddress, isolate())); ++ Stl(zero_reg, MemOperand(t11)); ++ ++ // Restore current context from top and clear it in debug mode. ++ li(t11, ++ ExternalReference::Create(IsolateAddressId::kContextAddress, isolate())); ++ Ldl(cp, MemOperand(t11)); ++ ++ if (v8_flags.debug_code) { ++ UseScratchRegisterScope temp(this); ++ Register scratch = temp.Acquire(); ++ li(scratch, Operand(Context::kInvalidContext)); ++ Stl(scratch, MemOperand(t11)); ++ } ++ ++ // Pop the arguments, restore registers, and return. ++ mov(sp, fp); // Respect ABI stack constraint. ++ Ldl(fp, MemOperand(sp, ExitFrameConstants::kCallerFPOffset)); ++ Ldl(ra, MemOperand(sp, ExitFrameConstants::kCallerPCOffset)); ++ ++ if (argument_count.is_valid()) { ++ if (argument_count_is_length) { ++ addl(sp, argument_count, sp); ++ } else { ++ s8addl(argument_count, sp, sp); ++ DCHECK_EQ(kPointerSizeLog2, 3); ++ } ++ } ++ ++ addl(sp, 2 * kPointerSize, sp); ++ if (do_return) { ++ // If returning, the instruction in the delay slot will be the addw below. ++ Ret(); ++ } ++} ++ ++int MacroAssembler::ActivationFrameAlignment() { ++#if V8_HOST_ARCH_SW64 ++ // Running on the real platform. Use the alignment as mandated by the local ++ // environment. ++ // Note: This will break if we ever start generating snapshots on one Sw64 ++ // platform for another Sw64 platform with a different alignment. ++ return base::OS::ActivationFrameAlignment(); ++#else ++ // If we are using the simulator then we should always align to the expected ++ // alignment. As the simulator is used to generate snapshots we do not know ++ // if the target platform will need alignment, so this is controlled from a ++ // flag. ++ return v8_flags.sim_stack_alignment; ++#endif // V8_HOST_ARCH_SW64 ++} ++ ++void MacroAssembler::SmiUntag(Register dst, const MemOperand& src) { ++ // SCOPEMARK_NAME(TurboAssembler::SmiUntag, this); ++ if (SmiValuesAre32Bits()) { ++ Ldw(dst, MemOperand(src.rm(), SmiWordOffset(src.offset()))); ++ } else { ++ DCHECK(SmiValuesAre31Bits()); ++ Ldw(dst, src); ++ SmiUntag(dst); ++ } ++} ++ ++void MacroAssembler::JumpIfSmi(Register value, Label* smi_label) { ++ DCHECK_EQ(0, kSmiTag); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ and_(value, kSmiTagMask, scratch); ++ Branch(smi_label, eq, scratch, Operand(zero_reg)); ++} ++ ++void MacroAssembler::JumpIfNotSmi(Register value, Label* not_smi_label) { ++ DCHECK_EQ(0, kSmiTag); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ and_(value, kSmiTagMask, scratch); ++ Branch(not_smi_label, ne, scratch, Operand(zero_reg)); ++} ++ ++#ifdef V8_ENABLE_DEBUG_CODE ++ ++void MacroAssembler::Assert(Condition cc, AbortReason reason, Register rs, ++ Operand rt) { ++ if (v8_flags.debug_code) Check(cc, reason, rs, rt); ++} ++ ++void MacroAssembler::AssertNotSmi(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertNotSmi, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ static_assert(kSmiTag == 0); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ and_(object, kSmiTagMask, scratch); ++ Check(ne, AbortReason::kOperandIsASmi, scratch, Operand(zero_reg)); ++ } ++} ++ ++void MacroAssembler::AssertSmi(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertSmi, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ static_assert(kSmiTag == 0); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ and_(object, kSmiTagMask, scratch); ++ Check(eq, AbortReason::kOperandIsASmi, scratch, Operand(zero_reg)); ++ } ++} ++ ++void MacroAssembler::AssertStackIsAligned() { ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ const int frame_alignment = ActivationFrameAlignment(); ++ const int frame_alignment_mask = frame_alignment - 1; ++ ++ if (frame_alignment > kPointerSize) { ++ Label alignment_as_expected; ++ DCHECK(base::bits::IsPowerOfTwo(frame_alignment)); ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ And(scratch, sp, frame_alignment_mask); ++ Branch(&alignment_as_expected, eq, scratch, Operand(zero_reg)); ++ } ++ // Don't use Check here, as it will call Runtime_Abort re-entering here. ++ halt(); ++ bind(&alignment_as_expected); ++ } ++ } ++} ++ ++void MacroAssembler::AssertConstructor(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertConstructor, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ static_assert(kSmiTag == 0); ++ SmiTst(object, t11); ++ Check(ne, AbortReason::kOperandIsASmiAndNotAConstructor, t11, ++ Operand(zero_reg)); ++ LoadMap(t11, object); ++ Ldbu(t11, FieldMemOperand(t11, Map::kBitFieldOffset)); ++ And(t11, t11, Operand(Map::Bits1::IsConstructorBit::kMask)); ++ Check(ne, AbortReason::kOperandIsNotAConstructor, t11, Operand(zero_reg)); ++ } ++} ++ ++void MacroAssembler::AssertFunction(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertFunction, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ static_assert(kSmiTag == 0); ++ SmiTst(object, t11); ++ Check(ne, AbortReason::kOperandIsASmiAndNotAFunction, t11, ++ Operand(zero_reg)); ++ Push(object); ++ LoadMap(object, object); ++ GetInstanceTypeRange(object, object, FIRST_JS_FUNCTION_TYPE, t11); ++ Check(ls, AbortReason::kOperandIsNotAFunction, t11, ++ Operand(LAST_JS_FUNCTION_TYPE - FIRST_JS_FUNCTION_TYPE)); ++ pop(object); ++ } ++} ++ ++void MacroAssembler::AssertCallableFunction(Register object) { ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ static_assert(kSmiTag == 0); ++ SmiTst(object, t11); ++ Check(ne, AbortReason::kOperandIsASmiAndNotAFunction, t11, ++ Operand(zero_reg)); ++ Push(object); ++ LoadMap(object, object); ++ GetInstanceTypeRange(object, object, FIRST_CALLABLE_JS_FUNCTION_TYPE, t11); ++ Check(ls, AbortReason::kOperandIsNotACallableFunction, t11, ++ Operand(LAST_CALLABLE_JS_FUNCTION_TYPE - ++ FIRST_CALLABLE_JS_FUNCTION_TYPE)); ++ pop(object); ++ } ++} ++ ++void MacroAssembler::AssertBoundFunction(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertBoundFunction, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ static_assert(kSmiTag == 0); ++ SmiTst(object, t11); ++ Check(ne, AbortReason::kOperandIsASmiAndNotABoundFunction, t11, ++ Operand(zero_reg)); ++ GetObjectType(object, t11, t11); ++ Check(eq, AbortReason::kOperandIsNotABoundFunction, t11, ++ Operand(JS_BOUND_FUNCTION_TYPE)); ++ } ++} ++ ++void MacroAssembler::AssertGeneratorObject(Register object) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertGeneratorObject, this); ++ if (!v8_flags.debug_code) return; ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ static_assert(kSmiTag == 0); ++ SmiTst(object, t11); ++ Check(ne, AbortReason::kOperandIsASmiAndNotAGeneratorObject, t11, ++ Operand(zero_reg)); ++ GetObjectType(object, t11, t11); ++ Subl(t11, t11, Operand(FIRST_JS_GENERATOR_OBJECT_TYPE)); ++ Check( ++ ls, AbortReason::kOperandIsNotAGeneratorObject, t11, ++ Operand(LAST_JS_GENERATOR_OBJECT_TYPE - FIRST_JS_GENERATOR_OBJECT_TYPE)); ++} ++ ++void MacroAssembler::AssertUndefinedOrAllocationSite(Register object, ++ Register scratch) { ++ // SCOPEMARK_NAME(MacroAssembler::AssertUndefinedOrAllocationSite, this); ++ if (v8_flags.debug_code) { ++ ASM_CODE_COMMENT(this); ++ Label done_checking; ++ AssertNotSmi(object); ++ LoadRoot(scratch, RootIndex::kUndefinedValue); ++ Branch(&done_checking, eq, object, Operand(scratch)); ++ GetObjectType(object, scratch, scratch); ++ Assert(eq, AbortReason::kExpectedUndefinedOrCell, scratch, ++ Operand(ALLOCATION_SITE_TYPE)); ++ bind(&done_checking); ++ } ++} ++ ++#endif // V8_ENABLE_DEBUG_CODE ++ ++void MacroAssembler::Float32Max(FPURegister dst, FPURegister src1, ++ FPURegister src2, Label* out_of_line) { ++ ASM_CODE_COMMENT(this); ++ if (src1 == src2) { ++ Move_s(dst, src1); ++ return; ++ } ++ ++ // Check if one of operands is NaN. ++ CompareIsNanF(src1, src2); ++ BranchTrueF(out_of_line); ++ ++ Label return_left, return_right, done; ++ ++ CompareF(OLT, src1, src2); ++ BranchTrueShortF(&return_right); ++ CompareF(OLT, src2, src1); ++ BranchTrueShortF(&return_left); ++ ++ // Operands are equal, but check for +/-0. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ fimovd(src1, t11); ++ Branch(&return_left, eq, t11, Operand(zero_reg)); ++ Branch(&return_right); ++ } ++ ++ bind(&return_right); ++ if (src2 != dst) { ++ Move_s(dst, src2); ++ } ++ Branch(&done); ++ ++ bind(&return_left); ++ if (src1 != dst) { ++ Move_s(dst, src1); ++ } ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Float32MaxOutOfLine(FPURegister dst, FPURegister src1, ++ FPURegister src2) { ++ // SCOPEMARK_NAME(TurboAssembler::Float32MaxOutOfLine, this); ++ fadds(src1, src2, dst); ++} ++ ++void MacroAssembler::Float32Min(FPURegister dst, FPURegister src1, ++ FPURegister src2, Label* out_of_line) { ++ ASM_CODE_COMMENT(this); ++ if (src1 == src2) { ++ Move_s(dst, src1); ++ return; ++ } ++ ++ // Check if one of operands is NaN. ++ CompareIsNanF(src1, src2); ++ BranchTrueF(out_of_line); ++ ++ Label return_left, return_right, done; ++ ++ CompareF(OLT, src1, src2); ++ BranchTrueShortF(&return_left); ++ CompareF(OLT, src2, src1); ++ BranchTrueShortF(&return_right); ++ ++ // Left equals right => check for -0. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ fimovd(src1, t11); ++ Branch(&return_right, eq, t11, Operand(zero_reg)); ++ Branch(&return_left); ++ } ++ ++ bind(&return_right); ++ if (src2 != dst) { ++ Move_s(dst, src2); ++ } ++ Branch(&done); ++ ++ bind(&return_left); ++ if (src1 != dst) { ++ Move_s(dst, src1); ++ } ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Float32MinOutOfLine(FPURegister dst, FPURegister src1, ++ FPURegister src2) { ++ // SCOPEMARK_NAME(TurboAssembler::Float32MinOutOfLine, this); ++ fadds(src1, src2, dst); ++} ++ ++void MacroAssembler::Float64Max(FPURegister dst, FPURegister src1, ++ FPURegister src2, Label* out_of_line) { ++ ASM_CODE_COMMENT(this); ++ if (src1 == src2) { ++ Move_d(dst, src1); ++ return; ++ } ++ ++ // Check if one of operands is NaN. ++ CompareIsNanF(src1, src2); ++ BranchTrueF(out_of_line); ++ ++ Label return_left, return_right, done; ++ ++ CompareF(OLT, src1, src2); ++ BranchTrueShortF(&return_right); ++ CompareF(OLT, src2, src1); ++ BranchTrueShortF(&return_left); ++ ++ // Left equals right => check for -0. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ fimovd(src1, t11); ++ Branch(&return_left, eq, t11, Operand(zero_reg)); ++ Branch(&return_right); ++ } ++ ++ bind(&return_right); ++ if (src2 != dst) { ++ Move_d(dst, src2); ++ } ++ Branch(&done); ++ ++ bind(&return_left); ++ if (src1 != dst) { ++ Move_d(dst, src1); ++ } ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Float64MaxOutOfLine(FPURegister dst, FPURegister src1, ++ FPURegister src2) { ++ // SCOPEMARK_NAME(TurboAssembler::Float64MaxOutOfLine, this); ++ faddd(src1, src2, dst); ++} ++ ++void MacroAssembler::Float64Min(FPURegister dst, FPURegister src1, ++ FPURegister src2, Label* out_of_line) { ++ ASM_CODE_COMMENT(this); ++ if (src1 == src2) { ++ Move_d(dst, src1); ++ return; ++ } ++ ++ // Check if one of operands is NaN. ++ CompareIsNanF(src1, src2); ++ BranchTrueF(out_of_line); ++ ++ Label return_left, return_right, done; ++ ++ CompareF(OLT, src1, src2); ++ BranchTrueShortF(&return_left); ++ CompareF(OLT, src2, src1); ++ BranchTrueShortF(&return_right); ++ ++ // Left equals right => check for -0. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ fimovd(src1, t11); ++ Branch(&return_right, eq, t11, Operand(zero_reg)); ++ Branch(&return_left); ++ } ++ ++ bind(&return_right); ++ if (src2 != dst) { ++ Move_d(dst, src2); ++ } ++ Branch(&done); ++ ++ bind(&return_left); ++ if (src1 != dst) { ++ Move_d(dst, src1); ++ } ++ ++ bind(&done); ++} ++ ++void MacroAssembler::Float64MinOutOfLine(FPURegister dst, FPURegister src1, ++ FPURegister src2) { ++ // SCOPEMARK_NAME(TurboAssembler::Float64MinOutOfLine, this); ++ faddd(src1, src2, dst); ++} ++ ++static const int kRegisterPassedArguments = 6; ++ ++int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, ++ int num_double_arguments) { ++ int stack_passed_words = 0; ++ int num_args = num_reg_arguments + num_double_arguments; ++ ++ // Up to eight arguments are passed in FPURegisters and GPRegisters. ++ if (num_args > kRegisterPassedArguments) { ++ stack_passed_words = num_args - kRegisterPassedArguments; ++ } ++ stack_passed_words += kCArgSlotCount; ++ return stack_passed_words; ++} ++ ++void MacroAssembler::PrepareCallCFunction(int num_reg_arguments, ++ int num_double_arguments, ++ Register scratch) { ++ ASM_CODE_COMMENT(this); ++ int frame_alignment = ActivationFrameAlignment(); ++ ++ // n64: Up to eight simple arguments in a0..a3, a4..a5, No argument slots. ++ // O32: Up to four simple arguments are passed in registers a0..a3. ++ // Those four arguments must have reserved argument slots on the stack for ++ // sw64, even though those argument slots are not normally used. ++ // Both ABIs: Remaining arguments are pushed on the stack, above (higher ++ // address than) the (O32) argument slots. (arg slot calculation handled by ++ // CalculateStackPassedWords()). ++ int stack_passed_arguments = ++ CalculateStackPassedWords(num_reg_arguments, num_double_arguments); ++ if (frame_alignment > kPointerSize) { ++ // Make stack end at alignment and make room for num_arguments - 4 words ++ // and the original value of sp. ++ mov(scratch, sp); ++ Subl(sp, sp, Operand((stack_passed_arguments + 1) * kPointerSize)); ++ DCHECK(base::bits::IsPowerOfTwo(frame_alignment)); ++ And(sp, sp, Operand(-frame_alignment)); ++ Stl(scratch, MemOperand(sp, stack_passed_arguments * kPointerSize)); ++ } else { ++ Subl(sp, sp, Operand(stack_passed_arguments * kPointerSize)); ++ } ++} ++ ++void MacroAssembler::PrepareCallCFunction(int num_reg_arguments, ++ Register scratch) { ++ // SCOPEMARK_NAME(TurboAssembler::PrepareCallCFunction, this); ++ PrepareCallCFunction(num_reg_arguments, 0, scratch); ++} ++ ++void MacroAssembler::CallCFunction(ExternalReference function, ++ int num_reg_arguments, ++ int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ li(t12, function); ++ CallCFunctionHelper(t12, num_reg_arguments, num_double_arguments, ++ set_isolate_data_slots); ++} ++ ++void MacroAssembler::CallCFunction(Register function, int num_reg_arguments, ++ int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots) { ++ ASM_CODE_COMMENT(this); ++ CallCFunctionHelper(function, num_reg_arguments, num_double_arguments, ++ set_isolate_data_slots); ++} ++ ++void MacroAssembler::CallCFunction(ExternalReference function, ++ int num_arguments, ++ SetIsolateDataSlots set_isolate_data_slots) { ++ CallCFunction(function, num_arguments, 0, set_isolate_data_slots); ++} ++ ++void MacroAssembler::CallCFunction(Register function, int num_arguments, ++ SetIsolateDataSlots set_isolate_data_slots) { ++ CallCFunction(function, num_arguments, 0, set_isolate_data_slots); ++} ++ ++void MacroAssembler::CallCFunctionHelper( ++ Register function, int num_reg_arguments, int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots) { ++ DCHECK_LE(num_reg_arguments + num_double_arguments, kMaxCParameters); ++ DCHECK(has_frame()); ++ // Make sure that the stack is aligned before calling a C function unless ++ // running in the simulator. The simulator has its own alignment check which ++ // provides more information. ++ // The argument stots are presumed to have been set up by ++ // PrepareCallCFunction. The C function must be called via t12, for sw64 ABI. ++ ++#if V8_HOST_ARCH_SW64 ++ if (v8_flags.debug_code) { ++ int frame_alignment = base::OS::ActivationFrameAlignment(); ++ int frame_alignment_mask = frame_alignment - 1; ++ if (frame_alignment > kPointerSize) { ++ DCHECK(base::bits::IsPowerOfTwo(frame_alignment)); ++ Label alignment_as_expected; ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ And(scratch, sp, Operand(frame_alignment_mask)); ++ Branch(&alignment_as_expected, eq, scratch, Operand(zero_reg)); ++ } ++ // Don't use Check here, as it will call Runtime_Abort possibly ++ // re-entering here. ++ halt(); // stop("Unexpected alignment in CallCFunction"); ++ bind(&alignment_as_expected); ++ } ++ } ++#endif // V8_HOST_ARCH_SW64 ++ ++ // Just call directly. The function called cannot cause a GC, or ++ // allow preemption, so the return address in the link register ++ // stays correct. ++ { ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ if (set_isolate_data_slots == SetIsolateDataSlots::kYes) { ++ if (function != t12) { ++ mov(t12, function); ++ function = t12; ++ } ++ ++ // Save the frame pointer and PC so that the stack layout remains ++ // iterable, even without an ExitFrame which normally exists between JS ++ // and C frames. 't' registers are caller-saved so this is safe as a ++ // scratch register. ++ Register pc_scratch = t1; ++ Register scratch = t2; ++ DCHECK(!AreAliased(pc_scratch, scratch, function)); ++ ++ bsr(pc_scratch, 0); ++ ++ // See x64 code for reasoning about how to address the isolate data ++ // fields. ++ if (root_array_available()) { ++ Stl(pc_scratch, ++ MemOperand(kRootRegister, ++ IsolateData::fast_c_call_caller_pc_offset())); ++ Stl(fp, MemOperand(kRootRegister, ++ IsolateData::fast_c_call_caller_fp_offset())); ++ } else { ++ DCHECK_NOT_NULL(isolate()); ++ li(scratch, ++ ExternalReference::fast_c_call_caller_pc_address(isolate())); ++ Stl(pc_scratch, MemOperand(scratch)); ++ li(scratch, ++ ExternalReference::fast_c_call_caller_fp_address(isolate())); ++ Stl(fp, MemOperand(scratch)); ++ } ++ } ++ ++ Call(function); ++ ++ if (set_isolate_data_slots == SetIsolateDataSlots::kYes) { ++ // We don't unset the PC; the FP is the source of truth. ++ if (root_array_available()) { ++ Stl(zero_reg, MemOperand(kRootRegister, ++ IsolateData::fast_c_call_caller_fp_offset())); ++ } else { ++ DCHECK_NOT_NULL(isolate()); ++ Register scratch = t2; ++ li(scratch, ++ ExternalReference::fast_c_call_caller_fp_address(isolate())); ++ Stl(zero_reg, MemOperand(scratch)); ++ } ++ } ++ ++ int stack_passed_arguments = ++ CalculateStackPassedWords(num_reg_arguments, num_double_arguments); ++ ++ if (base::OS::ActivationFrameAlignment() > kPointerSize) { ++ Ldl(sp, MemOperand(sp, stack_passed_arguments * kPointerSize)); ++ } else { ++ Addl(sp, sp, Operand(stack_passed_arguments * kPointerSize)); ++ } ++ ++ set_pc_for_safepoint(); ++ } ++} ++ ++#undef BRANCH_ARGS_CHECK ++ ++void MacroAssembler::CheckPageFlag(Register object, Register scratch, int mask, ++ Condition cc, Label* condition_met) { ++ ASM_CODE_COMMENT(this); ++ And(scratch, object, Operand(~kPageAlignmentMask)); ++ Ldl(scratch, MemOperand(scratch, BasicMemoryChunk::kFlagsOffset)); ++ And(scratch, scratch, Operand(mask)); ++ Branch(condition_met, cc, scratch, Operand(zero_reg)); ++} ++ ++Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2, Register reg3, ++ Register reg4, Register reg5, ++ Register reg6) { ++ RegList regs = {reg1, reg2, reg3, reg4, reg5, reg6}; ++ ++ const RegisterConfiguration* config = RegisterConfiguration::Default(); ++ for (int i = 0; i < config->num_allocatable_general_registers(); ++i) { ++ int code = config->GetAllocatableGeneralCode(i); ++ Register candidate = Register::from_code(code); ++ if (regs.has(candidate)) continue; ++ return candidate; ++ } ++ UNREACHABLE(); ++} ++ ++void MacroAssembler::ComputeCodeStartAddress(Register dst) { ++ // SCOPEMARK_NAME(TurboAssembler::ComputeCodeStartAddress, this); ++ br(dst, 0); ++ int pc = pc_offset(); ++ Subl(dst, dst, Operand(pc)); ++} ++ ++void MacroAssembler::CallForDeoptimization(Builtin target, int, Label* exit, ++ DeoptimizeKind kind, Label* ret, ++ Label*) { ++ ASM_CODE_COMMENT(this); ++ BlockTrampolinePoolScope block_trampoline_pool(this); ++ Ldl(t12, ++ MemOperand(kRootRegister, IsolateData::BuiltinEntrySlotOffset(target))); ++ Call(t12); ++ DCHECK_EQ(SizeOfCodeGeneratedSince(exit), ++ (kind == DeoptimizeKind::kLazy) ? Deoptimizer::kLazyDeoptExitSize ++ : Deoptimizer::kEagerDeoptExitSize); ++} ++ ++void MacroAssembler::LoadCodeEntry(Register destination, ++ Register code_data_container_object) { ++ ASM_CODE_COMMENT(this); ++ Ldl(destination, ++ FieldMemOperand(code_data_container_object, Code::kCodeEntryPointOffset)); ++} ++ ++void MacroAssembler::CallCodeObject(Register code_data_container_object) { ++ ASM_CODE_COMMENT(this); ++ LoadCodeEntry(code_data_container_object, code_data_container_object); ++ Call(code_data_container_object); ++} ++ ++void MacroAssembler::JumpCodeObject(Register code_data_container_object, ++ JumpMode jump_mode) { ++ ASM_CODE_COMMENT(this); ++ DCHECK_EQ(JumpMode::kJump, jump_mode); ++ LoadCodeEntry(code_data_container_object, code_data_container_object); ++ Jump(code_data_container_object); ++} ++ ++namespace { ++ ++void TailCallOptimizedCodeSlot(MacroAssembler* masm, ++ Register optimized_code_entry, Register scratch1, ++ Register scratch2) { ++ // ----------- S t a t e ------------- ++ // -- a0 : actual argument count ++ // -- a3 : new target (preserved for callee if needed, and caller) ++ // -- a1 : target function (preserved for callee if needed, and caller) ++ // ----------------------------------- ++ ASM_CODE_COMMENT(masm); ++ DCHECK(!AreAliased(optimized_code_entry, a1, a3, scratch1, scratch2)); ++ ++ Register closure = a1; ++ Label heal_optimized_code_slot; ++ ++ // If the optimized code is cleared, go to runtime to update the ++ // optimization marker field. ++ __ LoadWeakValue(optimized_code_entry, optimized_code_entry, ++ &heal_optimized_code_slot); ++ ++ // Check if the optimized code is marked for deopt. If it is, call the ++ // runtime to clear it. ++ __ TestCodeIsMarkedForDeoptimizationAndJump(optimized_code_entry, scratch1, ++ ne, &heal_optimized_code_slot); ++ ++ // Optimized code is good, get it into the closure and link the closure into ++ // the optimized functions list, then tail call the optimized code. ++ // The feedback vector is no longer used, so re-use it as a scratch ++ // register. ++ __ ReplaceClosureCodeWithOptimizedCode(optimized_code_entry, closure, ++ scratch1, scratch2); ++ ++ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch"); ++ __ LoadCodeEntry(a2, optimized_code_entry); ++ __ Jump(a2); ++ ++ // Optimized code slot contains deoptimized code or code is cleared and ++ // optimized code marker isn't updated. Evict the code, update the marker ++ // and re-enter the closure's code. ++ __ bind(&heal_optimized_code_slot); ++ __ GenerateTailCallToReturnedCode(Runtime::kHealOptimizedCodeSlot); ++} ++ ++} // namespace ++ ++#ifdef V8_ENABLE_DEBUG_CODE ++void MacroAssembler::AssertFeedbackVector(Register object, Register scratch) { ++ if (v8_flags.debug_code) { ++ GetObjectType(object, scratch, scratch); ++ Assert(eq, AbortReason::kExpectedFeedbackVector, scratch, ++ Operand(FEEDBACK_VECTOR_TYPE)); ++ } ++} ++#endif // V8_ENABLE_DEBUG_CODE ++ ++void MacroAssembler::ReplaceClosureCodeWithOptimizedCode( ++ Register optimized_code, Register closure, Register scratch1, ++ Register scratch2) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(!AreAliased(optimized_code, closure, scratch1, scratch2)); ++ // Store code entry in the closure. ++ Stl(optimized_code, FieldMemOperand(closure, JSFunction::kCodeOffset)); ++ mov(scratch1, optimized_code); // Write barrier clobbers scratch1 below. ++ RecordWriteField(closure, JSFunction::kCodeOffset, scratch1, scratch2, ++ kRAHasNotBeenSaved, SaveFPRegsMode::kIgnore, ++ SmiCheck::kOmit); ++} ++ ++void MacroAssembler::GenerateTailCallToReturnedCode( ++ Runtime::FunctionId function_id) { ++ // ----------- S t a t e ------------- ++ // -- a0 : actual argument count ++ // -- a1 : target function (preserved for callee) ++ // -- a3 : new target (preserved for callee) ++ // ----------------------------------- ++ ASM_CODE_COMMENT(this); ++ { ++ FrameScope scope(this, StackFrame::INTERNAL); ++ // Push a copy of the target function, the new target and the actual ++ // argument count. ++ // Push function as parameter to the runtime call. ++ SmiTag(kJavaScriptCallArgCountRegister); ++ Push(kJavaScriptCallTargetRegister, kJavaScriptCallNewTargetRegister, ++ kJavaScriptCallArgCountRegister, kJavaScriptCallTargetRegister); ++ ++ CallRuntime(function_id, 1); ++ // Restore target function, new target and actual argument count. ++ Pop(kJavaScriptCallTargetRegister, kJavaScriptCallNewTargetRegister, ++ kJavaScriptCallArgCountRegister); ++ SmiUntag(kJavaScriptCallArgCountRegister); ++ } ++ ++ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch"); ++ LoadCodeEntry(a2, v0); ++ Jump(a2); ++} ++ ++void MacroAssembler::LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing( ++ Register flags, Register feedback_vector, CodeKind current_code_kind, ++ Label* flags_need_processing) { ++ ASM_CODE_COMMENT(this); ++ DCHECK(CodeKindCanTierUp(current_code_kind)); ++ Register scratch = t2; ++ Ldhu(flags, FieldMemOperand(feedback_vector, FeedbackVector::kFlagsOffset)); ++ uint32_t kFlagsMask = FeedbackVector::kFlagsTieringStateIsAnyRequested | ++ FeedbackVector::kFlagsMaybeHasTurbofanCode | ++ FeedbackVector::kFlagsLogNextExecution; ++ if (current_code_kind != CodeKind::MAGLEV) { ++ kFlagsMask |= FeedbackVector::kFlagsMaybeHasMaglevCode; ++ } ++ And(scratch, flags, Operand(kFlagsMask)); ++ Branch(flags_need_processing, ne, scratch, Operand(zero_reg)); ++} ++ ++void MacroAssembler::OptimizeCodeOrTailCallOptimizedCodeSlot( ++ Register flags, Register feedback_vector) { ++ ASM_CODE_COMMENT(this); ++ Label maybe_has_optimized_code, maybe_needs_logging; ++ // Check if optimized code marker is available. ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ And(scratch, flags, ++ Operand(FeedbackVector::kFlagsTieringStateIsAnyRequested)); ++ Branch(&maybe_needs_logging, eq, scratch, Operand(zero_reg)); ++ } ++ ++ GenerateTailCallToReturnedCode(Runtime::kCompileOptimized); ++ ++ bind(&maybe_needs_logging); ++ { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ And(scratch, flags, Operand(FeedbackVector::LogNextExecutionBit::kMask)); ++ Branch(&maybe_has_optimized_code, eq, scratch, Operand(zero_reg)); ++ } ++ ++ GenerateTailCallToReturnedCode(Runtime::kFunctionLogNextExecution); ++ ++ bind(&maybe_has_optimized_code); ++ Register optimized_code_entry = flags; ++ Ldl(optimized_code_entry, ++ FieldMemOperand(feedback_vector, ++ FeedbackVector::kMaybeOptimizedCodeOffset)); ++ TailCallOptimizedCodeSlot(this, optimized_code_entry, t3, a5); ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++#undef __ ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/codegen/sw64/macro-assembler-sw64.h b/deps/v8/src/codegen/sw64/macro-assembler-sw64.h +new file mode 100644 +index 00000000..418fd8c2 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/macro-assembler-sw64.h +@@ -0,0 +1,1287 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++// ++#ifndef INCLUDED_FROM_MACRO_ASSEMBLER_H ++#error This header must be included via macro-assembler.h ++#endif ++ ++#ifndef V8_CODEGEN_SW64_MACRO_ASSEMBLER_SW64_H_ ++#define V8_CODEGEN_SW64_MACRO_ASSEMBLER_SW64_H_ ++ ++#ifdef PRODUCT ++#define SCOPEMARK /* nothing */ ++#define SCOPEMARK_NAME(name, tasm) /* nothing */ ++#else ++#define SCOPEMARK \ ++ char line[200]; sprintf(line,"%s:%d",__FILE__, __LINE__);\ ++ ScopeMark scopeMark(_tasm, line); ++ ++#define SCOPEMARK_NAME(name, tasm) \ ++ char line[200]; sprintf(line,"%s:%d",__FILE__, __LINE__);\ ++ ScopeMark scopeMark(tasm, line, #name); ++ ++#endif ++ ++#include "src/codegen/assembler.h" ++#include "src/codegen/sw64/assembler-sw64.h" ++#include "src/common/globals.h" ++#include "src/objects/tagged-index.h" ++ ++namespace v8 { ++namespace internal { ++ ++// Forward declarations. ++enum class AbortReason : uint8_t; ++ ++// Reserved Register Usage Summary. ++// ++// Registers t11, t12, and at are reserved for use by the MacroAssembler. ++// ++// The programmer should know that the MacroAssembler may clobber these three, ++// but won't touch other registers except in special cases. ++// ++// Per the SW64 ABI, register t12 must be used for indirect function call ++// via 'jalr t12' or 'jr t12' instructions. This is relied upon by gcc when ++// trying to update gp register for position-independent-code. Whenever ++// SW64 generated code calls C code, it must be via t12 register. ++ ++// Flags used for LeaveExitFrame function. ++enum LeaveExitFrameMode { EMIT_RETURN = true, NO_EMIT_RETURN = false }; ++ ++// Flags used for the li macro-assembler function. ++enum LiFlags { ++ // If the constant value can be represented in just 16 bits, then ++ // optimize the li to use a single instruction, rather than ldi/slll/ldih ++ // sequence. A number of other optimizations that emits less than ++ // maximum number of instructions exists. ++ OPTIMIZE_SIZE = 0, ++ // Always use 6 instructions (ldi/slll/ldih sequence) for release 2 or 4 ++ // instructions for release 6, even if the constant ++ // could be loaded with just one, so that this value is patchable later. ++ CONSTANT_SIZE = 1, ++ // For address loads only 4 instruction are required. Used to mark ++ // constant load that will be used as address without relocation ++ // information. It ensures predictable code size, so specific sites ++ // in code are patchable. ++ ADDRESS_LOAD = 2 ++}; ++ ++enum RAStatus { kRAHasNotBeenSaved, kRAHasBeenSaved }; ++ ++Register GetRegisterThatIsNotOneOf(Register reg1, Register reg2 = no_reg, ++ Register reg3 = no_reg, ++ Register reg4 = no_reg, ++ Register reg5 = no_reg, ++ Register reg6 = no_reg); ++ ++// ----------------------------------------------------------------------------- ++// Static helper functions. ++ ++#define SmiWordOffset(offset) (offset + kPointerSize / 2) ++ ++// Generate a MemOperand for loading a field from an object. ++inline MemOperand FieldMemOperand(Register object, int offset) { ++ return MemOperand(object, offset - kHeapObjectTag); ++} ++ ++// Generate a MemOperand for storing arguments 5..N on the stack ++// when calling CallCFunction(). ++// TODO(plind): Currently ONLY used for O32. Should be fixed for ++// n64, and used in RegExp code, and other places ++// with more than 8 arguments. ++inline MemOperand CFunctionArgumentOperand(int index) { ++ DCHECK_GT(index, kCArgSlotCount); ++ // Argument 5 takes the slot just past the four Arg-slots. ++ int offset = (index - 5) * kPointerSize + kCArgsSlotsSize; ++ return MemOperand(sp, offset); ++} ++ ++class V8_EXPORT_PRIVATE MacroAssembler : public MacroAssemblerBase { ++ public: ++ using MacroAssemblerBase::MacroAssemblerBase; ++ ++ // Activation support. ++ void EnterFrame(StackFrame::Type type); ++ void EnterFrame(StackFrame::Type type, bool load_constant_pool_pointer_reg) { ++ // Out-of-line constant pool not implemented on sw64. ++ UNREACHABLE(); ++ } ++ void LeaveFrame(StackFrame::Type type); ++ ++ void AllocateStackSpace(Register bytes) { Subl(sp, sp, bytes); } ++ ++ void AllocateStackSpace(int bytes) { ++ DCHECK_GE(bytes, 0); ++ if (bytes == 0) return; ++ Subl(sp, sp, Operand(bytes)); ++ } ++ ++ // Generates function and stub prologue code. ++ void StubPrologue(StackFrame::Type type); ++ void Prologue(); ++ ++ void InitializeRootRegister() { ++ ExternalReference isolate_root = ExternalReference::isolate_root(isolate()); ++ li(kRootRegister, Operand(isolate_root)); ++ } ++ ++ // Jump unconditionally to given label. ++ // We NEED a nop in the branch delay slot, as it used by v8, for example in ++ // CodeGenerator::ProcessDeferred(). ++ // Currently the branch delay slot is filled by the MacroAssembler. ++ // Use rather b(Label) for code generation. ++ void jmp(Label* L) { Branch(L); } ++ ++ // ------------------------------------------------------------------------- ++ // Debugging. ++ ++ void Trap(); ++ void DebugBreak(); ++ ++ // Calls Abort(msg) if the condition cc is not satisfied. ++ // Use --debug_code to enable. ++ void Assert(Condition cc, AbortReason reason, Register rs, ++ Operand rt) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Like Assert(), but always enabled. ++ void Check(Condition cc, AbortReason reason, Register rs, Operand rt); ++ ++ // Print a message to stdout and abort execution. ++ void Abort(AbortReason msg); ++ ++ // Arguments macros. ++#define COND_TYPED_ARGS Condition cond, Register r1, const Operand &r2 ++#define COND_ARGS cond, r1, r2 ++ ++ // Cases when relocation is not needed. ++#define DECLARE_NORELOC_PROTOTYPE(Name, target_type) \ ++ void Name(target_type target); \ ++ void Name(target_type target, COND_TYPED_ARGS); ++ ++#define DECLARE_BRANCH_PROTOTYPES(Name) \ ++ DECLARE_NORELOC_PROTOTYPE(Name, Label*) \ ++ DECLARE_NORELOC_PROTOTYPE(Name, int32_t) ++ ++ DECLARE_BRANCH_PROTOTYPES(Branch) ++ DECLARE_BRANCH_PROTOTYPES(BranchAndLink) ++ DECLARE_BRANCH_PROTOTYPES(BranchShort) ++ ++#undef DECLARE_BRANCH_PROTOTYPES ++#undef COND_TYPED_ARGS ++#undef COND_ARGS ++ ++ void CompareF(FPUCondition cc, FPURegister cmp1, FPURegister cmp2); ++ ++ void CompareIsNanF(FPURegister cmp1, FPURegister cmp2); ++ ++ // Floating point branches ++ void BranchTrueShortF(Label* target); ++ void BranchFalseShortF(Label* target); ++ ++ void BranchTrueF(Label* target); ++ void BranchFalseF(Label* target); ++ ++ void BranchLong(int32_t offset); ++ void Branch(Label* L, Condition cond, Register rs, RootIndex index); ++ ++ static int InstrCountForLi64Bit(int64_t value); ++ inline void LiLower32BitHelper(Register rd, Operand j); ++ void li_optimized(Register rd, Operand j, LiFlags mode = OPTIMIZE_SIZE); ++ // Load int32 in the rd register. ++ void li(Register rd, Operand j, LiFlags mode = OPTIMIZE_SIZE); ++ inline void li(Register rd, int64_t j, LiFlags mode = OPTIMIZE_SIZE) { ++ li(rd, Operand(j), mode); ++ } ++ void li(Register dst, Handle value, LiFlags mode = OPTIMIZE_SIZE); ++ void li(Register dst, ExternalReference value, LiFlags mode = OPTIMIZE_SIZE); ++ ++ void LoadFromConstantsTable(Register destination, int constant_index) final; ++ void LoadRootRegisterOffset(Register destination, intptr_t offset) final; ++ void LoadRootRelative(Register destination, int32_t offset) final; ++ ++ // Operand pointing to an external reference. ++ // May emit code to set up the scratch register. The operand is ++ // only guaranteed to be correct as long as the scratch register ++ // isn't changed. ++ // If the operand is used more than once, use a scratch register ++ // that is guaranteed not to be clobbered. ++ MemOperand ExternalReferenceAsOperand(ExternalReference reference, ++ Register scratch); ++ ++ inline void Move(Register output, MemOperand operand) { ++ Ldl(output, operand); ++ } ++ ++// Jump, Call, and Ret pseudo instructions implementing inter-working. ++#define COND_ARGS \ ++ Condition cond = al, Register rs = zero_reg, \ ++ const Operand &rt = Operand(zero_reg) ++ ++ void Jump(Register target, COND_ARGS); ++ void Jump(intptr_t target, RelocInfo::Mode rmode, COND_ARGS); ++ void Jump(Address target, RelocInfo::Mode rmode, COND_ARGS); ++ // Deffer from li, this method save target to the memory, and then load ++ // it to register use ld, it can be used in wasm jump table for concurrent ++ // patching. ++ void PatchAndJump(Address target); ++ void Jump(Handle code, RelocInfo::Mode rmode, COND_ARGS); ++ void Jump(const ExternalReference& reference); ++ void Call(Register target, COND_ARGS); ++ void Call(Address target, RelocInfo::Mode rmode, COND_ARGS); ++ void Call(Handle code, RelocInfo::Mode rmode = RelocInfo::CODE_TARGET, ++ COND_ARGS); ++ void Call(Label* target); ++ void LoadAddress(Register dst, Label* target); ++ ++ // Load the builtin given by the Smi in |builtin_index| into the same ++ // register. ++ void LoadEntryFromBuiltinIndex(Register builtin); ++ void LoadEntryFromBuiltin(Builtin builtin, Register destination); ++ MemOperand EntryFromBuiltinAsOperand(Builtin builtin); ++ ++ void CallBuiltinByIndex(Register builtin); ++ void CallBuiltin(Builtin builtin); ++ void TailCallBuiltin(Builtin builtin); ++ ++ // Load the code entry point from the Code object. ++ void LoadCodeEntry(Register destination, Register code_data_container_object); ++ void CallCodeObject(Register code_data_container_object); ++ void JumpCodeObject(Register code_data_container_object, ++ JumpMode jump_mode = JumpMode::kJump); ++ ++ // Generates an instruction sequence s.t. the return address points to the ++ // instruction following the call. ++ // The return address on the stack is used by frame iteration. ++ void StoreReturnAddressAndCall(Register target); ++ ++ void CallForDeoptimization(Builtin target, int deopt_id, Label* exit, ++ DeoptimizeKind kind, Label* ret, ++ Label* jump_deoptimization_entry_label); ++ ++ void Ret(COND_ARGS); ++ ++ // Emit code to discard a non-negative number of pointer-sized elements ++ // from the stack, clobbering only the sp register. ++ void Drop(int count, Condition cond = cc_always, Register reg = no_reg, ++ const Operand& op = Operand(no_reg)); ++ ++ enum ArgumentsCountMode { kCountIncludesReceiver, kCountExcludesReceiver }; ++ enum ArgumentsCountType { kCountIsInteger, kCountIsSmi, kCountIsBytes }; ++ void DropArguments(Register count, ArgumentsCountType type, ++ ArgumentsCountMode mode, Register scratch = no_reg); ++ void DropArgumentsAndPushNewReceiver(Register argc, Register receiver, ++ ArgumentsCountType type, ++ ArgumentsCountMode mode, ++ Register scratch = no_reg); ++ ++ // Trivial case of DropAndRet that utilizes the delay slot. ++ void DropAndRet(int drop); ++ ++ void DropAndRet(int drop, Condition cond, Register reg, const Operand& op); ++ ++ void Ldl(Register rd, const MemOperand& rs); ++ void Stl(Register rd, const MemOperand& rs); ++ ++ void Push(Handle handle); ++ void Push(Smi smi); ++ ++ void Push(Register src) { ++ Addl(sp, sp, Operand(-kPointerSize)); ++ Stl(src, MemOperand(sp, 0)); ++ } ++ ++ // Push two registers. Pushes leftmost register first (to highest address). ++ void Push(Register src1, Register src2) { ++ Subl(sp, sp, Operand(2 * kPointerSize)); ++ Stl(src1, MemOperand(sp, 1 * kPointerSize)); ++ Stl(src2, MemOperand(sp, 0 * kPointerSize)); ++ } ++ ++ // Push three registers. Pushes leftmost register first (to highest address). ++ void Push(Register src1, Register src2, Register src3) { ++ Subl(sp, sp, Operand(3 * kPointerSize)); ++ Stl(src1, MemOperand(sp, 2 * kPointerSize)); ++ Stl(src2, MemOperand(sp, 1 * kPointerSize)); ++ Stl(src3, MemOperand(sp, 0 * kPointerSize)); ++ } ++ ++ // Push four registers. Pushes leftmost register first (to highest address). ++ void Push(Register src1, Register src2, Register src3, Register src4) { ++ Subl(sp, sp, Operand(4 * kPointerSize)); ++ Stl(src1, MemOperand(sp, 3 * kPointerSize)); ++ Stl(src2, MemOperand(sp, 2 * kPointerSize)); ++ Stl(src3, MemOperand(sp, 1 * kPointerSize)); ++ Stl(src4, MemOperand(sp, 0 * kPointerSize)); ++ } ++ ++ // Push five registers. Pushes leftmost register first (to highest address). ++ void Push(Register src1, Register src2, Register src3, Register src4, ++ Register src5) { ++ Subl(sp, sp, Operand(5 * kPointerSize)); ++ Stl(src1, MemOperand(sp, 4 * kPointerSize)); ++ Stl(src2, MemOperand(sp, 3 * kPointerSize)); ++ Stl(src3, MemOperand(sp, 2 * kPointerSize)); ++ Stl(src4, MemOperand(sp, 1 * kPointerSize)); ++ Stl(src5, MemOperand(sp, 0 * kPointerSize)); ++ } ++ ++ void Push(Register src, Condition cond, Register tst1, Register tst2) { ++ // Since we don't have conditional execution we use a Branch. ++ Branch(3, cond, tst1, Operand(tst2)); ++ Subl(sp, sp, Operand(kPointerSize)); ++ Stl(src, MemOperand(sp, 0)); ++ } ++ ++ enum PushArrayOrder { kNormal, kReverse }; ++ void PushArray(Register array, Register size, Register scratch, ++ Register scratch2, PushArrayOrder order = kNormal); ++ ++ void MaybeSaveRegisters(RegList registers); ++ void MaybeRestoreRegisters(RegList registers); ++ ++ void CallEphemeronKeyBarrier(Register object, Register slot_address, ++ SaveFPRegsMode fp_mode); ++ ++ void CallRecordWriteStubSaveRegisters( ++ Register object, Register slot_address, SaveFPRegsMode fp_mode, ++ StubCallMode mode = StubCallMode::kCallBuiltinPointer); ++ void CallRecordWriteStub( ++ Register object, Register slot_address, SaveFPRegsMode fp_mode, ++ StubCallMode mode = StubCallMode::kCallBuiltinPointer); ++ ++ // Push multiple registers on the stack. ++ // Registers are saved in numerical order, with higher numbered registers ++ // saved in higher memory addresses. ++ void MultiPush(RegList regs); ++ void MultiPushFPU(DoubleRegList regs); ++ void MultiPushSWSA(DoubleRegList regs); ++ ++ // Calculate how much stack space (in bytes) are required to store caller ++ // registers excluding those specified in the arguments. ++ int RequiredStackSizeForCallerSaved(SaveFPRegsMode fp_mode, ++ Register exclusion1 = no_reg, ++ Register exclusion2 = no_reg, ++ Register exclusion3 = no_reg) const; ++ ++ // Push caller saved registers on the stack, and return the number of bytes ++ // stack pointer is adjusted. ++ int PushCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1 = no_reg, ++ Register exclusion2 = no_reg, ++ Register exclusion3 = no_reg); ++ // Restore caller saved registers from the stack, and return the number of ++ // bytes stack pointer is adjusted. ++ int PopCallerSaved(SaveFPRegsMode fp_mode, Register exclusion1 = no_reg, ++ Register exclusion2 = no_reg, ++ Register exclusion3 = no_reg); ++ ++ void pop(Register dst) { ++ Ldl(dst, MemOperand(sp, 0)); ++ Addl(sp, sp, Operand(kPointerSize)); ++ } ++ void Pop(Register dst) { pop(dst); } ++ ++ // Pop two registers. Pops rightmost register first (from lower address). ++ void Pop(Register src1, Register src2) { ++ DCHECK(src1 != src2); ++ Ldl(src2, MemOperand(sp, 0 * kPointerSize)); ++ Ldl(src1, MemOperand(sp, 1 * kPointerSize)); ++ Addl(sp, sp, 2 * kPointerSize); ++ } ++ ++ // Pop three registers. Pops rightmost register first (from lower address). ++ void Pop(Register src1, Register src2, Register src3) { ++ Ldl(src3, MemOperand(sp, 0 * kPointerSize)); ++ Ldl(src2, MemOperand(sp, 1 * kPointerSize)); ++ Ldl(src1, MemOperand(sp, 2 * kPointerSize)); ++ Addl(sp, sp, 3 * kPointerSize); ++ } ++ ++ // Pop four registers. Pops rightmost register first (from lower address). ++ void Pop(Register src1, Register src2, Register src3, Register src4) { ++ Ldl(src4, MemOperand(sp, 0 * kPointerSize)); ++ Ldl(src3, MemOperand(sp, 1 * kPointerSize)); ++ Ldl(src2, MemOperand(sp, 2 * kPointerSize)); ++ Ldl(src1, MemOperand(sp, 3 * kPointerSize)); ++ Addl(sp, sp, 4 * kPointerSize); ++ } ++ ++ void Pop(uint32_t count = 1) { Addl(sp, sp, Operand(count * kPointerSize)); } ++ ++ // Pops multiple values from the stack and load them in the ++ // registers specified in regs. Pop order is the opposite as in MultiPush. ++ void MultiPop(RegList regs); ++ void MultiPopFPU(DoubleRegList regs); ++ void MultiPopSWSA(DoubleRegList regs); ++ ++#define DEFINE_INSTRUCTION(instr) \ ++ void instr(Register rd, Register rs, const Operand& rt); \ ++ void instr(Register rd, Register rs, Register rt) { \ ++ instr(rd, rs, Operand(rt)); \ ++ } \ ++ void instr(Register rs, Register rt, int32_t j) { instr(rs, rt, Operand(j)); } ++ ++#define DEFINE_INSTRUCTION2(instr) \ ++ void instr(Register rs, const Operand& rt); \ ++ void instr(Register rs, Register rt) { instr(rs, Operand(rt)); } \ ++ void instr(Register rs, int32_t j) { instr(rs, Operand(j)); } ++ ++ DEFINE_INSTRUCTION(Addw) ++ DEFINE_INSTRUCTION(Addl) ++ DEFINE_INSTRUCTION(Divw) ++ DEFINE_INSTRUCTION(Divwu) ++ DEFINE_INSTRUCTION(Divl) ++ DEFINE_INSTRUCTION(Divlu) ++ DEFINE_INSTRUCTION(Modw) ++ DEFINE_INSTRUCTION(Modwu) ++ DEFINE_INSTRUCTION(Modl) ++ DEFINE_INSTRUCTION(Modlu) ++ DEFINE_INSTRUCTION(Subw) ++ DEFINE_INSTRUCTION(Subl) ++ DEFINE_INSTRUCTION(Dmodu) ++ DEFINE_INSTRUCTION(Mulw) ++ DEFINE_INSTRUCTION(Mulwh) ++ DEFINE_INSTRUCTION(Mulwhu) ++ DEFINE_INSTRUCTION(Mullhu) ++ DEFINE_INSTRUCTION(Mull) ++ DEFINE_INSTRUCTION(Mullh) ++ DEFINE_INSTRUCTION(Sllw) ++ DEFINE_INSTRUCTION(Srlw) ++ DEFINE_INSTRUCTION(Sraw) ++ ++ DEFINE_INSTRUCTION(And) ++ DEFINE_INSTRUCTION(Or) ++ DEFINE_INSTRUCTION(Xor) ++ DEFINE_INSTRUCTION(Nor) ++ DEFINE_INSTRUCTION2(Neg) ++ ++ DEFINE_INSTRUCTION(Cmplt) ++ DEFINE_INSTRUCTION(Cmpult) ++ DEFINE_INSTRUCTION(Cmple) ++ DEFINE_INSTRUCTION(Cmpule) ++ DEFINE_INSTRUCTION(Cmpgt) ++ DEFINE_INSTRUCTION(Cmpugt) ++ DEFINE_INSTRUCTION(Cmpge) ++ DEFINE_INSTRUCTION(Cmpuge) ++ ++ DEFINE_INSTRUCTION(Rolw) ++ DEFINE_INSTRUCTION(Roll) ++ ++#undef DEFINE_INSTRUCTION ++#undef DEFINE_INSTRUCTION2 ++#undef DEFINE_INSTRUCTION3 ++ ++ void SmiTag(Register dst, Register src) { ++ static_assert(kSmiTag == 0); ++ if (SmiValuesAre32Bits()) { ++ slll(src, 32, dst); ++ } else { ++ DCHECK(SmiValuesAre31Bits()); ++ Addw(dst, src, src); ++ } ++ } ++ ++ void SmiTag(Register reg) { SmiTag(reg, reg); } ++ ++ void SmiUntag(Register dst, const MemOperand& src); ++ void SmiUntag(Register dst, Register src) { ++ if (SmiValuesAre32Bits()) { ++ sral(src, kSmiShift, dst); ++ } else { ++ DCHECK(SmiValuesAre31Bits()); ++ Sraw(dst, src, kSmiShift); ++ } ++ } ++ ++ void SmiUntag(Register reg) { SmiUntag(reg, reg); } ++ ++ // Left-shifted from int32 equivalent of Smi. ++ void SmiScale(Register dst, Register src, int scale) { ++ if (SmiValuesAre32Bits()) { ++ // The int portion is upper 32-bits of 64-bit word. ++ sral(src, kSmiShift - scale, dst); ++ } else { ++ DCHECK(SmiValuesAre31Bits()); ++ DCHECK_GE(scale, kSmiTagSize); ++ sllw(src, scale - kSmiTagSize, dst); ++ } ++ } ++ ++ // On SW64, we should sign-extend 32-bit values. ++ void SmiToInt32(Register smi) { ++ if (v8_flags.enable_slow_asserts) { ++ AssertSmi(smi); ++ } ++ DCHECK(SmiValuesAre32Bits() || SmiValuesAre31Bits()); ++ SmiUntag(smi); ++ } ++ ++ // Abort execution if argument is a smi, enabled via --debug-code. ++ void AssertNotSmi(Register object) NOOP_UNLESS_DEBUG_CODE; ++ void AssertSmi(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ int CalculateStackPassedWords(int num_reg_arguments, ++ int num_double_arguments); ++ ++ // Before calling a C-function from generated code, align arguments on stack ++ // and add space for the four sw64 argument slots. ++ // After aligning the frame, non-register arguments must be stored on the ++ // stack, after the argument-slots using helper: CFunctionArgumentOperand(). ++ // The argument count assumes all arguments are word sized. ++ // Some compilers/platforms require the stack to be aligned when calling ++ // C++ code. ++ // Needs a scratch register to do some arithmetic. This register will be ++ // trashed. ++ void PrepareCallCFunction(int num_reg_arguments, int num_double_registers, ++ Register scratch); ++ void PrepareCallCFunction(int num_reg_arguments, Register scratch); ++ ++ // Calls a C function and cleans up the space for arguments allocated ++ // by PrepareCallCFunction. The called function is not allowed to trigger a ++ // garbage collection, since that might move the code and invalidate the ++ // return address (unless this is somehow accounted for by the called ++ // function). ++ enum class SetIsolateDataSlots { ++ kNo, ++ kYes, ++ }; ++ void CallCFunction( ++ ExternalReference function, int num_arguments, ++ SetIsolateDataSlots set_isolate_data_slots = SetIsolateDataSlots::kYes); ++ void CallCFunction( ++ Register function, int num_arguments, ++ SetIsolateDataSlots set_isolate_data_slots = SetIsolateDataSlots::kYes); ++ void CallCFunction( ++ ExternalReference function, int num_reg_arguments, ++ int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots = SetIsolateDataSlots::kYes); ++ void CallCFunction( ++ Register function, int num_reg_arguments, int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots = SetIsolateDataSlots::kYes); ++ void MovFromFloatResult(DoubleRegister dst); ++ void MovFromFloatParameter(DoubleRegister dst); ++ ++ // There are two ways of passing double arguments on SW64, depending on ++ // whether soft or hard floating point ABI is used. These functions ++ // abstract parameter passing for the three different ways we call ++ // C functions from generated code. ++ void MovToFloatParameter(DoubleRegister fsrc); ++ void MovToFloatParameters(DoubleRegister fsrc0, DoubleRegister fsrc1); ++ void MovToFloatResult(DoubleRegister fsrc); ++ ++ void MovFromGeneralResult(Register dst); ++ void MovFromGeneralParameter(Register dst); ++ void MovToGeneralParameter(Register src); ++ void MovToGeneralParameters(Register src0, Register src1); ++ void MovToGeneralResult(Register src); ++ ++ // See comments at the beginning of Builtins::Generate_CEntry. ++ inline void PrepareCEntryArgs(int num_args) { li(a0, num_args); } ++ inline void PrepareCEntryFunction(const ExternalReference& ref) { ++ li(a1, ref); ++ } ++ ++ void CheckPageFlag(Register object, Register scratch, int mask, Condition cc, ++ Label* condition_met); ++#undef COND_ARGS ++ ++ // Performs a truncating conversion of a floating point number as used by ++ // the JS bitwise operations. See ECMA-262 9.5: ToInt32. ++ // Exits with 'result' holding the answer. ++ void TruncateDoubleToI(Isolate* isolate, Zone* zone, Register result, ++ DoubleRegister double_input, StubCallMode stub_mode); ++ ++ // Conditional move. ++ void Seleq(Register rd, Register rs, Register rt); ++ void Selne(Register rd, Register rs, Register rt); ++ ++ void LoadZeroIfFPUCondition(Register dest); ++ void LoadZeroIfNotFPUCondition(Register dest); ++ ++ void LoadZeroIfConditionNotZero(Register dest, Register condition); ++ void LoadZeroIfConditionZero(Register dest, Register condition); ++ void LoadZeroOnCondition(Register rd, Register rs, const Operand& rt, ++ Condition cond); ++ ++ void Ctlzw(Register rd, Register rs); ++ void Ctlzl(Register rd, Register rs); ++ void Cttzw(Register rd, Register rs); ++ void Cttzl(Register rd, Register rs); ++ void Ctpopw(Register rd, Register rs); ++ void Ctpopl(Register rd, Register rs); ++ ++ // SW64 R2 instruction macro. ++ void Extw(Register rt, Register rs, uint16_t pos, uint16_t size); ++ void Extl(Register rt, Register rs, uint16_t pos, uint16_t size); ++ void Insw(Register rt, Register rs, uint16_t pos, uint16_t size); ++ void Insd(Register rt, Register rs, uint16_t pos, uint16_t size); ++ void ExtractBits(Register dest, Register source, Register pos, int size, ++ bool sign_extend = false); ++ void InsertBits(Register dest, Register source, Register pos, int size); ++ void Fneg(FPURegister fd, FPURegister fs); ++ ++ // SW64 R6 instruction macros. ++ void Bovc(Register rt, Register rs, Label* L); ++ void Bnvc(Register rt, Register rs, Label* L); ++ ++ // Convert single to unsigned word. ++ void Trunc_uw_s(FPURegister fd, FPURegister fs, FPURegister scratch); ++ void Trunc_uw_s(Register rd, FPURegister fs, FPURegister scratch); ++ ++ // Change endianness ++ void ByteSwapSigned(Register dest, Register src, int operand_size); ++ void ByteSwapUnsigned(Register dest, Register src, int operand_size); ++ ++ void Ldh_u(Register rd, const MemOperand& rs); ++ void Ldhu_u(Register rd, const MemOperand& rs); ++ void Sth_u(Register rd, const MemOperand& rs, Register scratch); ++ ++ void Ldw_u(Register rd, const MemOperand& rs); ++ void Ldwu_u(Register rd, const MemOperand& rs); ++ void Stw_u(Register rd, const MemOperand& rs); ++ ++ void Ldl_u(Register rd, const MemOperand& rs); ++ void Stl_u(Register rd, const MemOperand& rs); ++ ++ void Flds_u(FPURegister fd, const MemOperand& rs, Register scratch); ++ void Fsts_u(FPURegister fd, const MemOperand& rs, Register scratch); ++ ++ void Fldd_u(FPURegister fd, const MemOperand& rs, Register scratch); ++ void Fstd_u(FPURegister fd, const MemOperand& rs, Register scratch); ++ ++ void Ldb(Register rd, const MemOperand& rs); ++ void Ldbu(Register rd, const MemOperand& rs); ++ void Stb(Register rd, const MemOperand& rs); ++ ++ void Ldh(Register rd, const MemOperand& rs); ++ void Ldhu(Register rd, const MemOperand& rs); ++ void Sth(Register rd, const MemOperand& rs); ++ ++ void Ldw(Register rd, const MemOperand& rs); ++ void Ldwu(Register rd, const MemOperand& rs); ++ void Stw(Register rd, const MemOperand& rs); ++ ++ void Flds(FPURegister fd, const MemOperand& src); ++ void Fsts(FPURegister fs, const MemOperand& dst); ++ ++ void Fldd(FPURegister fd, const MemOperand& src); ++ void Fstd(FPURegister fs, const MemOperand& dst); ++ ++ void Ll(Register rd, const MemOperand& rs); ++ void Sc(Register rd, const MemOperand& rs); ++ ++ void Lld(Register rd, const MemOperand& rs); ++ void Scd(Register rd, const MemOperand& rs); ++ void Fabs(FPURegister fd, FPURegister fs); ++ // Perform a floating-point min or max operation with the ++ // (IEEE-754-compatible) semantics of SW32's Release 6 MIN.fmt/MAX.fmt. ++ // Some cases, typically NaNs or +/-0.0, are expected to be rare and are ++ // handled in out-of-line code. The specific behaviour depends on supported ++ // instructions. ++ // ++ // These functions assume (and assert) that src1!=src2. It is permitted ++ // for the result to alias either input register. ++ void Float32Max(FPURegister dst, FPURegister src1, FPURegister src2, ++ Label* out_of_line); ++ void Float32Min(FPURegister dst, FPURegister src1, FPURegister src2, ++ Label* out_of_line); ++ void Float64Max(FPURegister dst, FPURegister src1, FPURegister src2, ++ Label* out_of_line); ++ void Float64Min(FPURegister dst, FPURegister src1, FPURegister src2, ++ Label* out_of_line); ++ ++ // Generate out-of-line cases for the macros above. ++ void Float32MaxOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2); ++ void Float32MinOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2); ++ void Float64MaxOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2); ++ void Float64MinOutOfLine(FPURegister dst, FPURegister src1, FPURegister src2); ++ ++ bool IsDoubleZeroRegSet() { return has_double_zero_reg_set_; } ++ ++ void mov(Register rd, Register rt) { ++ if (rt != rd) bis(zero_reg, rt, rd); ++ } ++ ++ inline void Move(Register dst, Handle handle) { li(dst, handle); } ++ inline void Move(Register dst, Smi smi) { li(dst, Operand(smi)); } ++ ++ inline void Move(Register dst, Register src) { ++ if (dst != src) { ++ mov(dst, src); ++ } ++ } ++ ++ inline void Move(FPURegister dst, FPURegister src) { Move_d(dst, src); } ++ ++ inline void Move(Register dst_low, Register dst_high, FPURegister src) { ++ fimovd(src, dst_low); ++ sral(dst_low, 32, dst_high); ++ addw(dst_low, 0, dst_low); ++ } ++ ++ inline void Move(Register dst, FPURegister src) { fimovd(src, dst); } ++ ++ inline void Move(FPURegister dst, Register src) { ifmovd(src, dst); } ++ ++ inline void FmoveHigh(Register dst_high, FPURegister src) { ++ fimovd(src, dst_high); ++ sral(dst_high, 32, dst_high); ++ } ++ ++ inline void FmoveHigh(FPURegister dst, Register src_high) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Register scratch1 = t8; ++ DCHECK(src_high != scratch && src_high != scratch1); ++ fimovd(dst, scratch); ++ zapnot(scratch, 0xf, scratch); ++ slll(src_high, 32, scratch1); ++ or_(scratch, scratch1, scratch); ++ ifmovd(scratch, dst); ++ } ++ ++ inline void FmoveLow(Register dst_low, FPURegister src) { ++ fimovd(src, dst_low); ++ addw(dst_low, 0, dst_low); ++ } ++ ++ void FmoveLow(FPURegister dst, Register src_low); ++ ++ inline void Move(FPURegister dst, Register src_low, Register src_high) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ DCHECK(src_high != scratch && src_low != scratch); ++ slll(src_high, 32, scratch); ++ or_(scratch, src_low, scratch); ++ ifmovd(scratch, dst); ++ } ++ ++ inline void Move_d(FPURegister dst, FPURegister src) { ++ if (dst != src) { ++ fmovd(src, dst); ++ } ++ } ++ ++ inline void Move_s(FPURegister dst, FPURegister src) { ++ if (dst != src) { ++ fmovs(src, dst); ++ } ++ } ++ ++ void Move(FPURegister dst, float imm) { ++ Move(dst, base::bit_cast(imm)); ++ } ++ void Move(FPURegister dst, double imm) { ++ Move(dst, base::bit_cast(imm)); ++ } ++ void Move(FPURegister dst, uint32_t src); ++ void Move(FPURegister dst, uint64_t src); ++ ++ // DaddOverflow sets overflow register to a negative value if ++ // overflow occured, otherwise it is zero or positive ++ void DaddOverflow(Register dst, Register left, const Operand& right, ++ Register overflow); ++ // SublOverflow sets overflow register to a negative value if ++ // overflow occured, otherwise it is zero or positive ++ void SublOverflow(Register dst, Register left, const Operand& right, ++ Register overflow); ++ // MulwOverflow sets overflow register to zero if no overflow occured ++ void MulwOverflow(Register dst, Register left, const Operand& right, ++ Register overflow); ++ void MullOverflow(Register dst, Register left, const Operand& right, ++ Register overflow); ++ ++ // Number of instructions needed for calculation of switch table entry address ++ static const int kSwitchTablePrologueSize = 5; // 4 + 1 (ALIGN may 1 nop) ++ ++ // GetLabelFunction must be lambda '[](size_t index) -> Label*' or a ++ // functor/function with 'Label *func(size_t index)' declaration. ++ template ++ void GenerateSwitchTable(Register index, size_t case_count, ++ Func GetLabelFunction); ++ ++ // Load an object from the root table. ++ void LoadRoot(Register destination, RootIndex index) final; ++ void LoadRoot(Register destination, RootIndex index, Condition cond, ++ Register src1, const Operand& src2); ++ ++ void LoadMap(Register destination, Register object); ++ ++ // If the value is a NaN, canonicalize the value else, do nothing. ++ void FPUCanonicalizeNaN(const DoubleRegister dst, const DoubleRegister src); ++ ++ // --------------------------------------------------------------------------- ++ // FPU macros. These do not handle special cases like NaN or +- inf. ++ ++ // Convert unsigned word to double. ++ void Cvt_d_uw(FPURegister fd, FPURegister fs); ++ void Cvt_d_uw(FPURegister fd, Register rs); ++ ++ // Convert unsigned long to double. ++ void Cvt_d_ul(FPURegister fd, FPURegister fs); ++ void Cvt_d_ul(FPURegister fd, Register rs); ++ ++ // Convert unsigned word to float. ++ void Cvt_s_uw(FPURegister fd, FPURegister fs); ++ void Cvt_s_uw(FPURegister fd, Register rs); ++ ++ // Convert unsigned long to float. ++ void Cvt_s_ul(FPURegister fd, FPURegister fs); ++ void Cvt_s_ul(FPURegister fd, Register rs); ++ ++ // Convert double to unsigned word. ++ void Trunc_uw_d(FPURegister fd, FPURegister fs, FPURegister scratch); ++ void Trunc_uw_d(Register rd, FPURegister fs, FPURegister scratch); ++ ++ // Convert double to unsigned long. ++ void Trunc_ul_d(FPURegister fd, FPURegister fs, FPURegister scratch, ++ Register result = no_reg); ++ void Trunc_ul_d(Register rd, FPURegister fs, FPURegister scratch, ++ Register result = no_reg); ++ ++ // Convert single to unsigned long. ++ void Trunc_ul_s(FPURegister fd, FPURegister fs, FPURegister scratch, ++ Register result = no_reg); ++ void Trunc_ul_s(Register rd, FPURegister fs, FPURegister scratch, ++ Register result = no_reg); ++ ++ // Round double functions ++ void Truncd(FPURegister fd, FPURegister fs); ++ void Roundd(FPURegister fd, FPURegister fs); ++ void Floord(FPURegister fd, FPURegister fs); ++ void Ceild(FPURegister fd, FPURegister fs); ++ ++//use fridx/frisx intructions in CORE4 ++ void Fridn_d_d(FPURegister fd, FPURegister fs); ++ void Frisn_s_s(FPURegister fd, FPURegister fs); ++ void Fridz_d_d(FPURegister fd, FPURegister fs); ++ void Frisz_s_s(FPURegister fd, FPURegister fs); ++ void Fridp_d_d(FPURegister fd, FPURegister fs); ++ void Frisp_s_s(FPURegister fd, FPURegister fs); ++ void Fridg_d_d(FPURegister fd, FPURegister fs); ++ void Frisg_s_s(FPURegister fd, FPURegister fs); ++ ++ // Round float functions ++ void Truncs(FPURegister fd, FPURegister fs); ++ void Rounds(FPURegister fd, FPURegister fs); ++ void Floors(FPURegister fd, FPURegister fs); ++ void Ceils(FPURegister fd, FPURegister fs); ++ ++ void SWSARoundW(SWSARegister dst, SWSARegister src, FPURoundingMode mode); ++ void SWSARoundD(SWSARegister dst, SWSARegister src, FPURoundingMode mode); ++ ++ // Jump the register contains a smi. ++ void JumpIfSmi(Register value, Label* smi_label); ++ ++ void JumpIfEqual(Register a, int32_t b, Label* dest) { ++ li(kScratchReg, Operand(b)); ++ Branch(dest, eq, a, Operand(kScratchReg)); ++ } ++ ++ void JumpIfLessThan(Register a, int32_t b, Label* dest) { ++ li(kScratchReg, Operand(b)); ++ Branch(dest, lt, a, Operand(kScratchReg)); ++ } ++ ++ // Push a standard frame, consisting of ra, fp, context and JS function. ++ void PushStandardFrame(Register function_reg); ++ ++ // Get the actual activation frame alignment for target environment. ++ static int ActivationFrameAlignment(); ++ ++ // Load Scaled Address instructions. Parameter sa (shift argument) must be ++ // between [1, 31] (inclusive). On pre-r6 architectures the scratch register ++ // may be clobbered. ++ void Lsaw(Register rd, Register rs, Register rt, uint8_t sa, ++ Register scratch = at); ++ void Lsal(Register rd, Register rs, Register rt, uint8_t sa, ++ Register scratch = at); ++ ++ // Compute the start of the generated instruction stream from the current PC. ++ // This is an alternative to embedding the {CodeObject} handle as a reference. ++ void ComputeCodeStartAddress(Register dst); ++ ++ // Control-flow integrity: ++ ++ // Define a function entrypoint. This doesn't emit any code for this ++ // architecture, as control-flow integrity is not supported for it. ++ void CodeEntry() {} ++ // Define an exception handler. ++ void ExceptionHandler() {} ++ // Define an exception handler and bind a label. ++ void BindExceptionHandler(Label* label) { bind(label); } ++ ++ // It assumes that the arguments are located below the stack pointer. ++ // argc is the number of arguments not including the receiver. ++ // TODO(victorgomes): Remove this function once we stick with the reversed ++ // arguments order. ++ void LoadReceiver(Register dest, Register argc) { ++ Ldl(dest, MemOperand(sp, 0)); ++ } ++ ++ void StoreReceiver(Register rec, Register argc, Register scratch) { ++ Stl(rec, MemOperand(sp, 0)); ++ } ++ ++ bool IsNear(Label* L, Condition cond, int rs_reg); ++ ++ // Swap two registers. If the scratch register is omitted then a slightly ++ // less efficient form using xor instead of mov is emitted. ++ void Swap(Register reg1, Register reg2, Register scratch = no_reg); ++ ++ void TestCodeIsMarkedForDeoptimizationAndJump(Register code_data_container, ++ Register scratch, ++ Condition cond, Label* target); ++ Operand ClearedValue() const; ++ ++ void PushRoot(RootIndex index) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ LoadRoot(scratch, index); ++ Push(scratch); ++ } ++ ++ // Compare the object in a register to a value and jump if they are equal. ++ void JumpIfRoot(Register with, RootIndex index, Label* if_equal) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ LoadRoot(scratch, index); ++ Branch(if_equal, eq, with, Operand(scratch)); ++ } ++ ++ // Compare the object in a register to a value and jump if they are not equal. ++ void JumpIfNotRoot(Register with, RootIndex index, Label* if_not_equal) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ LoadRoot(scratch, index); ++ Branch(if_not_equal, ne, with, Operand(scratch)); ++ } ++ ++ // Checks if value is in range [lower_limit, higher_limit] using a single ++ // comparison. ++ void JumpIfIsInRange(Register value, unsigned lower_limit, ++ unsigned higher_limit, Label* on_in_range); ++ ++ // --------------------------------------------------------------------------- ++ // GC Support ++ ++ // Notify the garbage collector that we wrote a pointer into an object. ++ // |object| is the object being stored into, |value| is the object being ++ // stored. value and scratch registers are clobbered by the operation. ++ // The offset is the offset from the start of the object, not the offset from ++ // the tagged HeapObject pointer. For use with FieldOperand(reg, off). ++ void RecordWriteField(Register object, int offset, Register value, ++ Register scratch, RAStatus ra_status, ++ SaveFPRegsMode save_fp, ++ SmiCheck smi_check = SmiCheck::kInline); ++ ++ // For a given |object| notify the garbage collector that the slot |address| ++ // has been written. |value| is the object being stored. The value and ++ // address registers are clobbered by the operation. ++ void RecordWrite(Register object, Register address, Register value, ++ RAStatus ra_status, SaveFPRegsMode save_fp, ++ SmiCheck smi_check = SmiCheck::kInline); ++ ++ void Pref(int32_t hint, const MemOperand& rs); ++ ++ // --------------------------------------------------------------------------- ++ // Pseudo-instructions. ++ ++ // Convert double to unsigned long. ++ void Trunc_l_ud(FPURegister fd, FPURegister fs, FPURegister scratch); ++ ++ void Trunc_l_d(FPURegister fd, FPURegister fs); ++ void Round_l_d(FPURegister fd, FPURegister fs); ++ void Floor_l_d(FPURegister fd, FPURegister fs); ++ void Ceil_l_d(FPURegister fd, FPURegister fs); ++ ++ void Trunc_w_d(FPURegister fd, FPURegister fs); ++ void Round_w_d(FPURegister fd, FPURegister fs); ++ void Floor_w_d(FPURegister fd, FPURegister fs); ++ void Ceil_w_d(FPURegister fd, FPURegister fs); ++ ++ void Madd_s(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, ++ FPURegister scratch); ++ void Madd_d(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, ++ FPURegister scratch); ++ void Msub_s(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, ++ FPURegister scratch); ++ void Msub_d(FPURegister fd, FPURegister fr, FPURegister fs, FPURegister ft, ++ FPURegister scratch); ++ ++ // Enter exit frame. ++ // argc - argument count to be dropped by LeaveExitFrame. ++ // stack_space - extra stack space. ++ void EnterExitFrame(int stack_space, StackFrame::Type frame_type); ++ ++ // Leave the current exit frame. ++ void LeaveExitFrame(Register arg_count, bool do_return = NO_EMIT_RETURN, ++ bool argument_count_is_length = false); ++ ++ // Make sure the stack is aligned. Only emits code in debug mode. ++ void AssertStackIsAligned() NOOP_UNLESS_DEBUG_CODE; ++ ++ // Load the global proxy from the current context. ++ void LoadGlobalProxy(Register dst) { ++ LoadNativeContextSlot(dst, Context::GLOBAL_PROXY_INDEX); ++ } ++ ++ void LoadNativeContextSlot(Register dst, int index); ++ ++ // Load the initial map from the global function. The registers ++ // function and map can be the same, function is then overwritten. ++ void LoadGlobalFunctionInitialMap(Register function, Register map, ++ Register scratch); ++ ++ // ------------------------------------------------------------------------- ++ // JavaScript invokes. ++ ++ // Invoke the JavaScript function code by either calling or jumping. ++ void InvokeFunctionCode(Register function, Register new_target, ++ Register expected_parameter_count, ++ Register actual_parameter_count, InvokeType type); ++ ++ // On function call, call into the debugger if necessary. ++ void CheckDebugHook(Register fun, Register new_target, ++ Register expected_parameter_count, ++ Register actual_parameter_count); ++ ++ // Invoke the JavaScript function in the given register. Changes the ++ // current context to the context in the function before invoking. ++ void InvokeFunctionWithNewTarget(Register function, Register new_target, ++ Register actual_parameter_count, ++ InvokeType type); ++ void InvokeFunction(Register function, Register expected_parameter_count, ++ Register actual_parameter_count, InvokeType type); ++ ++ // Exception handling. ++ ++ // Push a new stack handler and link into stack handler chain. ++ void PushStackHandler(); ++ ++ // Unlink the stack handler on top of the stack from the stack handler chain. ++ // Must preserve the result register. ++ void PopStackHandler(); ++ ++ // ------------------------------------------------------------------------- ++ // Support functions. ++ ++ void GetObjectType(Register function, Register map, Register type_reg); ++ ++ void GetInstanceTypeRange(Register map, Register type_reg, ++ InstanceType lower_limit, Register range); ++ ++ // ------------------------------------------------------------------------- ++ // Runtime calls. ++ ++ // Call a runtime routine. ++ void CallRuntime(const Runtime::Function* f, int num_arguments); ++ ++ // Convenience function: Same as above, but takes the fid instead. ++ void CallRuntime(Runtime::FunctionId fid) { ++ const Runtime::Function* function = Runtime::FunctionForId(fid); ++ CallRuntime(function, function->nargs); ++ } ++ ++ // Convenience function: Same as above, but takes the fid instead. ++ void CallRuntime(Runtime::FunctionId fid, int num_arguments) { ++ CallRuntime(Runtime::FunctionForId(fid), num_arguments); ++ } ++ ++ // Convenience function: tail call a runtime routine (jump). ++ void TailCallRuntime(Runtime::FunctionId fid); ++ ++ // Jump to the builtin routine. ++ void JumpToExternalReference(const ExternalReference& builtin, ++ bool builtin_exit_frame = false); ++ ++ // --------------------------------------------------------------------------- ++ // In-place weak references. ++ void LoadWeakValue(Register out, Register in, Label* target_if_cleared); ++ ++ // ------------------------------------------------------------------------- ++ // StatsCounter support. ++ ++ void IncrementCounter(StatsCounter* counter, int value, Register scratch1, ++ Register scratch2) { ++ if (!v8_flags.native_code_counters) return; ++ EmitIncrementCounter(counter, value, scratch1, scratch2); ++ } ++ void EmitIncrementCounter(StatsCounter* counter, int value, Register scratch1, ++ Register scratch2); ++ void DecrementCounter(StatsCounter* counter, int value, Register scratch1, ++ Register scratch2) { ++ if (!v8_flags.native_code_counters) return; ++ EmitDecrementCounter(counter, value, scratch1, scratch2); ++ } ++ void EmitDecrementCounter(StatsCounter* counter, int value, Register scratch1, ++ Register scratch2); ++ ++ // ------------------------------------------------------------------------- ++ // Stack limit utilities ++ ++ enum StackLimitKind { kInterruptStackLimit, kRealStackLimit }; ++ void LoadStackLimit(Register destination, StackLimitKind kind); ++ void StackOverflowCheck(Register num_args, Register scratch1, ++ Register scratch2, Label* stack_overflow); ++ ++ // --------------------------------------------------------------------------- ++ // Smi utilities. ++ ++ // Test if the register contains a smi. ++ inline void SmiTst(Register value, Register scratch) { ++ And(scratch, value, Operand(kSmiTagMask)); ++ } ++ ++ // Jump if the register contains a non-smi. ++ void JumpIfNotSmi(Register value, Label* not_smi_label); ++ ++ // Abort execution if argument is not a Constructor, enabled via --debug-code. ++ void AssertConstructor(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Abort execution if argument is not a JSFunction, enabled via --debug-code. ++ void AssertFunction(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Abort execution if argument is not a callable JSFunction, enabled via ++ // --debug-code. ++ void AssertCallableFunction(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Abort execution if argument is not a JSBoundFunction, ++ // enabled via --debug-code. ++ void AssertBoundFunction(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Abort execution if argument is not a JSGeneratorObject (or subclass), ++ // enabled via --debug-code. ++ void AssertGeneratorObject(Register object) NOOP_UNLESS_DEBUG_CODE; ++ ++ // Abort execution if argument is not undefined or an AllocationSite, enabled ++ // via --debug-code. ++ void AssertUndefinedOrAllocationSite(Register object, ++ Register scratch) NOOP_UNLESS_DEBUG_CODE; ++ ++ // --------------------------------------------------------------------------- ++ // Tiering support. ++ void AssertFeedbackVector(Register object, ++ Register scratch) NOOP_UNLESS_DEBUG_CODE; ++ void ReplaceClosureCodeWithOptimizedCode(Register optimized_code, ++ Register closure, Register scratch1, ++ Register scratch2); ++ void GenerateTailCallToReturnedCode(Runtime::FunctionId function_id); ++ void LoadFeedbackVectorFlagsAndJumpIfNeedsProcessing( ++ Register flags, Register feedback_vector, CodeKind current_code_kind, ++ Label* flags_need_processing); ++ void OptimizeCodeOrTailCallOptimizedCodeSlot(Register flags, ++ Register feedback_vector); ++ ++ template ++ void DecodeField(Register dst, Register src) { ++ Extw(dst, src, Field::kShift, Field::kSize); ++ } ++ ++ template ++ void DecodeField(Register reg) { ++ DecodeField(reg, reg); ++ } ++ ++ // Performs a truncating conversion of a floating point number as used by ++ // the JS bitwise operations. See ECMA-262 9.5: ToInt32. Goes to 'done' if it ++ // succeeds, otherwise falls through if result is saturated. On return ++ // 'result' either holds answer, or is clobbered on fall through. ++ void TryInlineTruncateDoubleToI(Register result, DoubleRegister input, ++ Label* done); ++ ++ protected: ++ inline Register GetRtAsRegisterHelper(const Operand& rt, Register scratch); ++ inline int32_t GetOffset(int32_t offset, Label* L, OffsetSize bits); ++ ++ private: ++ bool has_double_zero_reg_set_ = false; ++ ++ // Helper functions for generating invokes. ++ void InvokePrologue(Register expected_parameter_count, ++ Register actual_parameter_count, Label* done, ++ InvokeType type); ++ ++ void CallCFunctionHelper( ++ Register function, int num_reg_arguments, int num_double_arguments, ++ SetIsolateDataSlots set_isolate_data_slots = SetIsolateDataSlots::kYes); ++ ++ // TODO(sw64) Reorder parameters so out parameters come last. ++ bool CalculateOffset(Label* L, int32_t* offset, OffsetSize bits); ++ bool CalculateOffset(Label* L, int32_t* offset, OffsetSize bits, ++ Register* scratch, const Operand& rt); ++ ++ void BranchShortHelperR6(int32_t offset, Label* L); ++ void BranchShortHelper(int32_t offset, Label* L); ++ bool BranchShortHelperR6(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt); ++ bool BranchShortHelper(int32_t offset, Label* L, Condition cond, Register rs, ++ const Operand& rt); ++ bool BranchShortCheck(int32_t offset, Label* L, Condition cond, Register rs, ++ const Operand& rt); ++ ++ void BranchAndLinkShortHelperR6(int32_t offset, Label* L); ++ void BranchAndLinkShortHelper(int32_t offset, Label* L); ++ void BranchAndLinkShort(int32_t offset); ++ void BranchAndLinkShort(Label* L); ++ bool BranchAndLinkShortHelperR6(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt); ++ bool BranchAndLinkShortHelper(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt); ++ bool BranchAndLinkShortCheck(int32_t offset, Label* L, Condition cond, ++ Register rs, const Operand& rt); ++ void BranchLong(Label* L); ++ void BranchAndLinkLong(Label* L); ++ ++ template ++ void RoundDouble(FPURegister dst, FPURegister src, FPURoundingMode mode, ++ RoundFunc round); ++ ++ template ++ void RoundFloat(FPURegister dst, FPURegister src, FPURoundingMode mode, ++ RoundFunc round); ++ ++ // Push a fixed frame, consisting of ra, fp. ++ void PushCommonFrame(Register marker_reg = no_reg); ++ ++ DISALLOW_IMPLICIT_CONSTRUCTORS(MacroAssembler); ++}; ++ ++template ++void MacroAssembler::GenerateSwitchTable(Register index, size_t case_count, ++ Func GetLabelFunction) { ++ // Ensure that dd-ed labels following this instruction use 8 bytes aligned ++ // addresses. ++ BlockTrampolinePoolFor(static_cast(case_count) * 2 + ++ kSwitchTablePrologueSize); ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Align(8); ++ int instr_num = 3; // Added 20190117 ++ br(scratch, 0); ++ s8addl(index, scratch, ++ scratch); // get_mem = cur_pc + index * 8 (kPointerSizeLog2); ++ Ldl(scratch, MemOperand(scratch, instr_num * v8::internal::kInstrSize)); ++ Assembler::jmp(zero_reg, scratch, 0); ++ for (size_t index = 0; index < case_count; ++index) { ++ dd(GetLabelFunction(index)); ++ } ++} ++ ++struct MoveCycleState { ++ // List of scratch registers reserved for pending moves in a move cycle, and ++ // which should therefore not be used as a temporary location by ++ // {MoveToTempLocation}. ++ RegList scratch_regs; ++ // Available scratch registers during the move cycle resolution scope. ++ base::Optional temps; ++ // Scratch register picked by {MoveToTempLocation}. ++ base::Optional scratch_reg; ++}; ++ ++#define ACCESS_MASM(masm) masm-> ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_CODEGEN_SW64_MACRO_ASSEMBLER_SW64_H_ +diff --git a/deps/v8/src/codegen/sw64/register-sw64.h b/deps/v8/src/codegen/sw64/register-sw64.h +new file mode 100644 +index 00000000..9daf691f +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/register-sw64.h +@@ -0,0 +1,301 @@ ++// Copyright 2018 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_CODEGEN_SW64_REGISTER_SW64_H_ ++#define V8_CODEGEN_SW64_REGISTER_SW64_H_ ++ ++#include "src/codegen/register-base.h" ++#include "src/codegen/sw64/constants-sw64.h" ++ ++namespace v8 { ++namespace internal { ++ ++// clang-format off ++#define GENERAL_REGISTERS(V) \ ++ V(v0) \ ++ V(t0) V(t1) V(t2) V(t3) V(t4) V(t5) V(t6) V(t7) \ ++ V(s0) V(s1) V(s2) V(s3) V(s4) V(s5) V(fp) \ ++ V(a0) V(a1) V(a2) V(a3) V(a4) V(a5) \ ++ V(t8) V(t9) V(t10) V(t11) \ ++ V(ra) \ ++ V(t12) \ ++ V(at) \ ++ V(gp) \ ++ V(sp) \ ++ V(zero_reg) ++ ++// t7, t8 used as two scratch regs instead of s3, s4; so they ++// should not be added to allocatable lists. ++#define ALLOCATABLE_GENERAL_REGISTERS(V) \ ++ V(a0) V(a1) V(a2) V(a3) V(a4) V(a5) \ ++ V(t0) V(t1) V(t2) V(t3) V(t5) V(t6) V(t9) V(t10) V(s5) \ ++ V(v0) V(t4) ++ ++#define DOUBLE_REGISTERS(V) \ ++ V(f0) V(f1) V(f2) V(f3) V(f4) V(f5) V(f6) V(f7) \ ++ V(f8) V(f9) V(f10) V(f11) V(f12) V(f13) V(f14) V(f15) \ ++ V(f16) V(f17) V(f18) V(f19) V(f20) V(f21) V(f22) V(f23) \ ++ V(f24) V(f25) V(f26) V(f27) V(f28) V(f29) V(f30) V(f31) ++ ++// Currently, SW64 just use even float point register, except ++// for C function param registers. ++//SKTODO ++#define DOUBLE_USE_REGISTERS(V) \ ++ V(f0) V(f2) V(f4) V(f6) V(f8) V(f10) V(f12) V(f13) \ ++ V(f14) V(f15) V(f16) V(f17) V(f18) V(f19) V(f20) V(f22) \ ++ V(f24) V(f26) V(f28) V(f30) ++ ++#define FLOAT_REGISTERS DOUBLE_REGISTERS ++#define SIMD128_REGISTERS(V) \ ++ V(w0) V(w1) V(w2) V(w3) V(w4) V(w5) V(w6) V(w7) \ ++ V(w8) V(w9) V(w10) V(w11) V(w12) V(w13) V(w14) V(w15) \ ++ V(w16) V(w17) V(w18) V(w19) V(w20) V(w21) V(w22) V(w23) \ ++ V(w24) V(w25) V(w26) V(w27) V(w28) V(w29) V(w30) V(w31) ++ ++/* f27-f30 scratch fregisters */ ++#define ALLOCATABLE_DOUBLE_REGISTERS(V) \ ++ V(f0) V(f1) V(f2) V(f3) V(f4) V(f5) V(f6) V(f7) \ ++ V(f8) V(f9) V(f10) V(f11) V(f12) V(f13) V(f14) V(f15) \ ++ V(f16) V(f17) V(f18) V(f19) V(f20) V(f21) V(f22) V(f23) \ ++ V(f24) V(f25) V(f26) ++// clang-format on ++ ++// Note that the bit values must match those used in actual instruction ++// encoding. ++const int kNumRegs = 32; ++ ++// CPU Registers. ++// ++// 1) We would prefer to use an enum, but enum values are assignment- ++// compatible with int, which has caused code-generation bugs. ++// ++// 2) We would prefer to use a class instead of a struct but we don't like ++// the register initialization to depend on the particular initialization ++// order (which appears to be different on OS X, Linux, and Windows for the ++// installed versions of C++ we tried). Using a struct permits C-style ++// "initialization". Also, the Register objects cannot be const as this ++// forces initialization stubs in MSVC, making us dependent on initialization ++// order. ++// ++// 3) By not using an enum, we are possibly preventing the compiler from ++// doing certain constant folds, which may significantly reduce the ++// code generated for some assembly instructions (because they boil down ++// to a few constants). If this is a problem, we could change the code ++// such that we use an enum in optimized mode, and the struct in debug ++// mode. This way we get the compile-time error checking in debug mode ++// and best performance in optimized code. ++ ++// ----------------------------------------------------------------------------- ++// Implementation of Register and FPURegister. ++ ++enum RegisterCode { ++#define REGISTER_CODE(R) kRegCode_##R, ++ GENERAL_REGISTERS(REGISTER_CODE) ++#undef REGISTER_CODE ++ kRegAfterLast ++}; ++ ++class Register : public RegisterBase { ++ public: ++ static constexpr int kMantissaOffset = 0; ++ static constexpr int kExponentOffset = 4; ++ ++ private: ++ friend class RegisterBase; ++ explicit constexpr Register(int code) : RegisterBase(code) {} ++}; ++ ++// s5: context register ++// t7: lithium scratch ++// t8: lithium scratch2 ++#define DECLARE_REGISTER(R) \ ++ constexpr Register R = Register::from_code(kRegCode_##R); ++GENERAL_REGISTERS(DECLARE_REGISTER) ++#undef DECLARE_REGISTER ++ ++constexpr Register no_reg = Register::no_reg(); ++ ++int ToNumber(Register reg); ++ ++Register ToRegister(int num); ++ ++// Returns the number of padding slots needed for stack pointer alignment. ++constexpr int ArgumentPaddingSlots(int argument_count) { ++ // No argument padding required. ++ return 0; ++} ++ ++constexpr AliasingKind kFPAliasing = AliasingKind::kOverlap; ++constexpr bool kSimdMaskRegisters = false; ++ ++enum DoubleRegisterCode { ++#define REGISTER_CODE(R) kDoubleCode_##R, ++ DOUBLE_REGISTERS(REGISTER_CODE) ++#undef REGISTER_CODE ++ kDoubleAfterLast ++}; ++ ++// Coprocessor register. ++class FPURegister : public RegisterBase { ++ public: ++ // TODO(plind): Warning, inconsistent numbering here. kNumFPURegisters refers ++ // to number of 32-bit FPU regs, but kNumAllocatableRegisters refers to ++ // number of Double regs (64-bit regs, or FPU-reg-pairs). ++ ++ private: ++ friend class RegisterBase; ++ explicit constexpr FPURegister(int code) : RegisterBase(code) {} ++}; ++ ++enum SWSARegisterCode { ++#define REGISTER_CODE(R) kSwsaCode_##R, ++ SIMD128_REGISTERS(REGISTER_CODE) ++#undef REGISTER_CODE ++ kSwsaAfterLast ++}; ++ ++// SW64 SIMD (SWSA) register ++class SWSARegister : public RegisterBase { ++ friend class RegisterBase; ++ explicit constexpr SWSARegister(int code) : RegisterBase(code) {} ++}; ++ ++// A few double registers are reserved: one as a scratch register and one to ++// hold 0.0. ++// f31: 0.0 ++// f30: scratch register. ++ ++// V8 now supports the O32 ABI, and the FPU Registers are organized as 32 ++// 32-bit registers, f0 through f31. When used as 'double' they are used ++// in pairs, starting with the even numbered register. So a double operation ++// on f0 really uses f0 and f1. ++// (Modern sw64 hardware also supports 32 64-bit registers, via setting ++// (privileged) Status Register FR bit to 1. This is used by the N32 ABI, ++// but it is not in common use. Someday we will want to support this in v8.) ++ ++// For O32 ABI, Floats and Doubles refer to same set of 32 32-bit registers. ++using FloatRegister = FPURegister; ++ ++using DoubleRegister = FPURegister; ++ ++#define DECLARE_DOUBLE_REGISTER(R) \ ++ constexpr DoubleRegister R = DoubleRegister::from_code(kDoubleCode_##R); ++DOUBLE_REGISTERS(DECLARE_DOUBLE_REGISTER) ++#undef DECLARE_DOUBLE_REGISTER ++ ++constexpr DoubleRegister no_dreg = DoubleRegister::no_reg(); ++ ++// SIMD registers. ++using Simd128Register = SWSARegister; ++ ++#define DECLARE_SIMD128_REGISTER(R) \ ++ constexpr Simd128Register R = Simd128Register::from_code(kSwsaCode_##R); ++SIMD128_REGISTERS(DECLARE_SIMD128_REGISTER) ++#undef DECLARE_SIMD128_REGISTER ++ ++const Simd128Register no_swsareg = Simd128Register::no_reg(); ++ ++// Register aliases. ++// cp is assumed to be a callee saved register. ++constexpr Register kRootRegister = s4; ++constexpr Register cp = s5; ++constexpr Register kScratchReg = t7; ++constexpr Register kScratchReg2 = t8; ++constexpr DoubleRegister kDoubleRegZero = f31; ++constexpr DoubleRegister kScratchDoubleReg = ++ f29; // change f30 to f29, use f28, f29 as scratch ++constexpr DoubleRegister kScratchDoubleReg1 = f28; ++constexpr DoubleRegister kScratchDoubleReg2 = f27; ++// Used on sw64r3 for compare operations. ++// We use the last non-callee saved odd register for N64 ABI ++constexpr DoubleRegister kDoubleCompareReg = f30; // change f28 to f30 ++// SWSA zero and scratch regs must have the same numbers as FPU zero and scratch ++constexpr Simd128Register kSimd128RegZero = w31; // may be used as scratch ++constexpr Simd128Register kSimd128ScratchReg = w30; ++ ++// FPU (coprocessor 1) control registers. ++// Currently only FPCR (#31) is implemented. ++struct FPUControlRegister { ++ bool is_valid() const { return reg_code == kFPCRRegister; } ++ bool is(FPUControlRegister creg) const { return reg_code == creg.reg_code; } ++ int code() const { ++ DCHECK(is_valid()); ++ return reg_code; ++ } ++ int bit() const { ++ DCHECK(is_valid()); ++ return 1 << reg_code; ++ } ++ void setcode(int f) { ++ reg_code = f; ++ DCHECK(is_valid()); ++ } ++ // Unfortunately we can't make this private in a struct. ++ int reg_code; ++}; ++ ++constexpr FPUControlRegister no_fpucreg = {kInvalidFPUControlRegister}; ++constexpr FPUControlRegister FPCR = {kFPCRRegister}; ++ ++// SWSA control registers ++struct SWSAControlRegister { ++ bool is_valid() const { ++ return (reg_code == kSWSAIRRegister) || (reg_code == kSWSACSRRegister); ++ } ++ bool is(SWSAControlRegister creg) const { return reg_code == creg.reg_code; } ++ int code() const { ++ DCHECK(is_valid()); ++ return reg_code; ++ } ++ int bit() const { ++ DCHECK(is_valid()); ++ return 1 << reg_code; ++ } ++ void setcode(int f) { ++ reg_code = f; ++ DCHECK(is_valid()); ++ } ++ // Unfortunately we can't make this private in a struct. ++ int reg_code; ++}; ++ ++constexpr SWSAControlRegister no_swsacreg = {kInvalidSWSAControlRegister}; ++constexpr SWSAControlRegister SWSAIR = {kSWSAIRRegister}; ++constexpr SWSAControlRegister SWSACSR = {kSWSACSRRegister}; ++ ++// Define {RegisterName} methods for the register types. ++DEFINE_REGISTER_NAMES(Register, GENERAL_REGISTERS) ++DEFINE_REGISTER_NAMES(FPURegister, DOUBLE_REGISTERS) ++DEFINE_REGISTER_NAMES(SWSARegister, SIMD128_REGISTERS) ++ ++// Give alias names to registers for calling conventions. ++constexpr Register kReturnRegister0 = v0; ++constexpr Register kReturnRegister1 = a5; // v1; ++constexpr Register kReturnRegister2 = a0; ++constexpr Register kJSFunctionRegister = a1; ++constexpr Register kContextRegister = s5; // s7; ++constexpr Register kAllocateSizeRegister = a0; ++constexpr Register kInterpreterAccumulatorRegister = v0; ++constexpr Register kInterpreterBytecodeOffsetRegister = t0; ++constexpr Register kInterpreterBytecodeArrayRegister = t1; ++constexpr Register kInterpreterDispatchTableRegister = t2; ++ ++constexpr Register kJavaScriptCallArgCountRegister = a0; ++constexpr Register kJavaScriptCallCodeStartRegister = a2; ++constexpr Register kJavaScriptCallTargetRegister = kJSFunctionRegister; ++constexpr Register kJavaScriptCallNewTargetRegister = a3; ++constexpr Register kJavaScriptCallExtraArg1Register = a2; ++ ++constexpr Register kRuntimeCallFunctionRegister = a1; ++constexpr Register kRuntimeCallArgCountRegister = a0; ++constexpr Register kRuntimeCallArgvRegister = a2; ++constexpr Register kWasmInstanceRegister = a0; ++constexpr Register kWasmCompileLazyFuncIndexRegister = t0; ++ ++constexpr DoubleRegister kFPReturnRegister0 = f0; ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_SW64_REGISTER_SW64_H_ +diff --git a/deps/v8/src/codegen/sw64/reglist-sw64.h b/deps/v8/src/codegen/sw64/reglist-sw64.h +new file mode 100644 +index 00000000..22340534 +--- /dev/null ++++ b/deps/v8/src/codegen/sw64/reglist-sw64.h +@@ -0,0 +1,47 @@ ++// Copyright 2022 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_CODEGEN_SW64_REGLIST_SW64_H_ ++#define V8_CODEGEN_SW64_REGLIST_SW64_H_ ++ ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/codegen/register-arch.h" ++#include "src/codegen/reglist-base.h" ++ ++namespace v8 { ++namespace internal { ++ ++using RegList = RegListBase; ++using DoubleRegList = RegListBase; ++ASSERT_TRIVIALLY_COPYABLE(RegList); ++ASSERT_TRIVIALLY_COPYABLE(DoubleRegList); ++ ++const RegList kJSCallerSaved = {v0, t0, t1, t2, t3, t4, t5, t6, t7, ++ a0, a1, a2, a3, a4, a5, t8, t9, t10}; ++ ++const int kNumJSCallerSaved = 18; ++ ++// Callee-saved registers preserved when switching from C to JavaScript. ++const RegList kCalleeSaved = {s0, // s0 ++ s1, // s1 ++ s2, // s2 ++ s3, // s3 ++ s4, // s4 (roots in Javascript code) ++ s5, // s5 (cp in Javascript code) ++ fp}; // fp/s6 ++ ++const int kNumCalleeSaved = 7; ++ ++const DoubleRegList kCalleeSavedFPU = {f2, f3, f4, f5, f6, f7, f8, f9}; ++ ++const int kNumCalleeSavedFPU = 8; ++ ++const DoubleRegList kCallerSavedFPU = {f0, f1, f10, f11, f12, f13, f14, f15, ++ f16, f17, f18, f19, f20, f21, f22, f23, ++ f24, f25, f26, f27, f28, f29, f30}; ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_CODEGEN_SW64_REGLIST_SW64_H_ +diff --git a/deps/v8/src/common/globals.h b/deps/v8/src/common/globals.h +index 17057b4c..5ec6e93e 100644 +--- a/deps/v8/src/common/globals.h ++++ b/deps/v8/src/common/globals.h +@@ -49,6 +49,9 @@ namespace internal { + #if (V8_TARGET_ARCH_MIPS64 && !V8_HOST_ARCH_MIPS64) + #define USE_SIMULATOR 1 + #endif ++#if (V8_TARGET_ARCH_SW64 && !V8_HOST_ARCH_SW64) ++#define USE_SIMULATOR 1 ++#endif + #if (V8_TARGET_ARCH_S390 && !V8_HOST_ARCH_S390) + #define USE_SIMULATOR 1 + #endif +diff --git a/deps/v8/src/compiler/backend/instruction-codes.h b/deps/v8/src/compiler/backend/instruction-codes.h +index 87adf068..e26b47ba 100644 +--- a/deps/v8/src/compiler/backend/instruction-codes.h ++++ b/deps/v8/src/compiler/backend/instruction-codes.h +@@ -17,6 +17,8 @@ + #include "src/compiler/backend/mips64/instruction-codes-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/compiler/backend/loong64/instruction-codes-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/compiler/backend/sw64/instruction-codes-sw64.h" + #elif V8_TARGET_ARCH_X64 + #include "src/compiler/backend/x64/instruction-codes-x64.h" + #elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 +diff --git a/deps/v8/src/compiler/backend/instruction-selector.cc b/deps/v8/src/compiler/backend/instruction-selector.cc +index 8118e32f..ec44b80a 100644 +--- a/deps/v8/src/compiler/backend/instruction-selector.cc ++++ b/deps/v8/src/compiler/backend/instruction-selector.cc +@@ -2773,7 +2773,7 @@ void InstructionSelector::VisitWord32AtomicPairCompareExchange(Node* node) { + + #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_ARM64 && !V8_TARGET_ARCH_MIPS64 && \ + !V8_TARGET_ARCH_S390 && !V8_TARGET_ARCH_PPC64 && \ +- !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_LOONG64 ++ !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_LOONG64 && !V8_TARGET_ARCH_SW64 + void InstructionSelector::VisitWord64AtomicLoad(Node* node) { UNIMPLEMENTED(); } + + void InstructionSelector::VisitWord64AtomicStore(Node* node) { +@@ -2814,7 +2814,7 @@ void InstructionSelector::VisitI64x2ReplaceLaneI32Pair(Node* node) { + #if !V8_TARGET_ARCH_X64 && !V8_TARGET_ARCH_S390X && !V8_TARGET_ARCH_PPC64 + #if !V8_TARGET_ARCH_ARM64 + #if !V8_TARGET_ARCH_MIPS64 && !V8_TARGET_ARCH_LOONG64 && \ +- !V8_TARGET_ARCH_RISCV32 && !V8_TARGET_ARCH_RISCV64 ++ !V8_TARGET_ARCH_RISCV32 && !V8_TARGET_ARCH_RISCV64 && !V8_TARGET_ARCH_SW64 + void InstructionSelector::VisitI64x2Splat(Node* node) { UNIMPLEMENTED(); } + void InstructionSelector::VisitI64x2ExtractLane(Node* node) { UNIMPLEMENTED(); } + void InstructionSelector::VisitI64x2ReplaceLane(Node* node) { UNIMPLEMENTED(); } +diff --git a/deps/v8/src/compiler/backend/sw64/code-generator-sw64.cc b/deps/v8/src/compiler/backend/sw64/code-generator-sw64.cc +new file mode 100644 +index 00000000..472c0457 +--- /dev/null ++++ b/deps/v8/src/compiler/backend/sw64/code-generator-sw64.cc +@@ -0,0 +1,3085 @@ ++// Copyright 2014 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/codegen/assembler-inl.h" ++#include "src/codegen/callable.h" ++#include "src/codegen/machine-type.h" ++#include "src/codegen/macro-assembler.h" ++#include "src/codegen/optimized-compilation-info.h" ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/compiler/backend/code-generator-impl.h" ++#include "src/compiler/backend/code-generator.h" ++#include "src/compiler/backend/gap-resolver.h" ++#include "src/compiler/node-matchers.h" ++#include "src/compiler/osr.h" ++#include "src/heap/memory-chunk.h" ++ ++#if V8_ENABLE_WEBASSEMBLY ++#include "src/wasm/wasm-code-manager.h" ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++namespace v8 { ++namespace internal { ++namespace compiler { ++ ++#define __ masm()-> ++ ++// TODO(plind): consider renaming these macros. ++#define TRACE_MSG(msg) \ ++ PrintF("code_gen: \'%s\' in function %s at line %d\n", msg, __FUNCTION__, \ ++ __LINE__) ++ ++#define TRACE_UNIMPL() \ ++ PrintF("UNIMPLEMENTED code_generator_sw64: %s at line %d\n", __FUNCTION__, \ ++ __LINE__) ++ ++// Adds Sw64-specific methods to convert InstructionOperands. ++class Sw64OperandConverter final : public InstructionOperandConverter { ++ public: ++ Sw64OperandConverter(CodeGenerator* gen, Instruction* instr) ++ : InstructionOperandConverter(gen, instr) {} ++ ++ FloatRegister OutputSingleRegister(size_t index = 0) { ++ return ToSingleRegister(instr_->OutputAt(index)); ++ } ++ ++ FloatRegister InputSingleRegister(size_t index) { ++ return ToSingleRegister(instr_->InputAt(index)); ++ } ++ ++ FloatRegister ToSingleRegister(InstructionOperand* op) { ++ // Single (Float) and Double register namespace is same on SW64, ++ // both are typedefs of FPURegister. ++ return ToDoubleRegister(op); ++ } ++ ++ Register InputOrZeroRegister(size_t index) { ++ if (instr_->InputAt(index)->IsImmediate()) { ++ DCHECK_EQ(0, InputInt32(index)); ++ return zero_reg; ++ } ++ return InputRegister(index); ++ } ++ ++ DoubleRegister InputOrZeroDoubleRegister(size_t index) { ++ if (instr_->InputAt(index)->IsImmediate()) return kDoubleRegZero; ++ ++ return InputDoubleRegister(index); ++ } ++ ++ DoubleRegister InputOrZeroSingleRegister(size_t index) { ++ if (instr_->InputAt(index)->IsImmediate()) return kDoubleRegZero; ++ ++ return InputSingleRegister(index); ++ } ++ ++ Operand InputImmediate(size_t index) { ++ Constant constant = ToConstant(instr_->InputAt(index)); ++ switch (constant.type()) { ++ case Constant::kInt32: ++ return Operand(constant.ToInt32()); ++ case Constant::kInt64: ++ return Operand(constant.ToInt64()); ++ case Constant::kFloat32: ++ return Operand::EmbeddedNumber(constant.ToFloat32()); ++ case Constant::kFloat64: ++ return Operand::EmbeddedNumber(constant.ToFloat64().value()); ++ case Constant::kExternalReference: ++ case Constant::kCompressedHeapObject: ++ case Constant::kHeapObject: ++ // TODO(plind): Maybe we should handle ExtRef & HeapObj here? ++ // maybe not done on arm due to const pool ?? ++ break; ++ case Constant::kRpoNumber: ++ UNREACHABLE(); // TODO(titzer): RPO immediates on sw64? ++ } ++ UNREACHABLE(); ++ } ++ ++ Operand InputOperand(size_t index) { ++ InstructionOperand* op = instr_->InputAt(index); ++ if (op->IsRegister()) { ++ return Operand(ToRegister(op)); ++ } ++ return InputImmediate(index); ++ } ++ ++ MemOperand MemoryOperand(size_t* first_index) { ++ const size_t index = *first_index; ++ switch (AddressingModeField::decode(instr_->opcode())) { ++ case kMode_None: ++ break; ++ case kMode_Root: ++ *first_index += 1; ++ return MemOperand(kRootRegister, InputInt32(index)); ++ case kMode_MRI: ++ *first_index += 2; ++ return MemOperand(InputRegister(index + 0), InputInt32(index + 1)); ++ case kMode_MRR: ++ // TODO(plind): r6 address mode, to be implemented ... ++ UNREACHABLE(); ++ } ++ UNREACHABLE(); ++ } ++ ++ MemOperand MemoryOperand(size_t index = 0) { return MemoryOperand(&index); } ++ ++ MemOperand ToMemOperand(InstructionOperand* op) const { ++ DCHECK_NOT_NULL(op); ++ DCHECK(op->IsStackSlot() || op->IsFPStackSlot()); ++ return SlotToMemOperand(AllocatedOperand::cast(op)->index()); ++ } ++ ++ MemOperand SlotToMemOperand(int slot) const { ++ FrameOffset offset = frame_access_state()->GetFrameOffset(slot); ++ return MemOperand(offset.from_stack_pointer() ? sp : fp, offset.offset()); ++ } ++}; ++ ++static inline bool HasRegisterInput(Instruction* instr, size_t index) { ++ return instr->InputAt(index)->IsRegister(); ++} ++ ++namespace { ++ ++class OutOfLineRecordWrite final : public OutOfLineCode { ++ public: ++ OutOfLineRecordWrite(CodeGenerator* gen, Register object, Register index, ++ Register value, Register scratch0, Register scratch1, ++ RecordWriteMode mode, StubCallMode stub_mode) ++ : OutOfLineCode(gen), ++ object_(object), ++ index_(index), ++ value_(value), ++ scratch0_(scratch0), ++ scratch1_(scratch1), ++ mode_(mode), ++#if V8_ENABLE_WEBASSEMBLY ++ stub_mode_(stub_mode), ++#endif // V8_ENABLE_WEBASSEMBLY ++ must_save_lr_(!gen->frame_access_state()->has_frame()), ++ zone_(gen->zone()) { ++ DCHECK(!AreAliased(object, index, scratch0, scratch1)); ++ DCHECK(!AreAliased(value, index, scratch0, scratch1)); ++ } ++ ++ void Generate() final { ++ __ CheckPageFlag(value_, scratch0_, ++ MemoryChunk::kPointersToHereAreInterestingMask, eq, ++ exit()); ++ __ Addl(scratch1_, object_, index_); ++ SaveFPRegsMode const save_fp_mode = frame()->DidAllocateDoubleRegisters() ++ ? SaveFPRegsMode::kSave ++ : SaveFPRegsMode::kIgnore; ++ if (must_save_lr_) { ++ // We need to save and restore ra if the frame was elided. ++ __ Push(ra); ++ } ++ if (mode_ == RecordWriteMode::kValueIsEphemeronKey) { ++ __ CallEphemeronKeyBarrier(object_, scratch1_, save_fp_mode); ++#if V8_ENABLE_WEBASSEMBLY ++ } else if (stub_mode_ == StubCallMode::kCallWasmRuntimeStub) { ++ // A direct call to a wasm runtime stub defined in this module. ++ // Just encode the stub index. This will be patched when the code ++ // is added to the native module and copied into wasm code space. ++ __ CallRecordWriteStubSaveRegisters(object_, scratch1_, save_fp_mode, ++ StubCallMode::kCallWasmRuntimeStub); ++#endif // V8_ENABLE_WEBASSEMBLY ++ } else { ++ __ CallRecordWriteStubSaveRegisters(object_, scratch1_, save_fp_mode); ++ } ++ if (must_save_lr_) { ++ __ Pop(ra); ++ } ++ } ++ ++ private: ++ Register const object_; ++ Register const index_; ++ Register const value_; ++ Register const scratch0_; ++ Register const scratch1_; ++ RecordWriteMode const mode_; ++#if V8_ENABLE_WEBASSEMBLY ++ StubCallMode const stub_mode_; ++#endif // V8_ENABLE_WEBASSEMBLY ++ bool must_save_lr_; ++ Zone* zone_; ++}; ++ ++#define CREATE_OOL_CLASS(ool_name, tasm_ool_name, T) \ ++ class ool_name final : public OutOfLineCode { \ ++ public: \ ++ ool_name(CodeGenerator* gen, T dst, T src1, T src2) \ ++ : OutOfLineCode(gen), dst_(dst), src1_(src1), src2_(src2) {} \ ++ \ ++ void Generate() final { __ tasm_ool_name(dst_, src1_, src2_); } \ ++ \ ++ private: \ ++ T const dst_; \ ++ T const src1_; \ ++ T const src2_; \ ++ } ++ ++CREATE_OOL_CLASS(OutOfLineFloat32Max, Float32MaxOutOfLine, FPURegister); ++CREATE_OOL_CLASS(OutOfLineFloat32Min, Float32MinOutOfLine, FPURegister); ++CREATE_OOL_CLASS(OutOfLineFloat64Max, Float64MaxOutOfLine, FPURegister); ++CREATE_OOL_CLASS(OutOfLineFloat64Min, Float64MinOutOfLine, FPURegister); ++ ++#undef CREATE_OOL_CLASS ++ ++Condition FlagsConditionToConditionCmp(FlagsCondition condition) { ++ switch (condition) { ++ case kEqual: ++ return eq; ++ case kNotEqual: ++ return ne; ++ case kSignedLessThan: ++ return lt; ++ case kSignedGreaterThanOrEqual: ++ return ge; ++ case kSignedLessThanOrEqual: ++ return le; ++ case kSignedGreaterThan: ++ return gt; ++ case kUnsignedLessThan: ++ return lo; ++ case kUnsignedGreaterThanOrEqual: ++ return hs; ++ case kUnsignedLessThanOrEqual: ++ return ls; ++ case kUnsignedGreaterThan: ++ return hi; ++ case kUnorderedEqual: ++ case kUnorderedNotEqual: ++ break; ++ default: ++ break; ++ } ++ UNREACHABLE(); ++} ++ ++Condition FlagsConditionToConditionTst(FlagsCondition condition) { ++ switch (condition) { ++ case kNotEqual: ++ return ne; ++ case kEqual: ++ return eq; ++ default: ++ break; ++ } ++ UNREACHABLE(); ++} ++ ++Condition FlagsConditionToConditionOvf(FlagsCondition condition) { ++ switch (condition) { ++ case kOverflow: ++ return ne; ++ case kNotOverflow: ++ return eq; ++ default: ++ break; ++ } ++ UNREACHABLE(); ++} ++ ++FPUCondition FlagsConditionToConditionCmpFPU(bool* predicate, ++ FlagsCondition condition) { ++ switch (condition) { ++ case kEqual: ++ *predicate = true; ++ return EQ; ++ case kNotEqual: ++ *predicate = false; ++ return EQ; ++ case kUnsignedLessThan: ++ *predicate = true; ++ return OLT; ++ case kUnsignedGreaterThanOrEqual: ++ *predicate = false; ++ return OLT; ++ case kUnsignedLessThanOrEqual: ++ *predicate = true; ++ return OLE; ++ case kUnsignedGreaterThan: ++ *predicate = false; ++ return OLE; ++ case kUnorderedEqual: ++ case kUnorderedNotEqual: ++ *predicate = true; ++ break; ++ default: ++ *predicate = true; ++ break; ++ } ++ UNREACHABLE(); ++} ++ ++} // namespace ++ ++#define ASSEMBLE_ATOMIC_LOAD_INTEGER(asm_instr) \ ++ do { \ ++ __ asm_instr(i.OutputRegister(), i.MemoryOperand()); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_STORE_INTEGER(asm_instr) \ ++ do { \ ++ /*__ memb();*/ \ ++ __ asm_instr(i.InputOrZeroRegister(2), i.MemoryOperand()); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_BINOP(load_linked, store_conditional, bin_instr) \ ++ do { \ ++ Label binop; \ ++ __ Addl(i.TempRegister(0), i.InputRegister(0), i.InputRegister(1)); \ ++ /*__ memb();*/ \ ++ __ bind(&binop); \ ++ __ load_linked(i.OutputRegister(0), 0, i.TempRegister(0)); \ ++ __ ldi(gp, 1, zero_reg); \ ++ __ wr_f(gp); \ ++ __ bin_instr(i.TempRegister(1), i.OutputRegister(0), \ ++ Operand(i.InputRegister(2))); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(1), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(1)); \ ++ __ BranchShort(&binop, eq, i.TempRegister(1), Operand(zero_reg)); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_BINOP_EXT(load_linked, store_conditional, sign_extend, \ ++ size, bin_instr, representation) \ ++ do { \ ++ Label binop; \ ++ __ addl(i.InputRegister(0), i.InputRegister(1), i.TempRegister(0)); \ ++ if (representation == 32) { \ ++ __ and_(i.TempRegister(0), 0x3, i.TempRegister(3)); \ ++ } else { \ ++ DCHECK_EQ(representation, 64); \ ++ __ and_(i.TempRegister(0), 0x7, i.TempRegister(3)); \ ++ } \ ++ __ Subl(i.TempRegister(0), i.TempRegister(0), Operand(i.TempRegister(3))); \ ++ __ slll(i.TempRegister(3), 3, i.TempRegister(3)); \ ++ /*__ memb();*/ \ ++ __ bind(&binop); \ ++ __ load_linked(i.TempRegister(1), 0, i.TempRegister(0)); \ ++ __ ldi(gp, 1, zero_reg); \ ++ __ wr_f(gp); \ ++ __ ExtractBits(i.OutputRegister(0), i.TempRegister(1), i.TempRegister(3), \ ++ size, sign_extend); \ ++ __ bin_instr(i.TempRegister(2), i.OutputRegister(0), \ ++ Operand(i.InputRegister(2))); \ ++ __ InsertBits(i.TempRegister(1), i.TempRegister(2), i.TempRegister(3), \ ++ size); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(1), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(1)); \ ++ __ BranchShort(&binop, eq, i.TempRegister(1), Operand(zero_reg)); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(load_linked, store_conditional) \ ++ do { \ ++ Label exchange; \ ++ /*__ memb();*/ \ ++ __ bind(&exchange); \ ++ __ addl(i.InputRegister(0), i.InputRegister(1), i.TempRegister(0)); \ ++ __ load_linked(i.OutputRegister(0), 0, i.TempRegister(0)); \ ++ __ ldi(gp, 1, zero_reg); \ ++ __ wr_f(gp); \ ++ __ mov(i.TempRegister(1), i.InputRegister(2)); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(1), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(1)); \ ++ __ BranchShort(&exchange, eq, i.TempRegister(1), Operand(zero_reg)); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT( \ ++ load_linked, store_conditional, sign_extend, size, representation) \ ++ do { \ ++ Label exchange; \ ++ __ addl(i.InputRegister(0), i.InputRegister(1), i.TempRegister(0)); \ ++ if (representation == 32) { \ ++ __ and_(i.TempRegister(0), 0x3, i.TempRegister(1)); \ ++ } else { \ ++ DCHECK_EQ(representation, 64); \ ++ __ and_(i.TempRegister(0), 0x7, i.TempRegister(1)); \ ++ } \ ++ __ Subl(i.TempRegister(0), i.TempRegister(0), Operand(i.TempRegister(1))); \ ++ __ Sllw(i.TempRegister(1), i.TempRegister(1), 3); \ ++ /*__ memb();*/ \ ++ __ bind(&exchange); \ ++ __ load_linked(i.TempRegister(2), 0, i.TempRegister(0)); \ ++ __ ldi(gp, 1, zero_reg); \ ++ __ wr_f(gp); \ ++ __ ExtractBits(i.OutputRegister(0), i.TempRegister(2), i.TempRegister(1), \ ++ size, sign_extend); \ ++ __ InsertBits(i.TempRegister(2), i.InputRegister(2), i.TempRegister(1), \ ++ size); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(2), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(2)); \ ++ __ BranchShort(&exchange, eq, i.TempRegister(2), Operand(zero_reg)); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(load_linked, \ ++ store_conditional) \ ++ do { \ ++ Label compareExchange; \ ++ Label exit; \ ++ __ addl(i.InputRegister(0), i.InputRegister(1), i.TempRegister(0)); \ ++ /*__ memb();*/ \ ++ __ bind(&compareExchange); \ ++ __ load_linked(i.OutputRegister(0), 0, i.TempRegister(0)); \ ++ __ cmpeq(i.OutputRegister(0), i.InputRegister(2), i.TempRegister(1)); \ ++ __ wr_f(i.TempRegister(1)); \ ++ __ mov(i.TempRegister(2), i.InputRegister(3)); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(2), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(2)); \ ++ __ beq(i.TempRegister(1), &exit); \ ++ __ beq(i.TempRegister(2), &compareExchange); \ ++ __ bind(&exit); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT( \ ++ load_linked, store_conditional, sign_extend, size, representation) \ ++ do { \ ++ Label compareExchange; \ ++ Label exit; \ ++ __ addl(i.InputRegister(0), i.InputRegister(1), i.TempRegister(0)); \ ++ if (representation == 32) { \ ++ __ and_(i.TempRegister(0), 0x3, i.TempRegister(1)); \ ++ } else { \ ++ DCHECK_EQ(representation, 64); \ ++ __ and_(i.TempRegister(0), 0x7, i.TempRegister(1)); \ ++ } \ ++ __ Subl(i.TempRegister(0), i.TempRegister(0), Operand(i.TempRegister(1))); \ ++ __ slll(i.TempRegister(1), 3, i.TempRegister(1)); \ ++ /*__ memb();*/ \ ++ __ bind(&compareExchange); \ ++ __ load_linked(i.TempRegister(2), 0, i.TempRegister(0)); \ ++ __ mov(i.OutputRegister(0), i.TempRegister(2)); \ ++ __ cmpeq(i.OutputRegister(0), i.InputRegister(2), gp); \ ++ __ ExtractBits(i.OutputRegister(0), i.TempRegister(2), i.TempRegister(1), \ ++ size, sign_extend); \ ++ __ ExtractBits(i.InputRegister(2), i.InputRegister(2), zero_reg, size, \ ++ sign_extend); \ ++ __ wr_f(gp); \ ++ __ InsertBits(i.TempRegister(2), i.InputRegister(3), i.TempRegister(1), \ ++ size); \ ++ __ Align(8); \ ++ __ store_conditional(i.TempRegister(2), 0, i.TempRegister(0)); \ ++ __ rd_f(i.TempRegister(2)); \ ++ __ beq(gp, &exit); \ ++ __ beq(i.TempRegister(2), &compareExchange); \ ++ __ bind(&exit); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_IEEE754_BINOP(name) \ ++ do { \ ++ FrameScope scope(masm(), StackFrame::MANUAL); \ ++ __ PrepareCallCFunction(0, 2, kScratchReg); \ ++ __ MovToFloatParameters(i.InputDoubleRegister(0), \ ++ i.InputDoubleRegister(1)); \ ++ __ CallCFunction(ExternalReference::ieee754_##name##_function(), 0, 2); \ ++ /* Move the result in the double result register. */ \ ++ __ MovFromFloatResult(i.OutputDoubleRegister()); \ ++ } while (0) ++ ++#define ASSEMBLE_IEEE754_UNOP(name) \ ++ do { \ ++ FrameScope scope(masm(), StackFrame::MANUAL); \ ++ __ PrepareCallCFunction(0, 1, kScratchReg); \ ++ __ MovToFloatParameter(i.InputDoubleRegister(0)); \ ++ __ CallCFunction(ExternalReference::ieee754_##name##_function(), 0, 1); \ ++ /* Move the result in the double result register. */ \ ++ __ MovFromFloatResult(i.OutputDoubleRegister()); \ ++ } while (0) ++ ++// SKTODO ++#if 0 ++#define ASSEMBLE_F64X2_ARITHMETIC_BINOP(op) \ ++ do { \ ++ __ op(i.OutputSimd128Register(), i.InputSimd128Register(0), \ ++ i.InputSimd128Register(1)); \ ++ } while (0) ++ ++#endif ++ ++void CodeGenerator::AssembleDeconstructFrame() { ++ __ mov(sp, fp); ++ __ Pop(ra, fp); ++} ++ ++void CodeGenerator::AssemblePrepareTailCall() { ++ if (frame_access_state()->has_frame()) { ++ __ Ldl(ra, MemOperand(fp, StandardFrameConstants::kCallerPCOffset)); ++ __ Ldl(fp, MemOperand(fp, StandardFrameConstants::kCallerFPOffset)); ++ } ++ frame_access_state()->SetFrameAccessToSP(); ++} ++ ++namespace { ++ ++void AdjustStackPointerForTailCall(MacroAssembler* masm, ++ FrameAccessState* state, ++ int new_slot_above_sp, ++ bool allow_shrinkage = true) { ++ int current_sp_offset = state->GetSPToFPSlotCount() + ++ StandardFrameConstants::kFixedSlotCountAboveFp; ++ int stack_slot_delta = new_slot_above_sp - current_sp_offset; ++ if (stack_slot_delta > 0) { ++ masm->Subl(sp, sp, stack_slot_delta * kSystemPointerSize); ++ state->IncreaseSPDelta(stack_slot_delta); ++ } else if (allow_shrinkage && stack_slot_delta < 0) { ++ masm->Addl(sp, sp, -stack_slot_delta * kSystemPointerSize); ++ state->IncreaseSPDelta(stack_slot_delta); ++ } ++} ++ ++} // namespace ++ ++void CodeGenerator::AssembleTailCallBeforeGap(Instruction* instr, ++ int first_unused_slot_offset) { ++ AdjustStackPointerForTailCall(masm(), frame_access_state(), ++ first_unused_slot_offset, false); ++} ++ ++void CodeGenerator::AssembleTailCallAfterGap(Instruction* instr, ++ int first_unused_slot_offset) { ++ AdjustStackPointerForTailCall(masm(), frame_access_state(), ++ first_unused_slot_offset); ++} ++ ++// Check that {kJavaScriptCallCodeStartRegister} is correct. ++void CodeGenerator::AssembleCodeStartRegisterCheck() { ++ __ ComputeCodeStartAddress(kScratchReg); ++ __ Assert(eq, AbortReason::kWrongFunctionCodeStart, ++ kJavaScriptCallCodeStartRegister, Operand(kScratchReg)); ++} ++ ++// Check if the code object is marked for deoptimization. If it is, then it ++// jumps to the CompileLazyDeoptimizedCode builtin. In order to do this we need ++// to: ++// 1. read from memory the word that contains that bit, which can be found in ++// the flags in the referenced {Code} object; ++// 2. test kMarkedForDeoptimizationBit in those flags; and ++// 3. if it is not zero then it jumps to the builtin. ++void CodeGenerator::BailoutIfDeoptimized() { ++ int offset = InstructionStream::kCodeOffset - InstructionStream::kHeaderSize; ++ __ Ldl(kScratchReg, MemOperand(kJavaScriptCallCodeStartRegister, offset)); ++ __ Ldhu(kScratchReg, ++ FieldMemOperand(kScratchReg, Code::kKindSpecificFlagsOffset)); ++ __ And(kScratchReg, kScratchReg, ++ Operand(1 << Code::kMarkedForDeoptimizationBit)); ++ __ Jump(BUILTIN_CODE(isolate(), CompileLazyDeoptimizedCode), ++ RelocInfo::CODE_TARGET, ne, kScratchReg, Operand(zero_reg)); ++} ++ ++// Assembles an instruction after register allocation, producing machine code. ++CodeGenerator::CodeGenResult CodeGenerator::AssembleArchInstruction( ++ Instruction* instr) { ++ Sw64OperandConverter i(this, instr); ++ InstructionCode opcode = instr->opcode(); ++ ArchOpcode arch_opcode = ArchOpcodeField::decode(opcode); ++ switch (arch_opcode) { ++ case kArchCallCodeObject: { ++ if (instr->InputAt(0)->IsImmediate()) { ++ __ Call(i.InputCode(0), RelocInfo::CODE_TARGET); ++ } else { ++ Register reg = i.InputRegister(0); ++ DCHECK_IMPLIES( ++ instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), ++ reg == kJavaScriptCallCodeStartRegister); ++ __ CallCodeObject(reg); ++ } ++ RecordCallPosition(instr); ++ frame_access_state()->ClearSPDelta(); ++ break; ++ } ++ case kArchCallBuiltinPointer: { ++ DCHECK(!instr->InputAt(0)->IsImmediate()); ++ Register builtin_index = i.InputRegister(0); ++ __ CallBuiltinByIndex(builtin_index); ++ RecordCallPosition(instr); ++ frame_access_state()->ClearSPDelta(); ++ break; ++ } ++#if V8_ENABLE_WEBASSEMBLY ++ case kArchCallWasmFunction: { ++ if (instr->InputAt(0)->IsImmediate()) { ++ Constant constant = i.ToConstant(instr->InputAt(0)); ++ Address wasm_code = static_cast
(constant.ToInt64()); ++ __ Call(wasm_code, constant.rmode()); ++ } else { ++ __ addl(i.InputRegister(0), 0, kScratchReg); ++ __ Call(kScratchReg); ++ } ++ RecordCallPosition(instr); ++ frame_access_state()->ClearSPDelta(); ++ break; ++ } ++ case kArchTailCallWasm: { ++ if (instr->InputAt(0)->IsImmediate()) { ++ Constant constant = i.ToConstant(instr->InputAt(0)); ++ Address wasm_code = static_cast
(constant.ToInt64()); ++ __ Jump(wasm_code, constant.rmode()); ++ } else { ++ __ addl(i.InputRegister(0), 0, kScratchReg); ++ __ Jump(kScratchReg); ++ } ++ frame_access_state()->ClearSPDelta(); ++ frame_access_state()->SetFrameAccessToDefault(); ++ break; ++ } ++#endif // V8_ENABLE_WEBASSEMBLY ++ case kArchTailCallCodeObject: { ++ if (instr->InputAt(0)->IsImmediate()) { ++ __ Jump(i.InputCode(0), RelocInfo::CODE_TARGET); ++ } else { ++ Register reg = i.InputRegister(0); ++ DCHECK_IMPLIES( ++ instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), ++ reg == kJavaScriptCallCodeStartRegister); ++ __ JumpCodeObject(reg); ++ } ++ frame_access_state()->ClearSPDelta(); ++ frame_access_state()->SetFrameAccessToDefault(); ++ break; ++ } ++ case kArchTailCallAddress: { ++ CHECK(!instr->InputAt(0)->IsImmediate()); ++ Register reg = i.InputRegister(0); ++ DCHECK_IMPLIES( ++ instr->HasCallDescriptorFlag(CallDescriptor::kFixedTargetRegister), ++ reg == kJavaScriptCallCodeStartRegister); ++ __ Jump(reg); ++ frame_access_state()->ClearSPDelta(); ++ frame_access_state()->SetFrameAccessToDefault(); ++ break; ++ } ++ case kArchCallJSFunction: { ++ Register func = i.InputRegister(0); ++ if (v8_flags.debug_code) { ++ // Check the function's context matches the context argument. ++ __ Ldl(kScratchReg, FieldMemOperand(func, JSFunction::kContextOffset)); ++ __ Assert(eq, AbortReason::kWrongFunctionContext, cp, ++ Operand(kScratchReg)); ++ } ++ static_assert(kJavaScriptCallCodeStartRegister == a2, "ABI mismatch"); ++ __ Ldl(a2, FieldMemOperand(func, JSFunction::kCodeOffset)); ++ __ CallCodeObject(a2); ++ RecordCallPosition(instr); ++ frame_access_state()->ClearSPDelta(); ++ break; ++ } ++ case kArchPrepareCallCFunction: { ++ int const num_parameters = MiscField::decode(instr->opcode()); ++ __ PrepareCallCFunction(num_parameters, kScratchReg); ++ // Frame alignment requires using FP-relative frame addressing. ++ frame_access_state()->SetFrameAccessToFP(); ++ break; ++ } ++ case kArchSaveCallerRegisters: { ++ fp_mode_ = ++ static_cast(MiscField::decode(instr->opcode())); ++ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore || ++ fp_mode_ == SaveFPRegsMode::kSave); ++ // kReturnRegister0 should have been saved before entering the stub. ++ int bytes = __ PushCallerSaved(fp_mode_, kReturnRegister0); ++ DCHECK(IsAligned(bytes, kSystemPointerSize)); ++ DCHECK_EQ(0, frame_access_state()->sp_delta()); ++ frame_access_state()->IncreaseSPDelta(bytes / kSystemPointerSize); ++ DCHECK(!caller_registers_saved_); ++ caller_registers_saved_ = true; ++ break; ++ } ++ case kArchRestoreCallerRegisters: { ++ DCHECK(fp_mode_ == ++ static_cast(MiscField::decode(instr->opcode()))); ++ DCHECK(fp_mode_ == SaveFPRegsMode::kIgnore || ++ fp_mode_ == SaveFPRegsMode::kSave); ++ // Don't overwrite the returned value. ++ int bytes = __ PopCallerSaved(fp_mode_, kReturnRegister0); ++ frame_access_state()->IncreaseSPDelta(-(bytes / kSystemPointerSize)); ++ DCHECK_EQ(0, frame_access_state()->sp_delta()); ++ DCHECK(caller_registers_saved_); ++ caller_registers_saved_ = false; ++ break; ++ } ++ case kArchPrepareTailCall: ++ AssemblePrepareTailCall(); ++ break; ++ case kArchCallCFunction: { ++ int const num_gp_parameters = ParamField::decode(instr->opcode()); ++ int const num_fp_parameters = FPParamField::decode(instr->opcode()); ++#if V8_ENABLE_WEBASSEMBLY ++ Label start_call; ++ bool isWasmCapiFunction = ++ linkage()->GetIncomingDescriptor()->IsWasmCapiFunction(); ++ // from start_call to return address. ++ int offset = __ root_array_available() ? 64 : 112; ++#endif // V8_ENABLE_WEBASSEMBLY ++#if V8_HOST_ARCH_SW64 ++ if (v8_flags.debug_code) { ++ offset += 16; ++ } ++#endif ++#if V8_ENABLE_WEBASSEMBLY ++ if (isWasmCapiFunction) { ++ // Put the return address in a stack slot. ++ __ mov(kScratchReg, ra); ++ __ bind(&start_call); ++ __ br(ra, 0); // __ nal(); // __ nop(); ++ __ Addl(ra, ra, offset - 4); // 4 = br(ra, 0); ++ __ stl(ra, MemOperand(fp, WasmExitFrameConstants::kCallingPCOffset)); ++ __ mov(ra, kScratchReg); ++ } ++#endif // V8_ENABLE_WEBASSEMBLY ++ if (instr->InputAt(0)->IsImmediate()) { ++ ExternalReference ref = i.InputExternalReference(0); ++ __ CallCFunction(ref, num_gp_parameters, num_fp_parameters); ++ } else { ++ Register func = i.InputRegister(0); ++ __ CallCFunction(func, num_gp_parameters, num_fp_parameters); ++ } ++#if V8_ENABLE_WEBASSEMBLY ++ if (isWasmCapiFunction) { ++ CHECK_EQ(offset, __ SizeOfCodeGeneratedSince(&start_call)); ++ RecordSafepoint(instr->reference_map()); ++ } ++#endif // V8_ENABLE_WEBASSEMBLY ++ frame_access_state()->SetFrameAccessToDefault(); ++ // Ideally, we should decrement SP delta to match the change of stack ++ // pointer in CallCFunction. However, for certain architectures (e.g. ++ // ARM), there may be more strict alignment requirement, causing old SP ++ // to be saved on the stack. In those cases, we can not calculate the SP ++ // delta statically. ++ frame_access_state()->ClearSPDelta(); ++ if (caller_registers_saved_) { ++ // Need to re-memb SP delta introduced in kArchSaveCallerRegisters. ++ // Here, we assume the sequence to be: ++ // kArchSaveCallerRegisters; ++ // kArchCallCFunction; ++ // kArchRestoreCallerRegisters; ++ int bytes = ++ __ RequiredStackSizeForCallerSaved(fp_mode_, kReturnRegister0); ++ frame_access_state()->IncreaseSPDelta(bytes / kSystemPointerSize); ++ } ++ break; ++ } ++ case kArchJmp: ++ AssembleArchJump(i.InputRpo(0)); ++ break; ++ case kArchBinarySearchSwitch: ++ AssembleArchBinarySearchSwitch(instr); ++ break; ++ case kArchTableSwitch: ++ AssembleArchTableSwitch(instr); ++ break; ++ case kArchAbortCSADcheck: ++ DCHECK(i.InputRegister(0) == a0); ++ { ++ // We don't actually want to generate a pile of code for this, so just ++ // claim there is a stack frame, without generating one. ++ FrameScope scope(masm(), StackFrame::NO_FRAME_TYPE); ++ __ Call(isolate()->builtins()->code_handle(Builtin::kAbortCSADcheck), ++ RelocInfo::CODE_TARGET); ++ } ++ __ halt(); // stop("kArchDebugAbort"); ++ break; ++ case kArchDebugBreak: ++ __ halt(); // stop("kArchDebugBreak"); ++ break; ++ case kArchComment: ++ __ RecordComment(reinterpret_cast(i.InputInt64(0))); ++ break; ++ case kArchNop: ++ case kArchThrowTerminator: ++ // don't emit code for nops. ++ break; ++ case kArchDeoptimize: { ++ DeoptimizationExit* exit = ++ BuildTranslation(instr, -1, 0, 0, OutputFrameStateCombine::Ignore()); ++ __ Branch(exit->label()); ++ break; ++ } ++ case kArchRet: ++ AssembleReturn(instr->InputAt(0)); ++ break; ++ case kArchStackPointerGreaterThan: { ++ Register lhs_register = sp; ++ uint32_t offset; ++ if (ShouldApplyOffsetToStackCheck(instr, &offset)) { ++ lhs_register = i.TempRegister(1); ++ __ Subl(lhs_register, sp, offset); ++ } ++ __ Cmpult(i.TempRegister(0), i.InputRegister(0), lhs_register); ++ break; ++ } ++ case kArchStackCheckOffset: ++ __ Move(i.OutputRegister(), Smi::FromInt(GetStackCheckOffset())); ++ break; ++ case kArchFramePointer: ++ __ mov(i.OutputRegister(), fp); ++ break; ++ case kArchParentFramePointer: ++ if (frame_access_state()->has_frame()) { ++ __ Ldl(i.OutputRegister(), MemOperand(fp, 0)); ++ } else { ++ __ mov(i.OutputRegister(), fp); ++ } ++ break; ++ case kArchTruncateDoubleToI: ++ __ TruncateDoubleToI(isolate(), zone(), i.OutputRegister(), ++ i.InputDoubleRegister(0), DetermineStubCallMode()); ++ break; ++ case kArchStoreWithWriteBarrier: // Fall through. ++ case kArchAtomicStoreWithWriteBarrier: { ++ RecordWriteMode mode = RecordWriteModeField::decode(instr->opcode()); ++ Register object = i.InputRegister(0); ++ Register index = i.InputRegister(1); ++ Register value = i.InputRegister(2); ++ Register scratch0 = i.TempRegister(0); ++ Register scratch1 = i.TempRegister(1); ++ auto ool = zone()->New(this, object, index, value, ++ scratch0, scratch1, mode, ++ DetermineStubCallMode()); ++ __ Addl(kScratchReg, object, index); ++ // SKTODO sync ++ if (arch_opcode == kArchStoreWithWriteBarrier) { ++ __ Stl(value, MemOperand(kScratchReg)); ++ } else { ++ DCHECK_EQ(kArchAtomicStoreWithWriteBarrier, arch_opcode); ++ __ memb(); ++ __ Stl(value, MemOperand(kScratchReg)); ++ __ memb(); ++ } ++ if (mode > RecordWriteMode::kValueIsPointer) { ++ __ JumpIfSmi(value, ool->exit()); ++ } ++ __ CheckPageFlag(object, scratch0, ++ MemoryChunk::kPointersFromHereAreInterestingMask, ne, ++ ool->entry()); ++ __ bind(ool->exit()); ++ break; ++ } ++ case kArchStackSlot: { ++ FrameOffset offset = ++ frame_access_state()->GetFrameOffset(i.InputInt32(0)); ++ Register base_reg = offset.from_stack_pointer() ? sp : fp; ++ __ Addl(i.OutputRegister(), base_reg, Operand(offset.offset())); ++ if (v8_flags.debug_code) { ++ // Verify that the output_register is properly aligned ++ __ And(kScratchReg, i.OutputRegister(), ++ Operand(kSystemPointerSize - 1)); ++ __ Assert(eq, AbortReason::kAllocationIsNotDoubleAligned, kScratchReg, ++ Operand(zero_reg)); ++ } ++ break; ++ } ++ case kIeee754Float64Acos: ++ ASSEMBLE_IEEE754_UNOP(acos); ++ break; ++ case kIeee754Float64Acosh: ++ ASSEMBLE_IEEE754_UNOP(acosh); ++ break; ++ case kIeee754Float64Asin: ++ ASSEMBLE_IEEE754_UNOP(asin); ++ break; ++ case kIeee754Float64Asinh: ++ ASSEMBLE_IEEE754_UNOP(asinh); ++ break; ++ case kIeee754Float64Atan: ++ ASSEMBLE_IEEE754_UNOP(atan); ++ break; ++ case kIeee754Float64Atanh: ++ ASSEMBLE_IEEE754_UNOP(atanh); ++ break; ++ case kIeee754Float64Atan2: ++ ASSEMBLE_IEEE754_BINOP(atan2); ++ break; ++ case kIeee754Float64Cos: ++ ASSEMBLE_IEEE754_UNOP(cos); ++ break; ++ case kIeee754Float64Cosh: ++ ASSEMBLE_IEEE754_UNOP(cosh); ++ break; ++ case kIeee754Float64Cbrt: ++ ASSEMBLE_IEEE754_UNOP(cbrt); ++ break; ++ case kIeee754Float64Exp: ++ ASSEMBLE_IEEE754_UNOP(exp); ++ break; ++ case kIeee754Float64Expm1: ++ ASSEMBLE_IEEE754_UNOP(expm1); ++ break; ++ case kIeee754Float64Log: ++ ASSEMBLE_IEEE754_UNOP(log); ++ break; ++ case kIeee754Float64Log1p: ++ ASSEMBLE_IEEE754_UNOP(log1p); ++ break; ++ case kIeee754Float64Log2: ++ ASSEMBLE_IEEE754_UNOP(log2); ++ break; ++ case kIeee754Float64Log10: ++ ASSEMBLE_IEEE754_UNOP(log10); ++ break; ++ case kIeee754Float64Pow: ++ ASSEMBLE_IEEE754_BINOP(pow); ++ break; ++ case kIeee754Float64Sin: ++ ASSEMBLE_IEEE754_UNOP(sin); ++ break; ++ case kIeee754Float64Sinh: ++ ASSEMBLE_IEEE754_UNOP(sinh); ++ break; ++ case kIeee754Float64Tan: ++ ASSEMBLE_IEEE754_UNOP(tan); ++ break; ++ case kIeee754Float64Tanh: ++ ASSEMBLE_IEEE754_UNOP(tanh); ++ break; ++ case kSw64Addw: ++ __ Addw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Addl: ++ __ Addl(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64AddlOvf: ++ __ DaddOverflow(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1), ++ kScratchReg); ++ break; ++ case kSw64Subw: ++ __ Subw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Subl: ++ __ Subl(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64SublOvf: ++ __ SublOverflow(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1), ++ kScratchReg); ++ break; ++ case kSw64Mulw: ++ __ Mulw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64MulwOvf: ++ __ MulwOverflow(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1), ++ kScratchReg); ++ break; ++ case kSw64MullOvf: ++ __ MullOverflow(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1), ++ kScratchReg); ++ break; ++ case kSw64MulwHigh: ++ __ Mulwh(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64MulwHighU: ++ __ Mulwhu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64MullHigh: ++ __ Mullh(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64MullHighU: ++ __ Mullhu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Divw: { ++ __ Divw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ seleq(i.InputRegister(1), i.InputRegister(1), i.InputRegister(0), ++ i.OutputRegister()); ++ break; ++ } ++ case kSw64Divwu: { ++ __ Divwu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ // __ addw(i.OutputRegister(), 0, i.OutputRegister()); ++ __ seleq(i.InputRegister(1), i.InputRegister(1), i.InputRegister(0), ++ i.OutputRegister()); ++ break; ++ } ++ case kSw64Modw: { ++ __ Modw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ } ++ case kSw64Modwu: { ++ __ Modwu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ } ++ case kSw64Mull: ++ __ Mull(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Divl: { ++ Label ldiv, exit; ++ __ slll(i.InputRegister(0), 0xb, at); ++ __ sral(at, 0xb, at); ++ __ cmpeq(i.InputRegister(0), at, at); ++ __ beq(at, &ldiv); ++ __ Divl(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ seleq(i.InputRegister(1), i.InputRegister(1), i.InputRegister(0), ++ i.OutputRegister()); ++ __ beq(zero_reg, &exit); ++ ++ __ bind(&ldiv); ++ RegList saved_regs = (kJSCallerSaved | ra); ++ saved_regs.clear(i.OutputRegister()); ++ __ MultiPush(saved_regs); ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(2, 0, kScratchReg); ++ __ MovToGeneralParameters(i.InputRegister(0), i.InputRegister(1)); ++ __ CallCFunction(ExternalReference::math_sw_ddiv_function(), 2, 0); ++ __ MovFromGeneralResult(i.OutputRegister()); ++ __ MultiPop(saved_regs); ++ ++ __ bind(&exit); ++ break; ++ } ++ case kSw64Divlu: { ++ Label ldivu, exit; ++ __ blt(i.InputRegister(0), &ldivu); ++ __ blt(i.InputRegister(1), &ldivu); ++ __ srll(i.InputRegister(0), 0x35, at); ++ __ bne(at, &ldivu); ++ __ Divlu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ seleq(i.InputRegister(1), i.InputRegister(1), i.InputRegister(0), ++ i.OutputRegister()); ++ __ beq(zero_reg, &exit); ++ ++ __ bind(&ldivu); ++ RegList saved_regs = (kJSCallerSaved | ra); ++ saved_regs.clear(i.OutputRegister()); ++ __ MultiPush(saved_regs); ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(2, 0, kScratchReg); ++ __ MovToGeneralParameters(i.InputRegister(0), i.InputRegister(1)); ++ __ CallCFunction(ExternalReference::math_sw_ddivu_function(), 2, 0); ++ __ MovFromGeneralResult(i.OutputRegister()); ++ __ MultiPop(saved_regs); ++ ++ __ bind(&exit); ++ break; ++ } ++ case kSw64Modl: { ++ Label modl, exit; ++ __ slll(i.InputRegister(0), 0xb, at); ++ __ sral(at, 0xb, at); ++ __ cmpeq(i.InputRegister(0), at, at); ++ __ beq(at, &modl); ++ __ Modl(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ beq(zero_reg, &exit); ++ ++ __ bind(&modl); ++ RegList saved_regs = (kJSCallerSaved | ra); ++ saved_regs.clear(i.OutputRegister()); ++ __ MultiPush(saved_regs); ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(2, 0, kScratchReg); ++ __ MovToGeneralParameters(i.InputRegister(0), i.InputRegister(1)); ++ __ CallCFunction(ExternalReference::math_sw_dmod_function(), 2, 0); ++ __ MovFromGeneralResult(i.OutputRegister()); ++ __ MultiPop(saved_regs); ++ ++ __ bind(&exit); ++ break; ++ } ++ case kSw64Modlu: { ++ Label modlu, exit; ++ __ blt(i.InputRegister(0), &modlu); ++ __ blt(i.InputRegister(1), &modlu); ++ __ srll(i.InputRegister(0), 0x35, at); ++ __ bne(at, &modlu); ++ __ Modlu(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ beq(zero_reg, &exit); ++ ++ __ bind(&modlu); ++ RegList saved_regs = (kJSCallerSaved | ra); ++ saved_regs.clear(i.OutputRegister()); ++ __ MultiPush(saved_regs); ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(2, 0, kScratchReg); ++ __ MovToGeneralParameters(i.InputRegister(0), i.InputRegister(1)); ++ __ CallCFunction(ExternalReference::math_sw_dmodu_function(), 2, 0); ++ __ MovFromGeneralResult(i.OutputRegister()); ++ __ MultiPop(saved_regs); ++ __ beq(zero_reg, &exit); ++ ++ __ bind(&exit); ++ break; ++ } ++ case kSw64Lsal: ++ DCHECK(instr->InputAt(2)->IsImmediate()); ++ __ Lsal(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1), ++ i.InputInt8(2)); ++ break; ++ case kSw64Lsaw: ++ DCHECK(instr->InputAt(2)->IsImmediate()); ++ __ Lsaw(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1), ++ i.InputInt8(2)); ++ break; ++ case kSw64Andl: ++ case kSw64Andw: ++ __ And(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Orl: ++ case kSw64Orw: ++ __ Or(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Norl: ++ case kSw64Norw: ++ __ Nor(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Xorl: ++ __ Xor(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Xorw: ++ __ Xor(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ __ addw(i.OutputRegister(), 0x0, i.OutputRegister()); ++ break; ++ case kSw64Ctlzw: ++ __ Ctlzw(i.OutputRegister(), i.InputRegister(0)); ++ break; ++ case kSw64Ctlzl: ++ __ ctlz(i.InputRegister(0), i.OutputRegister()); ++ break; ++ case kSw64Cttzw: { ++ __ Cttzw(i.OutputRegister(), i.InputRegister(0)); ++ } break; ++ case kSw64Cttzl: { ++ __ Cttzl(i.OutputRegister(), i.InputRegister(0)); ++ } break; ++ case kSw64Ctpopw: { ++ __ Ctpopw(i.OutputRegister(), i.InputRegister(0)); ++ } break; ++ case kSw64Ctpopl: { ++ __ Ctpopl(i.OutputRegister(), i.InputRegister(0)); ++ } break; ++ case kSw64Sllw: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ Sllw(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1)); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ if (imm == 0) { ++ __ addw(i.InputRegister(0), 0, i.OutputRegister()); ++ } else { ++ __ Sllw(i.OutputRegister(), i.InputRegister(0), ++ static_cast(imm)); ++ } ++ } ++ break; ++ case kSw64Srlw: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ Srlw(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1)); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ __ Srlw(i.OutputRegister(), i.InputRegister(0), ++ static_cast(imm)); ++ } ++ break; ++ case kSw64Sraw: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ Sraw(i.OutputRegister(), i.InputRegister(0), i.InputRegister(1)); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ __ Sraw(i.OutputRegister(), i.InputRegister(0), ++ static_cast(imm)); ++ } ++ break; ++ case kSw64Extw: ++ __ Extw(i.OutputRegister(), i.InputRegister(0), i.InputInt8(1), ++ i.InputInt8(2)); ++ break; ++ case kSw64InsZerow: ++ if (instr->InputAt(1)->IsImmediate() && i.InputInt8(1) == 0) { ++ // __ Insw(i.OutputRegister(), zero_reg, i.InputInt8(1), ++ // i.InputInt8(2)); ++ if (i.InputInt8(2) == 8) { ++ __ zap(i.OutputRegister(), 0x1, i.OutputRegister()); ++ __ addw(i.OutputRegister(), 0, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 16) { ++ __ zap(i.OutputRegister(), 0x3, i.OutputRegister()); ++ __ addw(i.OutputRegister(), 0, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 24) { ++ __ zap(i.OutputRegister(), 0x7, i.OutputRegister()); ++ __ addw(i.OutputRegister(), 0, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 32) { ++ __ bis(i.OutputRegister(), zero_reg, i.OutputRegister()); ++ } else { ++ long bitsize = (0x1L << i.InputInt8(2)) - 1; ++ if (is_uint8(bitsize)) { ++ __ bic(i.OutputRegister(), bitsize, i.OutputRegister()); ++ } else { ++ __ li(t11, bitsize); ++ __ bic(i.OutputRegister(), t11, i.OutputRegister()); ++ } ++ __ addw(i.OutputRegister(), 0, i.OutputRegister()); ++ } ++ } else { ++ __ Insw(i.OutputRegister(), i.InputRegister(0), i.InputInt8(1), ++ i.InputInt8(2)); ++ } ++ break; ++ case kSw64Extl: { ++ __ Extl(i.OutputRegister(), i.InputRegister(0), i.InputInt8(1), ++ i.InputInt8(2)); ++ break; ++ } ++ case kSw64InsZerod: ++ if (instr->InputAt(1)->IsImmediate() && i.InputInt8(1) == 0) { ++ // __ Insd(i.OutputRegister(), zero_reg, i.InputInt8(1), ++ // i.InputInt8(2)); ++ if (i.InputInt8(2) == 8) { ++ __ zap(i.OutputRegister(), 0x1, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 16) { ++ __ zap(i.OutputRegister(), 0x3, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 24) { ++ __ zap(i.OutputRegister(), 0x7, i.OutputRegister()); ++ } else if (i.InputInt8(2) == 32) { ++ __ zap(i.OutputRegister(), 0xf, i.OutputRegister()); ++ } else { ++ long bitsize = (0x1L << i.InputInt8(2)) - 1; ++ if (is_uint8(bitsize)) { ++ __ bic(i.OutputRegister(), bitsize, i.OutputRegister()); ++ } else { ++ __ li(t11, bitsize); ++ __ bic(i.OutputRegister(), t11, i.OutputRegister()); ++ } ++ } ++ } else { ++ __ Insd(i.OutputRegister(), i.InputRegister(0), i.InputInt8(1), ++ i.InputInt8(2)); ++ } ++ break; ++ case kSw64Slll: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ slll(i.InputRegister(0), i.InputRegister(1), i.OutputRegister()); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ __ slll(i.InputRegister(0), static_cast(imm), ++ i.OutputRegister()); ++ } ++ break; ++ case kSw64Srll: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ srll(i.InputRegister(0), i.InputRegister(1), i.OutputRegister()); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ __ srll(i.InputRegister(0), static_cast(imm), ++ i.OutputRegister()); ++ } ++ break; ++ case kSw64Sral: ++ if (instr->InputAt(1)->IsRegister()) { ++ __ sral(i.InputRegister(0), i.InputRegister(1), i.OutputRegister()); ++ } else { ++ int64_t imm = i.InputOperand(1).immediate(); ++ __ sral(i.InputRegister(0), imm, i.OutputRegister()); ++ } ++ break; ++ case kSw64Rolw: ++ __ Rolw(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Roll: ++ __ Roll(i.OutputRegister(), i.InputRegister(0), i.InputOperand(1)); ++ break; ++ case kSw64Tst: ++ __ And(kScratchReg, i.InputRegister(0), i.InputOperand(1)); ++ // Pseudo-instruction used for cmp/branch. No opcode emitted here. ++ break; ++ case kSw64Cmp: ++ // Pseudo-instruction used for cmp/branch. No opcode emitted here. ++ break; ++ case kSw64Mov: ++ // TODO(plind): Should we combine mov/li like this, or use separate instr? ++ // - Also see x64 ASSEMBLE_BINOP & RegisterOrOperandType ++ if (HasRegisterInput(instr, 0)) { ++ __ mov(i.OutputRegister(), i.InputRegister(0)); ++ } else { ++ __ li(i.OutputRegister(), i.InputOperand(0)); ++ } ++ break; ++ ++ case kSw64Fcmps: { ++ FPURegister left = i.InputOrZeroSingleRegister(0); ++ FPURegister right = i.InputOrZeroSingleRegister(1); ++ bool predicate; ++ FPUCondition cc = ++ FlagsConditionToConditionCmpFPU(&predicate, instr->flags_condition()); ++ __ CompareF(cc, left, right); ++ } break; ++ case kSw64Fadds: ++ // TODO(plind): add special case: combine mult & add. ++ __ fadds(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fsubs: ++ __ fsubs(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fmuls: ++ // TODO(plind): add special case: right op is -1.0, see arm port. ++ __ fmuls(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fdivs: ++ __ fdivs(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Frecs: ++ __ frecs(i.InputDoubleRegister(0), i.OutputDoubleRegister()); ++ break; ++ case kSw64Frecd: ++ __ frecd(i.InputDoubleRegister(0), i.OutputDoubleRegister()); ++ break; ++ case kSw64Fmods: { ++ // TODO(bmeurer): We should really get rid of this special instruction, ++ // and generate a CallAddress instruction instead. ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(0, 2, kScratchReg); ++ __ MovToFloatParameters(i.InputDoubleRegister(0), ++ i.InputDoubleRegister(1)); ++ // TODO(balazs.kilvady): implement mod_two_floats_operation(isolate()) ++ __ CallCFunction(ExternalReference::mod_two_doubles_operation(), 0, 2); ++ // Move the result in the double result register. ++ __ MovFromFloatResult(i.OutputSingleRegister()); ++ break; ++ } ++ case kSw64Fabss: ++ case kSw64Fabsd: ++ __ Fabs(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ case kSw64Fnegs: ++ case kSw64Fnegd: ++ __ Fneg(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ case kSw64Fsqrts: { ++ __ fsqrts(i.InputDoubleRegister(0), i.OutputDoubleRegister()); ++ break; ++ } ++ ++ case kSw64Fcmpd: { ++ FPURegister left = i.InputOrZeroDoubleRegister(0); ++ FPURegister right = i.InputOrZeroDoubleRegister(1); ++ bool predicate; ++ FPUCondition cc = ++ FlagsConditionToConditionCmpFPU(&predicate, instr->flags_condition()); ++ __ CompareF(cc, left, right); ++ } break; ++ case kSw64Faddd: ++ // TODO(plind): add special case: combine mult & add. ++ __ faddd(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fsubd: ++ __ fsubd(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fmuld: ++ // TODO(plind): add special case: right op is -1.0, see arm port. ++ __ fmuld(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fdivd: ++ __ fdivd(i.InputDoubleRegister(0), i.InputDoubleRegister(1), ++ i.OutputDoubleRegister()); ++ break; ++ case kSw64Fmodd: { ++ // TODO(bmeurer): We should really get rid of this special instruction, ++ // and generate a CallAddress instruction instead. ++ FrameScope scope(masm(), StackFrame::MANUAL); ++ __ PrepareCallCFunction(0, 2, kScratchReg); ++ __ MovToFloatParameters(i.InputDoubleRegister(0), ++ i.InputDoubleRegister(1)); ++ __ CallCFunction(ExternalReference::mod_two_doubles_operation(), 0, 2); ++ // Move the result in the double result register. ++ __ MovFromFloatResult(i.OutputDoubleRegister()); ++ break; ++ } ++ case kSw64Fsqrtd: { ++ __ fsqrtd(i.InputDoubleRegister(0), i.OutputDoubleRegister()); ++ break; ++ } ++ ++ case kSw64Float64RoundDown: { ++ __ Floord(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ } ++ case kSw64Float32RoundDown: { ++ __ Floors(i.OutputSingleRegister(), i.InputSingleRegister(0)); ++ break; ++ } ++ case kSw64Float64RoundTruncate: { ++ __ Truncd(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ } ++ case kSw64Float32RoundTruncate: { ++ __ Truncs(i.OutputSingleRegister(), i.InputSingleRegister(0)); ++ break; ++ } ++ case kSw64Float64RoundUp: { ++ __ Ceild(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ } ++ case kSw64Float32RoundUp: { ++ __ Ceils(i.OutputSingleRegister(), i.InputSingleRegister(0)); ++ break; ++ } ++ case kSw64Float64RoundTiesEven: { ++ __ Roundd(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ } ++ case kSw64Float32RoundTiesEven: { ++ __ Rounds(i.OutputSingleRegister(), i.InputSingleRegister(0)); ++ break; ++ } ++ case kSw64Float32Max: { ++ FPURegister dst = i.OutputSingleRegister(); ++ FPURegister src1 = i.InputSingleRegister(0); ++ FPURegister src2 = i.InputSingleRegister(1); ++ auto ool = zone()->New(this, dst, src1, src2); ++ __ Float32Max(dst, src1, src2, ool->entry()); ++ __ bind(ool->exit()); ++ break; ++ } ++ case kSw64Float64Max: { ++ FPURegister dst = i.OutputDoubleRegister(); ++ FPURegister src1 = i.InputDoubleRegister(0); ++ FPURegister src2 = i.InputDoubleRegister(1); ++ auto ool = zone()->New(this, dst, src1, src2); ++ __ Float64Max(dst, src1, src2, ool->entry()); ++ __ bind(ool->exit()); ++ break; ++ } ++ case kSw64Float32Min: { ++ FPURegister dst = i.OutputSingleRegister(); ++ FPURegister src1 = i.InputSingleRegister(0); ++ FPURegister src2 = i.InputSingleRegister(1); ++ auto ool = zone()->New(this, dst, src1, src2); ++ __ Float32Min(dst, src1, src2, ool->entry()); ++ __ bind(ool->exit()); ++ break; ++ } ++ case kSw64Float64Min: { ++ FPURegister dst = i.OutputDoubleRegister(); ++ FPURegister src1 = i.InputDoubleRegister(0); ++ FPURegister src2 = i.InputDoubleRegister(1); ++ auto ool = zone()->New(this, dst, src1, src2); ++ __ Float64Min(dst, src1, src2, ool->entry()); ++ __ bind(ool->exit()); ++ break; ++ } ++ case kSw64Float64SilenceNaN: ++ __ FPUCanonicalizeNaN(i.OutputDoubleRegister(), i.InputDoubleRegister(0)); ++ break; ++ case kSw64F64ToF32: ++ __ fcvtds(i.InputDoubleRegister(0), i.OutputSingleRegister()); ++ break; ++ case kSw64F32ToF64: ++ __ fcvtsd(i.InputSingleRegister(0), i.OutputDoubleRegister()); ++ break; ++ case kSw64I32ToF32: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ifmovs(i.InputRegister(0), scratch); ++ __ fcvtws(scratch, i.OutputDoubleRegister()); ++ break; ++ } ++ case kSw64UI32ToF32: { ++ __ Cvt_s_uw(i.OutputDoubleRegister(), i.InputRegister(0)); ++ break; ++ } ++ case kSw64I64ToF32: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ifmovd(i.InputRegister(0), scratch); ++ __ fcvtls(scratch, i.OutputDoubleRegister()); ++ break; ++ } ++ case kSw64UI64ToF32: { ++ __ Cvt_s_ul(i.OutputDoubleRegister(), i.InputRegister(0)); ++ break; ++ } ++ case kSw64I32ToF64: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ifmovs(i.InputRegister(0), scratch); ++ __ fcvtwd(scratch, i.OutputDoubleRegister()); ++ break; ++ } ++ case kSw64UI32ToF64: { ++ __ Cvt_d_uw(i.OutputDoubleRegister(), i.InputRegister(0)); ++ break; ++ } ++ case kSw64I64ToF64: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ifmovd(i.InputRegister(0), scratch); ++ __ fcvtld(scratch, i.OutputDoubleRegister()); ++ break; ++ } ++ case kSw64UI64ToF64: { ++ __ Cvt_d_ul(i.OutputDoubleRegister(), i.InputRegister(0)); ++ break; ++ } ++ case kSw64F64ToI32_n: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ffloordw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F64ToI32_p: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ fceildw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F64ToI32_g: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ frounddw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F64ToI32: { ++ FPURegister scratch = kScratchDoubleReg; ++ // Other arches use round to zero here, so we follow. ++ __ ftruncdw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ if (instr->OutputCount() > 1) { ++ // Check for inputs below INT32_MIN and NaN. ++ __ li(i.OutputRegister(1), 1); ++ __ Move(i.TempDoubleRegister(0), static_cast(INT32_MIN)); ++ __ CompareF(LE, i.TempDoubleRegister(0), i.InputDoubleRegister(0)); ++ __ LoadZeroIfNotFPUCondition(i.OutputRegister(1)); ++ __ Move(i.TempDoubleRegister(0), static_cast(INT32_MAX) + 1); ++ __ CompareF(LE, i.TempDoubleRegister(0), i.InputDoubleRegister(0)); ++ __ LoadZeroIfFPUCondition(i.OutputRegister(1)); ++ } ++ break; ++ } ++ case kSw64F32ToI32_n: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ffloorsw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F32ToI32_p: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ fceilsw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F32ToI32_g: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ froundsw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ break; ++ } ++ case kSw64F32ToI32: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ ftruncsw(i.InputDoubleRegister(0), scratch); ++ __ fimovs(scratch, i.OutputRegister()); ++ // Avoid INT32_MAX as an overflow indicator and use INT32_MIN instead, ++ // because INT32_MIN allows easier out-of-bounds detection. ++ bool set_overflow_to_min_i32 = MiscField::decode(instr->opcode()); ++ if (set_overflow_to_min_i32) { ++ __ Addw(kScratchReg, i.OutputRegister(), Operand(1)); ++ __ cmplt(kScratchReg, i.OutputRegister(), kScratchReg2); ++ __ Selne(i.OutputRegister(), kScratchReg, kScratchReg2); ++ } ++ break; ++ } ++ case kSw64F32ToI64: { ++ FPURegister scratch = kScratchDoubleReg; ++ FPURegister scratch1 = kScratchDoubleReg1; ++ FPURegister scratch2 = kScratchDoubleReg2; ++ Register temp = kScratchReg; ++ Register result = kScratchReg2; ++ ++ bool load_status = instr->OutputCount() > 1; ++ if (load_status) { ++ // Save FPCR. ++ __ rfpcr(scratch2); ++ // SW64 neednot clear FPCR in 20150513. ++ // in order to have same effection, we should do four steps in sw: ++ // 1) set fpcr = 0 ++ // 2) Rounding: sw(10), round-to-even ++ // 3) set trap bit: sw(62~61,51~49), exception controlled by fpcr but ++ // not trap 4) set exception mode: sw(00) setfpec0 ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A)) { ++ __ li(temp, sFPCR_8aControlMask | sFPCRRound1Mask); // 1), 2), 3) ++ } else { ++ __ li(temp, sFPCRControlMask | sFPCRRound1Mask); // 1), 2), 3) ++ } ++ __ ifmovd(temp, scratch1); ++ __ wfpcr(scratch1); ++ __ setfpec1(); // 4) ++ } ++ // Other arches use round to zero here, so we follow. ++ __ fcvtsd(i.InputDoubleRegister(0), scratch); ++ __ fcvtdl_z(scratch, scratch1); ++ __ fimovd(scratch1, i.OutputRegister()); ++ ++ if (load_status) { ++ __ rfpcr(scratch1); ++ __ fimovd(scratch1, result); ++ ++ // Check for overflow and NaNs. ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A)) { ++ __ li(temp, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask | ++ sFPCROverflowIntegerFlagMask | sFPCRInexactFlagBit); ++ } else { ++ __ li(temp, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask); ++ } ++ __ and_(result, temp, result); ++ __ Cmplt(result, zero_reg, result); ++ __ xor_(result, 1, result); ++ __ mov(i.OutputRegister(1), result); ++ // Restore FPCR ++ __ wfpcr(scratch2); ++ __ setfpec1(); ++ } ++ break; ++ } ++ case kSw64F64ToI64: { ++ FPURegister scratch = kScratchDoubleReg; ++ FPURegister scratch1 = kScratchDoubleReg1; ++ FPURegister scratch2 = kScratchDoubleReg2; ++ Register temp = kScratchReg; ++ Register result = kScratchReg2; ++ ++ bool set_overflow_to_min_i64 = MiscField::decode(instr->opcode()); ++ bool load_status = instr->OutputCount() > 1; ++ DCHECK_IMPLIES(set_overflow_to_min_i64, instr->OutputCount() == 1); ++ if (load_status) { ++ // Save FPCR. ++ __ rfpcr(scratch2); ++ // SW64 neednot clear FPCR in 20150513. ++ // in order to have same effection, we should do four steps in sw: ++ // 1) set fpcr = 0 ++ // 2) Rounding: sw(10), round-to-even ++ // 3) set trap bit: sw(62~61,51~49), exception controlled by fpcr but ++ // not trap 4) set exception mode: sw(00) setfpec0 ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A)) { ++ __ li(temp, sFPCR_8aControlMask | sFPCRRound1Mask); // 1), 2), 3) ++ } else { ++ __ li(temp, sFPCRControlMask | sFPCRRound1Mask); // 1), 2), 3) ++ } ++ __ ifmovd(temp, scratch1); ++ __ wfpcr(scratch1); ++ __ setfpec1(); // 4) ++ } ++ // Other arches use round to zero here, so we follow. ++ __ ftruncdl(i.InputDoubleRegister(0), scratch); ++ __ fimovd(scratch, i.OutputRegister(0)); ++ if (load_status) { ++ __ rfpcr(scratch1); ++ __ fimovd(scratch1, result); ++ ++ // Check for overflow and NaNs. ++ if ((strcmp(v8_flags.sw64_arch, "sw8a") == 0) || ++ CpuFeatures::IsSupported(SW_8A)) { ++ __ li(temp, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask | ++ sFPCROverflowIntegerFlagMask | sFPCRInexactFlagBit); ++ } else { ++ __ li(temp, sFPCROverflowFlagMask | sFPCRUnderflowFlagMask | ++ sFPCRInvalidOpFlagMask); ++ } ++ __ and_(result, temp, result); ++ __ Cmplt(result, zero_reg, result); ++ __ xor_(result, 1, result); ++ __ mov(i.OutputRegister(1), result); ++ // Restore FPCR ++ __ wfpcr(scratch2); ++ __ setfpec1(); ++ if (set_overflow_to_min_i64) { ++ // Avoid INT64_MAX as an overflow indicator and use INT64_MIN instead, ++ // because INT64_MIN allows easier out-of-bounds detection. ++ __ Addl(kScratchReg, i.OutputRegister(), Operand(1)); ++ __ cmplt(kScratchReg, i.OutputRegister(), kScratchReg2); ++ __ Selne(i.OutputRegister(), kScratchReg, kScratchReg2); ++ } ++ } ++ break; ++ } ++ case kSw64F64ToUI32: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ Trunc_uw_d(i.OutputRegister(), i.InputDoubleRegister(0), scratch); ++ if (instr->OutputCount() > 1) { ++ __ li(i.OutputRegister(1), 1); ++ __ Move(i.TempDoubleRegister(0), static_cast(-1.0)); ++ __ CompareF(LT, i.TempDoubleRegister(0), i.InputDoubleRegister(0)); ++ __ LoadZeroIfNotFPUCondition(i.OutputRegister(1)); ++ __ Move(i.TempDoubleRegister(0), static_cast(UINT32_MAX) + 1); ++ __ CompareF(LE, i.TempDoubleRegister(0), i.InputDoubleRegister(0)); ++ __ LoadZeroIfFPUCondition(i.OutputRegister(1)); ++ } ++ break; ++ } ++ case kSw64F32ToUI32: { ++ FPURegister scratch = kScratchDoubleReg; ++ __ Trunc_uw_s(i.OutputRegister(), i.InputDoubleRegister(0), scratch); ++ bool set_overflow_to_min_i32 = MiscField::decode(instr->opcode()); ++ if (set_overflow_to_min_i32) { ++ // Avoid UINT32_MAX as an overflow indicator and use 0 instead, ++ // because 0 allows easier out-of-bounds detection. ++ __ Addw(kScratchReg, i.OutputRegister(), Operand(1)); ++ __ Seleq(i.OutputRegister(), zero_reg, kScratchReg); ++ } ++ break; ++ } ++ case kSw64F32ToUI64: { ++ FPURegister scratch = kScratchDoubleReg; ++ Register result = instr->OutputCount() > 1 ? i.OutputRegister(1) : no_reg; ++ __ Trunc_ul_s(i.OutputRegister(), i.InputDoubleRegister(0), scratch, ++ result); ++ break; ++ } ++ case kSw64F64ToUI64: { ++ FPURegister scratch = kScratchDoubleReg; ++ Register result = instr->OutputCount() > 1 ? i.OutputRegister(1) : no_reg; ++ __ Trunc_ul_d(i.OutputRegister(0), i.InputDoubleRegister(0), scratch, ++ result); ++ break; ++ } ++ case kSw64BitcastDL: ++ __ fimovd(i.InputDoubleRegister(0), i.OutputRegister()); ++ break; ++ case kSw64BitcastLD: ++ __ ifmovd(i.InputRegister(0), i.OutputDoubleRegister()); ++ break; ++ case kSw64BitcastSW: ++ __ fimovs(i.InputDoubleRegister(0), i.OutputRegister()); ++ break; ++ case kSw64BitcastWS: ++ __ ifmovs(i.InputRegister(0), i.OutputDoubleRegister()); ++ break; ++ case kSw64Float64ExtractLowWord32: ++ __ FmoveLow(i.OutputRegister(), i.InputDoubleRegister(0)); ++ break; ++ case kSw64Float64ExtractHighWord32: ++ __ FmoveHigh(i.OutputRegister(), i.InputDoubleRegister(0)); ++ break; ++ case kSw64Float64InsertLowWord32: ++ __ FmoveLow(i.OutputDoubleRegister(), i.InputRegister(1)); ++ break; ++ case kSw64Float64InsertHighWord32: ++ __ FmoveHigh(i.OutputDoubleRegister(), i.InputRegister(1)); ++ break; ++ case kSw64Sextb: ++ __ sextb(i.InputRegister(0), i.OutputRegister()); ++ break; ++ case kSw64Sexth: ++ __ sexth(i.InputRegister(0), i.OutputRegister()); ++ break; ++ case kSw64Ldb: ++ __ Ldb(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldbu: ++ __ Ldbu(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Stb: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Stb(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Ldh: ++ __ Ldh(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldh_u: ++ __ Ldh_u(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldhu: ++ __ Ldhu(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldhu_u: ++ __ Ldhu_u(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Sth: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Sth(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Sth_u: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Sth_u(i.InputOrZeroRegister(index), mem, kScratchReg); ++ break; ++ } ++ case kSw64Ldw: ++ __ Ldw(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldw_u: ++ __ Ldw_u(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldwu: ++ __ Ldwu(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldwu_u: ++ __ Ldwu_u(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Stw: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Stw(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Stw_u: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Stw_u(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Ldl: ++ __ Ldl(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Ldl_u: ++ __ Ldl_u(i.OutputRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Stl: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Stl(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Stl_u: { ++ size_t index = 0; ++ MemOperand mem = i.MemoryOperand(&index); ++ __ Stl_u(i.InputOrZeroRegister(index), mem); ++ break; ++ } ++ case kSw64Flds: { ++ __ Flds(i.OutputSingleRegister(), i.MemoryOperand()); ++ break; ++ } ++ case kSw64Flds_u: { ++ __ Flds_u(i.OutputSingleRegister(), i.MemoryOperand(), kScratchReg); ++ break; ++ } ++ case kSw64Fsts: { ++ size_t index = 0; ++ MemOperand operand = i.MemoryOperand(&index); ++ FPURegister ft = i.InputOrZeroSingleRegister(index); ++ __ Fsts(ft, operand); ++ break; ++ } ++ case kSw64Fsts_u: { ++ size_t index = 0; ++ MemOperand operand = i.MemoryOperand(&index); ++ FPURegister ft = i.InputOrZeroSingleRegister(index); ++ __ Fsts_u(ft, operand, kScratchReg); ++ break; ++ } ++ case kSw64Fldd: ++ __ Fldd(i.OutputDoubleRegister(), i.MemoryOperand()); ++ break; ++ case kSw64Fldd_u: ++ __ Fldd_u(i.OutputDoubleRegister(), i.MemoryOperand(), kScratchReg); ++ break; ++ case kSw64Fstd: { ++ size_t index = 0; ++ MemOperand operand = i.MemoryOperand(&index); ++ FPURegister ft = i.InputOrZeroDoubleRegister(index); ++ __ Fstd(ft, operand); ++ break; ++ } ++ case kSw64Fstd_u: { ++ size_t index = 0; ++ MemOperand operand = i.MemoryOperand(&index); ++ FPURegister ft = i.InputOrZeroDoubleRegister(index); ++ __ Fstd_u(ft, operand, kScratchReg); ++ break; ++ } ++ case kSw64Memb: { ++ __ memb(); ++ break; ++ } ++ case kSw64Push: ++ if (instr->InputAt(0)->IsFPRegister()) { ++ __ Fstd(i.InputDoubleRegister(0), MemOperand(sp, -kDoubleSize)); ++ __ Subw(sp, sp, Operand(kDoubleSize)); ++ frame_access_state()->IncreaseSPDelta(kDoubleSize / kSystemPointerSize); ++ } else { ++ __ Push(i.InputRegister(0)); ++ frame_access_state()->IncreaseSPDelta(1); ++ } ++ break; ++ case kSw64Peek: { ++ int reverse_slot = i.InputInt32(0); ++ int offset = ++ FrameSlotToFPOffset(frame()->GetTotalFrameSlotCount() - reverse_slot); ++ if (instr->OutputAt(0)->IsFPRegister()) { ++ LocationOperand* op = LocationOperand::cast(instr->OutputAt(0)); ++ if (op->representation() == MachineRepresentation::kFloat64) { ++ __ Fldd(i.OutputDoubleRegister(), MemOperand(fp, offset)); ++ } else if (op->representation() == MachineRepresentation::kFloat32) { ++ __ Flds(i.OutputSingleRegister(0), MemOperand(fp, offset)); ++ } ++ } else { ++ __ Ldl(i.OutputRegister(0), MemOperand(fp, offset)); ++ } ++ break; ++ } ++ case kSw64StackClaim: { ++ __ Subl(sp, sp, Operand(i.InputInt32(0))); ++ frame_access_state()->IncreaseSPDelta(i.InputInt32(0) / kPointerSize); ++ break; ++ } ++ case kSw64Poke: { ++ if (instr->InputAt(0)->IsFPRegister()) { ++ if (instr->InputAt(0)->IsDoubleRegister()) { ++ __ Fstd(i.InputDoubleRegister(0), MemOperand(sp, i.InputInt32(1))); ++ } else { ++ __ Fsts(i.InputFloatRegister(0), MemOperand(sp, i.InputInt32(1))); ++ } ++ } else { ++ __ Stl(i.InputRegister(0), MemOperand(sp, i.InputInt32(1))); ++ } ++ break; ++ } ++ case kSw64ByteSwap64: { ++ __ ByteSwapSigned(i.OutputRegister(0), i.InputRegister(0), 8); ++ break; ++ } ++ case kSw64ByteSwap32: { ++ __ ByteSwapSigned(i.OutputRegister(0), i.InputRegister(0), 4); ++ break; ++ } ++ ++ case kAtomicLoadInt8: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldb); ++ break; ++ case kAtomicLoadUint8: ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldbu); ++ break; ++ case kAtomicLoadInt16: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldh); ++ break; ++ case kAtomicLoadUint16: ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldhu); ++ break; ++ case kAtomicLoadWord32: ++ if (AtomicWidthField::decode(opcode) == AtomicWidth::kWord32) ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldw); ++ else ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldwu); ++ break; ++ case kSw64Word64AtomicLoadUint64: ++ ASSEMBLE_ATOMIC_LOAD_INTEGER(Ldl); ++ break; ++ case kAtomicStoreWord8: ++ ASSEMBLE_ATOMIC_STORE_INTEGER(Stb); ++ break; ++ case kAtomicStoreWord16: ++ ASSEMBLE_ATOMIC_STORE_INTEGER(Sth); ++ break; ++ case kAtomicStoreWord32: ++ ASSEMBLE_ATOMIC_STORE_INTEGER(Stw); ++ break; ++ case kSw64Word64AtomicStoreWord64: ++ ASSEMBLE_ATOMIC_STORE_INTEGER(Stl); ++ break; ++ case kSw64StoreCompressTagged: ++ __ Stl(i.InputOrZeroRegister(2), i.MemoryOperand()); ++ break; ++ case kAtomicExchangeInt8: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, true, 8, 32); ++ break; ++ case kAtomicExchangeUint8: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, false, 8, 32); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 8, 64); ++ break; ++ } ++ break; ++ case kAtomicExchangeInt16: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, true, 16, 32); ++ break; ++ case kAtomicExchangeUint16: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, false, 16, 32); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 16, 64); ++ break; ++ } ++ break; ++ case kAtomicExchangeWord32: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lldw, lstw); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 32, 64); ++ break; ++ } ++ break; ++ case kSw64Word64AtomicExchangeUint64: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lldl, lstl); ++ break; ++ case kAtomicCompareExchangeInt8: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, true, 8, 32); ++ break; ++ case kAtomicCompareExchangeUint8: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, false, 8, ++ 32); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 8, ++ 64); ++ break; ++ } ++ break; ++ case kAtomicCompareExchangeInt16: ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, true, 16, 32); ++ break; ++ case kAtomicCompareExchangeUint16: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, false, 16, ++ 32); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 16, ++ 64); ++ break; ++ } ++ break; ++ case kAtomicCompareExchangeWord32: ++ switch (AtomicWidthField::decode(opcode)) { ++ case AtomicWidth::kWord32: ++ __ addw(i.InputRegister(2), 0x0, i.InputRegister(2)); ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(lldw, lstw); ++ break; ++ case AtomicWidth::kWord64: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, false, 32, ++ 64); ++ break; ++ } ++ break; ++ case kSw64Word64AtomicCompareExchangeUint64: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(lldl, lstl); ++ break; ++#define ATOMIC_BINOP_CASE(op, inst32, inst64) \ ++ case kAtomic##op##Int8: \ ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, true, 8, inst32, 32); \ ++ break; \ ++ case kAtomic##op##Uint8: \ ++ switch (AtomicWidthField::decode(opcode)) { \ ++ case AtomicWidth::kWord32: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, false, 8, inst32, 32); \ ++ break; \ ++ case AtomicWidth::kWord64: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, false, 8, inst64, 64); \ ++ break; \ ++ } \ ++ break; \ ++ case kAtomic##op##Int16: \ ++ DCHECK_EQ(AtomicWidthField::decode(opcode), AtomicWidth::kWord32); \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, true, 16, inst32, 32); \ ++ break; \ ++ case kAtomic##op##Uint16: \ ++ switch (AtomicWidthField::decode(opcode)) { \ ++ case AtomicWidth::kWord32: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, false, 16, inst32, 32); \ ++ break; \ ++ case AtomicWidth::kWord64: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, false, 16, inst64, 64); \ ++ break; \ ++ } \ ++ break; \ ++ case kAtomic##op##Word32: \ ++ switch (AtomicWidthField::decode(opcode)) { \ ++ case AtomicWidth::kWord32: \ ++ ASSEMBLE_ATOMIC_BINOP(lldw, lstw, inst32); \ ++ break; \ ++ case AtomicWidth::kWord64: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, false, 32, inst64, 64); \ ++ break; \ ++ } \ ++ break; \ ++ case kSw64Word64Atomic##op##Uint64: \ ++ ASSEMBLE_ATOMIC_BINOP(lldl, lstl, inst64); \ ++ break; ++ ATOMIC_BINOP_CASE(Add, Addw, Addl) ++ ATOMIC_BINOP_CASE(Sub, Subw, Subl) ++ ATOMIC_BINOP_CASE(And, And, And) ++ ATOMIC_BINOP_CASE(Or, Or, Or) ++ ATOMIC_BINOP_CASE(Xor, Xor, Xor) ++#undef ATOMIC_BINOP_CASE ++ case kSw64AssertEqual: ++ __ Assert(eq, static_cast(i.InputOperand(2).immediate()), ++ i.InputRegister(0), Operand(i.InputRegister(1))); ++ break; ++ case kSw64S128Const: ++ case kSw64S128Zero: ++ case kSw64I32x4Splat: ++ case kSw64I32x4ExtractLane: ++ case kSw64I32x4Add: ++ case kSw64I32x4ReplaceLane: ++ case kSw64I32x4Sub: ++ case kSw64F64x2Abs: ++ case kSw64SwsaLd: ++ case kSw64SwsaSt: ++ default: ++ break; ++ } ++ return kSuccess; ++} ++ ++#define UNSUPPORTED_COND(opcode, condition) \ ++ StdoutStream{} << "Unsupported " << #opcode << " condition: \"" << condition \ ++ << "\""; \ ++ UNIMPLEMENTED(); ++ ++void AssembleBranchToLabels(CodeGenerator* gen, MacroAssembler* masm, ++ Instruction* instr, FlagsCondition condition, ++ Label* tlabel, Label* flabel, bool fallthru) { ++#undef __ ++#define __ masm-> ++ Sw64OperandConverter i(gen, instr); ++ ++ // SW64 does not have condition code flags, so compare and branch are ++ // implemented differently than on the other arch's. The compare operations ++ // emit sw64 pseudo-instructions, which are handled here by branch ++ // instructions that do the actual comparison. Essential that the input ++ // registers to compare pseudo-op are not modified before this branch op, as ++ // they are tested here. ++ ++ if (instr->arch_opcode() == kSw64Tst) { ++ Condition cc = FlagsConditionToConditionTst(condition); ++ __ Branch(tlabel, cc, kScratchReg, Operand(zero_reg)); ++ } else if (instr->arch_opcode() == kSw64Addl || ++ instr->arch_opcode() == kSw64Subl) { ++ Condition cc = FlagsConditionToConditionOvf(condition); ++ // __ sral(i.OutputRegister(), 32 ,kScratchReg); ++ // __ Sraw(kScratchReg2, i.OutputRegister(), 31); ++ // __ Branch(tlabel, cc, kScratchReg2, Operand(kScratchReg)); ++ __ addw(i.OutputRegister(), 0, kScratchReg2); // optimize from octane ++ __ Branch(tlabel, cc, i.OutputRegister(), Operand(kScratchReg2)); ++ } else if (instr->arch_opcode() == kSw64AddlOvf || ++ instr->arch_opcode() == kSw64SublOvf) { ++ switch (condition) { ++ // Overflow occurs if overflow register is negative ++ case kOverflow: ++ __ Branch(tlabel, lt, kScratchReg, Operand(zero_reg)); ++ break; ++ case kNotOverflow: ++ __ Branch(tlabel, ge, kScratchReg, Operand(zero_reg)); ++ break; ++ default: ++ UNSUPPORTED_COND(instr->arch_opcode(), condition); ++ } ++ } else if (instr->arch_opcode() == kSw64MulwOvf || ++ instr->arch_opcode() == kSw64MullOvf) { ++ // Overflow occurs if overflow register is not zero ++ switch (condition) { ++ case kOverflow: ++ __ Branch(tlabel, ne, kScratchReg, Operand(zero_reg)); ++ break; ++ case kNotOverflow: ++ __ Branch(tlabel, eq, kScratchReg, Operand(zero_reg)); ++ break; ++ default: ++ UNSUPPORTED_COND(instr->arch_opcode(), condition); ++ } ++ } else if (instr->arch_opcode() == kSw64Cmp) { ++ Condition cc = FlagsConditionToConditionCmp(condition); ++ __ Branch(tlabel, cc, i.InputRegister(0), i.InputOperand(1)); ++ } else if (instr->arch_opcode() == kArchStackPointerGreaterThan) { ++ Condition cc = FlagsConditionToConditionCmp(condition); ++ DCHECK((cc == ls) || (cc == hi)); ++ if (cc == ls) { ++ __ xor_(i.TempRegister(0), 1, i.TempRegister(0)); ++ } ++ __ Branch(tlabel, ne, i.TempRegister(0), Operand(zero_reg)); ++ } else if (instr->arch_opcode() == kSw64Fcmps || ++ instr->arch_opcode() == kSw64Fcmpd) { ++ bool predicate; ++ FlagsConditionToConditionCmpFPU(&predicate, condition); ++ if (predicate) { ++ __ BranchTrueF(tlabel); ++ } else { ++ __ BranchFalseF(tlabel); ++ } ++ } else { ++ PrintF("AssembleArchBranch Unimplemented arch_opcode: %d\n", ++ instr->arch_opcode()); ++ UNIMPLEMENTED(); ++ } ++ if (!fallthru) __ Branch(flabel); // no fallthru to flabel. ++#undef __ ++#define __ masm()-> ++} ++ ++// Assembles branches after an instruction. ++void CodeGenerator::AssembleArchBranch(Instruction* instr, BranchInfo* branch) { ++ Label* tlabel = branch->true_label; ++ Label* flabel = branch->false_label; ++ ++ AssembleBranchToLabels(this, masm(), instr, branch->condition, tlabel, flabel, ++ branch->fallthru); ++} ++ ++#undef UNSUPPORTED_COND ++ ++void CodeGenerator::AssembleArchDeoptBranch(Instruction* instr, ++ BranchInfo* branch) { ++ AssembleArchBranch(instr, branch); ++} ++ ++void CodeGenerator::AssembleArchJumpRegardlessOfAssemblyOrder( ++ RpoNumber target) { ++ __ Branch(GetLabel(target)); ++} ++ ++#if V8_ENABLE_WEBASSEMBLY ++void CodeGenerator::AssembleArchTrap(Instruction* instr, ++ FlagsCondition condition) { ++ class OutOfLineTrap final : public OutOfLineCode { ++ public: ++ OutOfLineTrap(CodeGenerator* gen, Instruction* instr) ++ : OutOfLineCode(gen), instr_(instr), gen_(gen) {} ++ void Generate() final { ++ Sw64OperandConverter i(gen_, instr_); ++ TrapId trap_id = ++ static_cast(i.InputInt32(instr_->InputCount() - 1)); ++ GenerateCallToTrap(trap_id); ++ } ++ ++ private: ++ void GenerateCallToTrap(TrapId trap_id) { ++ if (trap_id == TrapId::kInvalid) { ++ // We cannot test calls to the runtime in cctest/test-run-wasm. ++ // Therefore we emit a call to C here instead of a call to the runtime. ++ // We use the context register as the scratch register, because we do ++ // not have a context here. ++ __ PrepareCallCFunction(0, 0, cp); ++ __ CallCFunction( ++ ExternalReference::wasm_call_trap_callback_for_testing(), 0); ++ __ LeaveFrame(StackFrame::WASM); ++ auto call_descriptor = gen_->linkage()->GetIncomingDescriptor(); ++ int pop_count = static_cast(call_descriptor->ParameterSlotCount()); ++ pop_count += (pop_count & 1); // align ++ __ Drop(pop_count); ++ __ Ret(); ++ } else { ++ gen_->AssembleSourcePosition(instr_); ++ // A direct call to a wasm runtime stub defined in this module. ++ // Just encode the stub index. This will be patched when the code ++ // is added to the native module and copied into wasm code space. ++ __ Call(static_cast
(trap_id), RelocInfo::WASM_STUB_CALL); ++ ReferenceMap* reference_map = ++ gen_->zone()->New(gen_->zone()); ++ gen_->RecordSafepoint(reference_map); ++ if (v8_flags.debug_code) { ++ __ ++ halt(); // stop(GetAbortReason(AbortReason::kUnexpectedReturnFromWasmTrap)); ++ } ++ } ++ } ++ Instruction* instr_; ++ CodeGenerator* gen_; ++ }; ++ auto ool = zone()->New(this, instr); ++ Label* tlabel = ool->entry(); ++ AssembleBranchToLabels(this, masm(), instr, condition, tlabel, nullptr, true); ++} ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++// Assembles boolean materializations after an instruction. ++void CodeGenerator::AssembleArchBoolean(Instruction* instr, ++ FlagsCondition condition) { ++ Sw64OperandConverter i(this, instr); ++ ++ // Materialize a full 32-bit 1 or 0 value. The result register is always the ++ // last output of the instruction. ++ DCHECK_NE(0u, instr->OutputCount()); ++ Register result = i.OutputRegister(instr->OutputCount() - 1); ++ // SW64 does not have condition code flags, so compare and branch are ++ // implemented differently than on the other arch's. The compare operations ++ // emit sw64 pseudo-instructions, which are checked and handled here. ++ ++ if (instr->arch_opcode() == kSw64Tst) { ++ Condition cc = FlagsConditionToConditionTst(condition); ++ if (cc == eq) { ++ __ Cmpult(result, kScratchReg, 1); ++ } else { ++ __ Cmpult(result, zero_reg, kScratchReg); ++ } ++ return; ++ } else if (instr->arch_opcode() == kSw64Addl || ++ instr->arch_opcode() == kSw64Subl) { ++ Condition cc = FlagsConditionToConditionOvf(condition); ++ // Check for overflow creates 1 or 0 for result. ++ __ srll(i.OutputRegister(), 63, kScratchReg); ++ __ Srlw(kScratchReg2, i.OutputRegister(), 31); ++ __ xor_(kScratchReg, kScratchReg2, result); ++ if (cc == eq) // Toggle result for not overflow. ++ __ xor_(result, 1, result); ++ return; ++ } else if (instr->arch_opcode() == kSw64AddlOvf || ++ instr->arch_opcode() == kSw64SublOvf) { ++ // Overflow occurs if overflow register is negative ++ __ cmplt(kScratchReg, zero_reg, result); ++ } else if (instr->arch_opcode() == kSw64MulwOvf || ++ instr->arch_opcode() == kSw64MullOvf) { ++ // Overflow occurs if overflow register is not zero ++ __ Cmpugt(result, kScratchReg, zero_reg); ++ } else if (instr->arch_opcode() == kSw64Cmp) { ++ Condition cc = FlagsConditionToConditionCmp(condition); ++ switch (cc) { ++ case eq: ++ case ne: { ++ Register left = i.InputRegister(0); ++ Operand right = i.InputOperand(1); ++ if (instr->InputAt(1)->IsImmediate()) { ++ if (is_int16(-right.immediate())) { ++ if (right.immediate() == 0) { ++ if (cc == eq) { ++ __ Cmpult(result, left, 1); ++ } else { ++ __ Cmpult(result, zero_reg, left); ++ } ++ } else { ++ __ Addl(result, left, Operand(-right.immediate())); ++ if (cc == eq) { ++ __ Cmpult(result, result, 1); ++ } else { ++ __ Cmpult(result, zero_reg, result); ++ } ++ } ++ } else { ++ if (is_uint16(right.immediate())) { ++ __ Xor(result, left, right); ++ } else { ++ __ li(kScratchReg, right); ++ __ Xor(result, left, kScratchReg); ++ } ++ if (cc == eq) { ++ __ Cmpult(result, result, 1); ++ } else { ++ __ Cmpult(result, zero_reg, result); ++ } ++ } ++ } else { ++ __ Xor(result, left, right); ++ if (cc == eq) { ++ __ Cmpult(result, result, 1); ++ } else { ++ __ Cmpult(result, zero_reg, result); ++ } ++ } ++ } break; ++ case lt: ++ case ge: { ++ Register left = i.InputRegister(0); ++ Operand right = i.InputOperand(1); ++ __ Cmplt(result, left, right); ++ if (cc == ge) { ++ __ xor_(result, 1, result); ++ } ++ } break; ++ case gt: ++ case le: { ++ Register left = i.InputRegister(1); ++ Operand right = i.InputOperand(0); ++ __ Cmplt(result, left, right); ++ if (cc == le) { ++ __ xor_(result, 1, result); ++ } ++ } break; ++ case lo: ++ case hs: { ++ Register left = i.InputRegister(0); ++ Operand right = i.InputOperand(1); ++ __ Cmpult(result, left, right); ++ if (cc == hs) { ++ __ xor_(result, 1, result); ++ } ++ } break; ++ case hi: ++ case ls: { ++ Register left = i.InputRegister(1); ++ Operand right = i.InputOperand(0); ++ __ Cmpult(result, left, right); ++ if (cc == ls) { ++ __ xor_(result, 1, result); ++ } ++ } break; ++ default: ++ UNREACHABLE(); ++ } ++ return; ++ } else if (instr->arch_opcode() == kSw64Fcmpd || ++ instr->arch_opcode() == kSw64Fcmps) { ++ bool predicate; ++ FlagsConditionToConditionCmpFPU(&predicate, condition); ++ __ li(result, Operand(1)); ++ if (predicate) { ++ __ LoadZeroIfNotFPUCondition(result); ++ } else { ++ __ LoadZeroIfFPUCondition(result); ++ } ++ return; ++ } else if (instr->arch_opcode() == kArchStackPointerGreaterThan) { ++ Condition cc = FlagsConditionToConditionCmp(condition); ++ DCHECK((cc == ls) || (cc == hi)); ++ if (cc == ls) { ++ __ xor_(i.OutputRegister(), 1, i.TempRegister(0)); ++ } ++ return; ++ } else { ++ PrintF("AssembleArchBranch Unimplemented arch_opcode is : %d\n", ++ instr->arch_opcode()); ++ TRACE_UNIMPL(); ++ UNIMPLEMENTED(); ++ } ++} ++ ++void CodeGenerator::AssembleArchBinarySearchSwitch(Instruction* instr) { ++ Sw64OperandConverter i(this, instr); ++ Register input = i.InputRegister(0); ++ std::vector> cases; ++ for (size_t index = 2; index < instr->InputCount(); index += 2) { ++ cases.push_back({i.InputInt32(index + 0), GetLabel(i.InputRpo(index + 1))}); ++ } ++ AssembleArchBinarySearchSwitchRange(input, i.InputRpo(1), cases.data(), ++ cases.data() + cases.size()); ++} ++ ++void CodeGenerator::AssembleArchTableSwitch(Instruction* instr) { ++ Sw64OperandConverter i(this, instr); ++ Register input = i.InputRegister(0); ++ size_t const case_count = instr->InputCount() - 2; ++ ++ __ Branch(GetLabel(i.InputRpo(1)), hs, input, Operand(case_count)); ++ __ GenerateSwitchTable(input, case_count, [&i, this](size_t index) { ++ return GetLabel(i.InputRpo(index + 2)); ++ }); ++} ++ ++void CodeGenerator::AssembleArchSelect(Instruction* instr, ++ FlagsCondition condition) { ++ UNIMPLEMENTED(); ++} ++ ++void CodeGenerator::FinishFrame(Frame* frame) { ++ auto call_descriptor = linkage()->GetIncomingDescriptor(); ++ ++ const DoubleRegList saves_fpu = call_descriptor->CalleeSavedFPRegisters(); ++ if (!saves_fpu.is_empty()) { ++ int count = saves_fpu.Count(); ++ DCHECK_EQ(kNumCalleeSavedFPU, count); ++ frame->AllocateSavedCalleeRegisterSlots(count * ++ (kDoubleSize / kSystemPointerSize)); ++ } ++ ++ const RegList saves = call_descriptor->CalleeSavedRegisters(); ++ if (!saves.is_empty()) { ++ int count = saves.Count(); ++ frame->AllocateSavedCalleeRegisterSlots(count); ++ } ++} ++ ++void CodeGenerator::AssembleConstructFrame() { ++ auto call_descriptor = linkage()->GetIncomingDescriptor(); ++ ++ if (frame_access_state()->has_frame()) { ++ if (call_descriptor->IsCFunctionCall()) { ++#if V8_ENABLE_WEBASSEMBLY ++ if (info()->GetOutputStackFrameType() == StackFrame::C_WASM_ENTRY) { ++ __ StubPrologue(StackFrame::C_WASM_ENTRY); ++ // Reserve stack space for saving the c_entry_fp later. ++ __ Subl(sp, sp, Operand(kSystemPointerSize)); ++#else ++ // For balance. ++ if (false) { ++#endif // V8_ENABLE_WEBASSEMBLY ++ } else { ++ __ Push(ra, fp); ++ __ mov(fp, sp); ++ } ++ } else if (call_descriptor->IsJSFunctionCall()) { ++ __ Prologue(); ++ } else { ++ __ StubPrologue(info()->GetOutputStackFrameType()); ++#if V8_ENABLE_WEBASSEMBLY ++ if (call_descriptor->IsWasmFunctionCall() || ++ call_descriptor->IsWasmImportWrapper() || ++ call_descriptor->IsWasmCapiFunction()) { ++ // For import wrappers and C-API functions, this stack slot is only used ++ // for printing stack traces in V8. Also, it holds a WasmApiFunctionRef ++ // instead of the instance itself, which is taken care of in the frames ++ // accessors. ++ __ Push(kWasmInstanceRegister); ++ } ++ if (call_descriptor->IsWasmCapiFunction()) { ++ // Reserve space for saving the PC later. ++ __ Subl(sp, sp, Operand(kSystemPointerSize)); ++ } ++#endif // V8_ENABLE_WEBASSEMBLY ++ } ++ } ++ ++ int required_slots = ++ frame()->GetTotalFrameSlotCount() - frame()->GetFixedSlotCount(); ++ ++ if (info()->is_osr()) { ++ // TurboFan OSR-compiled functions cannot be entered directly. ++ __ Abort(AbortReason::kShouldNotDirectlyEnterOsrFunction); ++ ++ // Unoptimized code jumps directly to this entrypoint while the unoptimized ++ // frame is still on the stack. Optimized code uses OSR values directly from ++ // the unoptimized frame. Thus, all that needs to be done is to allocate the ++ // remaining stack slots. ++ __ RecordComment("-- OSR entrypoint --"); ++ osr_pc_offset_ = __ pc_offset(); ++ required_slots -= osr_helper()->UnoptimizedFrameSlots(); ++ } ++ ++ const RegList saves = call_descriptor->CalleeSavedRegisters(); ++ const DoubleRegList saves_fpu = call_descriptor->CalleeSavedFPRegisters(); ++ ++ if (required_slots > 0) { ++ DCHECK(frame_access_state()->has_frame()); ++#if V8_ENABLE_WEBASSEMBLY ++ if (info()->IsWasm() && required_slots * kSystemPointerSize > 4 * KB) { ++ // For WebAssembly functions with big frames we have to do the stack ++ // overflow check before we construct the frame. Otherwise we may not ++ // have enough space on the stack to call the runtime for the stack ++ // overflow. ++ Label done; ++ ++ // If the frame is bigger than the stack, we throw the stack overflow ++ // exception unconditionally. Thereby we can avoid the integer overflow ++ // check in the condition code. ++ if (required_slots * kSystemPointerSize < v8_flags.stack_size * KB) { ++ __ Ldl( ++ kScratchReg, ++ FieldMemOperand(kWasmInstanceRegister, ++ WasmInstanceObject::kRealStackLimitAddressOffset)); ++ __ Ldl(kScratchReg, MemOperand(kScratchReg)); ++ __ Addl(kScratchReg, kScratchReg, ++ Operand(required_slots * kSystemPointerSize)); ++ __ Branch(&done, uge, sp, Operand(kScratchReg)); ++ } ++ ++ __ Call(wasm::WasmCode::kWasmStackOverflow, RelocInfo::WASM_STUB_CALL); ++ // The call does not return, hence we can ignore any references and just ++ // define an empty safepoint. ++ ReferenceMap* reference_map = zone()->New(zone()); ++ RecordSafepoint(reference_map); ++ if (v8_flags.debug_code) { ++ __ halt(); ++ } ++ ++ __ bind(&done); ++ } ++#endif // V8_ENABLE_WEBASSEMBLY ++ } ++ ++ const int returns = frame()->GetReturnSlotCount(); ++ ++ // Skip callee-saved and return slots, which are pushed below. ++ required_slots -= saves.Count(); ++ required_slots -= saves_fpu.Count(); ++ required_slots -= returns; ++ if (required_slots > 0) { ++ __ Subl(sp, sp, Operand(required_slots * kSystemPointerSize)); ++ } ++ ++ if (!saves_fpu.is_empty()) { ++ // Save callee-saved FPU registers. ++ __ MultiPushFPU(saves_fpu); ++ DCHECK_EQ(kNumCalleeSavedFPU, saves_fpu.Count()); ++ } ++ ++ if (!saves.is_empty()) { ++ // Save callee-saved registers. ++ __ MultiPush(saves); ++ } ++ ++ if (returns != 0) { ++ // Create space for returns. ++ __ Subl(sp, sp, Operand(returns * kSystemPointerSize)); ++ } ++} ++ ++void CodeGenerator::AssembleReturn(InstructionOperand* additional_pop_count) { ++ auto call_descriptor = linkage()->GetIncomingDescriptor(); ++ ++ const int returns = frame()->GetReturnSlotCount(); ++ if (returns != 0) { ++ __ Addl(sp, sp, Operand(returns * kSystemPointerSize)); ++ } ++ ++ // Restore GP registers. ++ const RegList saves = call_descriptor->CalleeSavedRegisters(); ++ if (!saves.is_empty()) { ++ __ MultiPop(saves); ++ } ++ ++ // Restore FPU registers. ++ const DoubleRegList saves_fpu = call_descriptor->CalleeSavedFPRegisters(); ++ if (!saves_fpu.is_empty()) { ++ __ MultiPopFPU(saves_fpu); ++ } ++ ++ Sw64OperandConverter g(this, nullptr); ++ ++ const int parameter_slots = ++ static_cast(call_descriptor->ParameterSlotCount()); ++ ++ // {aditional_pop_count} is only greater than zero if {parameter_slots = 0}. ++ // Check RawMachineAssembler::PopAndReturn. ++ if (parameter_slots != 0) { ++ if (additional_pop_count->IsImmediate()) { ++ DCHECK_EQ(g.ToConstant(additional_pop_count).ToInt32(), 0); ++ } else if (v8_flags.debug_code) { ++ __ Assert(eq, AbortReason::kUnexpectedAdditionalPopValue, ++ g.ToRegister(additional_pop_count), ++ Operand(static_cast(0))); ++ } ++ } ++ ++ // Functions with JS linkage have at least one parameter (the receiver). ++ // If {parameter_slots} == 0, it means it is a builtin with ++ // kDontAdaptArgumentsSentinel, which takes care of JS arguments popping ++ // itself. ++ const bool drop_jsargs = frame_access_state()->has_frame() && ++ call_descriptor->IsJSFunctionCall() && ++ parameter_slots != 0; ++ ++ if (call_descriptor->IsCFunctionCall()) { ++ AssembleDeconstructFrame(); ++ } else if (frame_access_state()->has_frame()) { ++ // Canonicalize JSFunction return sites for now unless they have an variable ++ // number of stack slot pops. ++ if (additional_pop_count->IsImmediate() && ++ g.ToConstant(additional_pop_count).ToInt32() == 0) { ++ if (return_label_.is_bound()) { ++ __ Branch(&return_label_); ++ return; ++ } else { ++ __ bind(&return_label_); ++ } ++ } ++ if (drop_jsargs) { ++ // Get the actual argument count ++ __ Ldl(t0, MemOperand(fp, StandardFrameConstants::kArgCOffset)); ++ } ++ AssembleDeconstructFrame(); ++ } ++ if (drop_jsargs) { ++ // We must pop all arguments from the stack (including the receiver). This ++ // number of arguments is given by max(1 + argc_reg, parameter_slots). ++ if (parameter_slots > 1) { ++ __ li(kScratchReg, parameter_slots); ++ __ cmplt(t0, kScratchReg, kScratchReg2); ++ __ Selne(t0, kScratchReg, kScratchReg2); ++ } ++ __ Lsal(sp, sp, t0, kSystemPointerSizeLog2); ++ } else if (additional_pop_count->IsImmediate()) { ++ int additional_count = g.ToConstant(additional_pop_count).ToInt32(); ++ __ Drop(parameter_slots + additional_count); ++ } else { ++ Register pop_reg = g.ToRegister(additional_pop_count); ++ __ Drop(parameter_slots); ++ __ Lsal(sp, sp, pop_reg, kSystemPointerSizeLog2); ++ } ++ __ Ret(); ++} ++ ++void CodeGenerator::FinishCode() {} ++ ++void CodeGenerator::PrepareForDeoptimizationExits( ++ ZoneDeque* exits) {} ++ ++AllocatedOperand CodeGenerator::Push(InstructionOperand* source) { ++ auto rep = LocationOperand::cast(source)->representation(); ++ int new_slots = ElementSizeInPointers(rep); ++ Sw64OperandConverter g(this, nullptr); ++ int last_frame_slot_id = ++ frame_access_state_->frame()->GetTotalFrameSlotCount() - 1; ++ int sp_delta = frame_access_state_->sp_delta(); ++ int slot_id = last_frame_slot_id + sp_delta + new_slots; ++ AllocatedOperand stack_slot(LocationOperand::STACK_SLOT, rep, slot_id); ++ if (source->IsRegister()) { ++ __ Push(g.ToRegister(source)); ++ frame_access_state()->IncreaseSPDelta(new_slots); ++ } else if (source->IsStackSlot()) { ++ UseScratchRegisterScope temps(masm()); ++ Register scratch = temps.Acquire(); ++ __ Ldl(scratch, g.ToMemOperand(source)); ++ __ Push(scratch); ++ frame_access_state()->IncreaseSPDelta(new_slots); ++ } else { ++ // No push instruction for this operand type. Bump the stack pointer and ++ // assemble the move. ++ __ Subl(sp, sp, Operand(new_slots * kSystemPointerSize)); ++ frame_access_state()->IncreaseSPDelta(new_slots); ++ AssembleMove(source, &stack_slot); ++ } ++ temp_slots_ += new_slots; ++ return stack_slot; ++} ++ ++void CodeGenerator::Pop(InstructionOperand* dest, MachineRepresentation rep) { ++ Sw64OperandConverter g(this, nullptr); ++ int new_slots = ElementSizeInPointers(rep); ++ frame_access_state()->IncreaseSPDelta(-new_slots); ++ if (dest->IsRegister()) { ++ __ Pop(g.ToRegister(dest)); ++ } else if (dest->IsStackSlot()) { ++ UseScratchRegisterScope temps(masm()); ++ Register scratch = temps.Acquire(); ++ __ Pop(scratch); ++ __ Stl(scratch, g.ToMemOperand(dest)); ++ } else { ++ int last_frame_slot_id = ++ frame_access_state_->frame()->GetTotalFrameSlotCount() - 1; ++ int sp_delta = frame_access_state_->sp_delta(); ++ int slot_id = last_frame_slot_id + sp_delta + new_slots; ++ AllocatedOperand stack_slot(LocationOperand::STACK_SLOT, rep, slot_id); ++ AssembleMove(&stack_slot, dest); ++ __ Addl(sp, sp, Operand(new_slots * kSystemPointerSize)); ++ } ++ temp_slots_ -= new_slots; ++} ++ ++void CodeGenerator::PopTempStackSlots() { ++ if (temp_slots_ > 0) { ++ frame_access_state()->IncreaseSPDelta(-temp_slots_); ++ __ Addl(sp, sp, Operand(temp_slots_ * kSystemPointerSize)); ++ temp_slots_ = 0; ++ } ++} ++ ++void CodeGenerator::MoveToTempLocation(InstructionOperand* source, ++ MachineRepresentation rep) { ++ // Must be kept in sync with {MoveTempLocationTo}. ++ DCHECK(!source->IsImmediate()); ++ move_cycle_.temps.emplace(masm()); ++ auto& temps = *move_cycle_.temps; ++ // Temporarily exclude the reserved scratch registers while we pick one to ++ // resolve the move cycle. Re-include them immediately afterwards as they ++ // might be needed for the move to the temp location. ++ temps.Exclude(move_cycle_.scratch_regs); ++ if (!IsFloatingPoint(rep)) { ++ if (temps.hasAvailable()) { ++ Register scratch = move_cycle_.temps->Acquire(); ++ move_cycle_.scratch_reg.emplace(scratch); ++ } ++ } ++ ++ temps.Include(move_cycle_.scratch_regs); ++ ++ if (move_cycle_.scratch_reg.has_value()) { ++ // A scratch register is available for this rep. ++ // auto& scratch_reg = *move_cycle_.scratch_reg; ++ AllocatedOperand scratch(LocationOperand::REGISTER, rep, ++ move_cycle_.scratch_reg->code()); ++ AssembleMove(source, &scratch); ++ } else { ++ // The scratch registers are blocked by pending moves. Use the stack ++ // instead. ++ Push(source); ++ } ++} ++ ++void CodeGenerator::MoveTempLocationTo(InstructionOperand* dest, ++ MachineRepresentation rep) { ++ if (move_cycle_.scratch_reg.has_value()) { ++ // auto& scratch_reg = *move_cycle_.scratch_reg; ++ AllocatedOperand scratch(LocationOperand::REGISTER, rep, ++ move_cycle_.scratch_reg->code()); ++ AssembleMove(&scratch, dest); ++ } else { ++ Pop(dest, rep); ++ } ++ // Restore the default state to release the {UseScratchRegisterScope} and to ++ // prepare for the next cycle. ++ move_cycle_ = MoveCycleState(); ++} ++ ++void CodeGenerator::SetPendingMove(MoveOperands* move) { ++ InstructionOperand* src = &move->source(); ++ InstructionOperand* dst = &move->destination(); ++ UseScratchRegisterScope temps(masm()); ++ if (src->IsConstant() && dst->IsFPLocationOperand()) { ++ Register temp = temps.Acquire(); ++ move_cycle_.scratch_regs.set(temp); ++ } else if (src->IsAnyStackSlot() || dst->IsAnyStackSlot()) { ++ Sw64OperandConverter g(this, nullptr); ++ bool src_need_scratch = false; ++ bool dst_need_scratch = false; ++ if (src->IsAnyStackSlot()) { ++ MemOperand src_mem = g.ToMemOperand(src); ++ src_need_scratch = ++ (!is_int16(src_mem.offset())) || (((src_mem.offset() & 0b111) != 0) && ++ !is_int16(src_mem.offset() + 4)); ++ } ++ if (dst->IsAnyStackSlot()) { ++ MemOperand dst_mem = g.ToMemOperand(dst); ++ dst_need_scratch = ++ (!is_int16(dst_mem.offset())) || (((dst_mem.offset() & 0b111) != 0) && ++ !is_int16(dst_mem.offset() + 4)); ++ } ++ if (src_need_scratch || dst_need_scratch) { ++ Register temp = temps.Acquire(); ++ move_cycle_.scratch_regs.set(temp); ++ } ++ } ++} ++ ++void CodeGenerator::AssembleMove(InstructionOperand* source, ++ InstructionOperand* destination) { ++ Sw64OperandConverter g(this, nullptr); ++ // Dispatch on the source and destination operand kinds. Not all ++ // combinations are possible. ++ if (source->IsRegister()) { ++ DCHECK(destination->IsRegister() || destination->IsStackSlot()); ++ Register src = g.ToRegister(source); ++ if (destination->IsRegister()) { ++ __ mov(g.ToRegister(destination), src); ++ } else { ++ __ Stl(src, g.ToMemOperand(destination)); ++ } ++ } else if (source->IsStackSlot()) { ++ DCHECK(destination->IsRegister() || destination->IsStackSlot()); ++ MemOperand src = g.ToMemOperand(source); ++ if (destination->IsRegister()) { ++ __ Ldl(g.ToRegister(destination), src); ++ } else { ++ Register temp = kScratchReg; ++ __ Ldl(temp, src); ++ __ Stl(temp, g.ToMemOperand(destination)); ++ } ++ } else if (source->IsConstant()) { ++ Constant src = g.ToConstant(source); ++ if (destination->IsRegister() || destination->IsStackSlot()) { ++ Register dst = ++ destination->IsRegister() ? g.ToRegister(destination) : kScratchReg; ++ switch (src.type()) { ++ case Constant::kInt32: ++ __ li(dst, Operand(src.ToInt32())); ++ break; ++ case Constant::kFloat32: ++ __ li(dst, Operand::EmbeddedNumber(src.ToFloat32())); ++ break; ++ case Constant::kInt64: ++#if V8_ENABLE_WEBASSEMBLY ++ if (RelocInfo::IsWasmReference(src.rmode())) ++ __ li(dst, Operand(src.ToInt64(), src.rmode())); ++ else ++#endif // V8_ENABLE_WEBASSEMBLY ++ __ li(dst, Operand(src.ToInt64())); ++ break; ++ case Constant::kFloat64: ++ __ li(dst, Operand::EmbeddedNumber(src.ToFloat64().value())); ++ break; ++ case Constant::kExternalReference: ++ __ li(dst, src.ToExternalReference()); ++ break; ++ case Constant::kHeapObject: { ++ Handle src_object = src.ToHeapObject(); ++ RootIndex index; ++ if (IsMaterializableFromRoot(src_object, &index)) { ++ __ LoadRoot(dst, index); ++ } else { ++ __ li(dst, src_object); ++ } ++ break; ++ } ++ case Constant::kCompressedHeapObject: ++ UNREACHABLE(); ++ case Constant::kRpoNumber: ++ UNREACHABLE(); // TODO(titzer): loading RPO numbers on sw64. ++ } ++ if (destination->IsStackSlot()) __ Stl(dst, g.ToMemOperand(destination)); ++ } else if (src.type() == Constant::kFloat32) { ++ if (destination->IsFPStackSlot()) { ++ MemOperand dst = g.ToMemOperand(destination); ++ if (base::bit_cast(src.ToFloat32()) == 0) { ++ __ Stl(zero_reg, dst); ++ } else { ++ __ li(kScratchReg, Operand(base::bit_cast(src.ToFloat32()))); ++ __ Stl(kScratchReg, dst); ++ } ++ } else { ++ DCHECK(destination->IsFPRegister()); ++ FloatRegister dst = g.ToSingleRegister(destination); ++ __ Move(dst, src.ToFloat32()); ++ } ++ } else { ++ DCHECK_EQ(Constant::kFloat64, src.type()); ++ DoubleRegister dst = destination->IsFPRegister() ++ ? g.ToDoubleRegister(destination) ++ : kScratchDoubleReg; ++ __ Move(dst, src.ToFloat64().value()); ++ if (destination->IsFPStackSlot()) { ++ __ Fstd(dst, g.ToMemOperand(destination)); ++ } ++ } ++ } else if (source->IsFPRegister()) { ++ MachineRepresentation rep = LocationOperand::cast(source)->representation(); ++ if (rep == MachineRepresentation::kSimd128) { ++ UNREACHABLE(); ++ } else { ++ FPURegister src = g.ToDoubleRegister(source); ++ if (destination->IsFPRegister()) { ++ FPURegister dst = g.ToDoubleRegister(destination); ++ __ Move(dst, src); ++ } else { ++ DCHECK(destination->IsFPStackSlot()); ++ destination->IsDoubleStackSlot() ++ ? __ Fstd(src, g.ToMemOperand(destination)) ++ : __ Fsts(src, g.ToMemOperand(destination)); ++ } ++ } ++ } else if (source->IsFPStackSlot()) { ++ DCHECK(destination->IsFPRegister() || destination->IsFPStackSlot()); ++ MemOperand src = g.ToMemOperand(source); ++ MachineRepresentation rep = LocationOperand::cast(source)->representation(); ++ if (rep == MachineRepresentation::kSimd128) { ++ UNREACHABLE(); ++ } else { ++ if (destination->IsFPRegister()) { ++ source->IsDoubleStackSlot() ++ ? __ Fldd(g.ToDoubleRegister(destination), src) ++ : __ Flds(g.ToFloatRegister(destination), src); ++ } else { ++ DCHECK(destination->IsFPStackSlot()); ++ FPURegister temp = kScratchDoubleReg; ++ source->IsDoubleStackSlot() ? __ Fldd(temp, src) : __ Flds(temp, src); ++ destination->IsDoubleStackSlot() ++ ? __ Fstd(temp, g.ToMemOperand(destination)) ++ : __ Fsts(temp, g.ToMemOperand(destination)); ++ } ++ } ++ } else { ++ UNREACHABLE(); ++ } ++} ++ ++void CodeGenerator::AssembleSwap(InstructionOperand* source, ++ InstructionOperand* destination) { ++ Sw64OperandConverter g(this, nullptr); ++ // Dispatch on the source and destination operand kinds. Not all ++ // combinations are possible. ++ if (source->IsRegister()) { ++ // Register-register. ++ Register temp = kScratchReg; ++ Register src = g.ToRegister(source); ++ if (destination->IsRegister()) { ++ Register dst = g.ToRegister(destination); ++ __ Move(temp, src); ++ __ Move(src, dst); ++ __ Move(dst, temp); ++ } else { ++ DCHECK(destination->IsStackSlot()); ++ MemOperand dst = g.ToMemOperand(destination); ++ __ mov(temp, src); ++ __ Ldl(src, dst); ++ __ Stl(temp, dst); ++ } ++ } else if (source->IsStackSlot()) { ++ DCHECK(destination->IsStackSlot()); ++ Register temp_0 = kScratchReg; ++ Register temp_1 = kScratchReg2; ++ MemOperand src = g.ToMemOperand(source); ++ MemOperand dst = g.ToMemOperand(destination); ++ __ Ldl(temp_0, src); ++ __ Ldl(temp_1, dst); ++ __ Stl(temp_0, dst); ++ __ Stl(temp_1, src); ++ } else if (source->IsFPRegister()) { ++ MachineRepresentation rep = LocationOperand::cast(source)->representation(); ++ if (rep == MachineRepresentation::kSimd128) { ++ UNREACHABLE(); ++ } else { ++ FPURegister temp = kScratchDoubleReg; ++ FPURegister src = g.ToDoubleRegister(source); ++ if (destination->IsFPRegister()) { ++ FPURegister dst = g.ToDoubleRegister(destination); ++ __ Move(temp, src); ++ __ Move(src, dst); ++ __ Move(dst, temp); ++ } else { ++ DCHECK(destination->IsFPStackSlot()); ++ MemOperand dst = g.ToMemOperand(destination); ++ __ Move(temp, src); ++ destination->IsDoubleStackSlot() ? __ Fldd(src, dst) ++ : __ Flds(src, dst); ++ source->IsDoubleRegister() ? __ Fstd(temp, dst) : __ Fsts(temp, dst); ++ } ++ } ++ } else if (source->IsFPStackSlot()) { ++ DCHECK(destination->IsFPStackSlot()); ++ Register temp_0 = kScratchReg; ++ MemOperand src0 = g.ToMemOperand(source); ++ MemOperand src1(src0.rm(), src0.offset() + kInt64Size); ++ MemOperand dst0 = g.ToMemOperand(destination); ++ MemOperand dst1(dst0.rm(), dst0.offset() + kInt64Size); ++ MachineRepresentation rep = LocationOperand::cast(source)->representation(); ++ if (rep == MachineRepresentation::kSimd128) { ++ UNREACHABLE(); ++ } else { ++ FPURegister temp_1 = kScratchDoubleReg; ++ __ Fldd(temp_1, dst0); // Save destination in temp_1. ++ __ Ldl(temp_0, src0); // Then use temp_0 to copy source to destination. ++ __ Fstd(temp_1, src0); ++ __ Stl(temp_0, dst0); ++ } ++ } else { ++ // No other combinations are possible. ++ UNREACHABLE(); ++ } ++} ++ ++void CodeGenerator::AssembleJumpTable(Label** targets, size_t target_count) { ++ // On 64-bit SW64 we emit the jump tables inline. ++ UNREACHABLE(); ++} ++ ++#undef ASSEMBLE_ATOMIC_LOAD_INTEGER ++#undef ASSEMBLE_ATOMIC_STORE_INTEGER ++#undef ASSEMBLE_ATOMIC_BINOP ++#undef ASSEMBLE_ATOMIC_BINOP_EXT ++#undef ASSEMBLE_ATOMIC_EXCHANGE_INTEGER ++#undef ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT ++#undef ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER ++#undef ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT ++#undef ASSEMBLE_IEEE754_BINOP ++#undef ASSEMBLE_IEEE754_UNOP ++#undef ASSEMBLE_F64X2_ARITHMETIC_BINOP ++ ++#undef TRACE_MSG ++#undef TRACE_UNIMPL ++#undef __ ++ ++} // namespace compiler ++} // namespace internal ++} // namespace v8 +diff --git a/deps/v8/src/compiler/backend/sw64/instruction-codes-sw64.h b/deps/v8/src/compiler/backend/sw64/instruction-codes-sw64.h +new file mode 100644 +index 00000000..56b7673d +--- /dev/null ++++ b/deps/v8/src/compiler/backend/sw64/instruction-codes-sw64.h +@@ -0,0 +1,418 @@ ++// Copyright 2014 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_COMPILER_BACKEND_SW64_INSTRUCTION_CODES_SW64_H_ ++#define V8_COMPILER_BACKEND_SW64_INSTRUCTION_CODES_SW64_H_ ++ ++namespace v8 { ++namespace internal { ++namespace compiler { ++ ++// SW64-specific opcodes that specify which assembly sequence to emit. ++// Most opcodes specify a single instruction. ++ ++#define TARGET_ARCH_OPCODE_LIST(V) \ ++ V(Sw64Addw) \ ++ V(Sw64Addl) \ ++ V(Sw64AddlOvf) \ ++ V(Sw64Subw) \ ++ V(Sw64Subl) \ ++ V(Sw64SublOvf) \ ++ V(Sw64Mulw) \ ++ V(Sw64MulwOvf) \ ++ V(Sw64MullOvf) \ ++ V(Sw64MulwHigh) \ ++ V(Sw64MullHigh) \ ++ V(Sw64MulwHighU) \ ++ V(Sw64MullHighU) \ ++ V(Sw64Mull) \ ++ V(Sw64Divw) \ ++ V(Sw64Divl) \ ++ V(Sw64Divwu) \ ++ V(Sw64Divlu) \ ++ V(Sw64Modw) \ ++ V(Sw64Modl) \ ++ V(Sw64Modwu) \ ++ V(Sw64Modlu) \ ++ V(Sw64Andl) \ ++ V(Sw64Andw) \ ++ V(Sw64Orl) \ ++ V(Sw64Orw) \ ++ V(Sw64Norl) \ ++ V(Sw64Norw) \ ++ V(Sw64Xorl) \ ++ V(Sw64Xorw) \ ++ V(Sw64Ctlzw) \ ++ V(Sw64Lsaw) \ ++ V(Sw64Lsal) \ ++ V(Sw64Sllw) \ ++ V(Sw64Srlw) \ ++ V(Sw64Sraw) \ ++ V(Sw64Extw) \ ++ V(Sw64InsZerow) \ ++ V(Sw64Extl) \ ++ V(Sw64InsZerod) \ ++ V(Sw64Ctlzl) \ ++ V(Sw64Cttzw) \ ++ V(Sw64Cttzl) \ ++ V(Sw64Ctpopw) \ ++ V(Sw64Ctpopl) \ ++ V(Sw64Slll) \ ++ V(Sw64Srll) \ ++ V(Sw64Sral) \ ++ V(Sw64Rolw) \ ++ V(Sw64Roll) \ ++ V(Sw64Mov) \ ++ V(Sw64Tst) \ ++ V(Sw64Cmp) \ ++ V(Sw64Fcmps) \ ++ V(Sw64Fadds) \ ++ V(Sw64Fsubs) \ ++ V(Sw64Fmuls) \ ++ V(Sw64Fdivs) \ ++ V(Sw64Frecs) \ ++ V(Sw64Frecd) \ ++ V(Sw64Fmods) \ ++ V(Sw64Fabss) \ ++ V(Sw64Fnegs) \ ++ V(Sw64Fsqrts) \ ++ V(Sw64Fcmpd) \ ++ V(Sw64Faddd) \ ++ V(Sw64Fsubd) \ ++ V(Sw64Fmuld) \ ++ V(Sw64Fdivd) \ ++ V(Sw64Fmodd) \ ++ V(Sw64Fabsd) \ ++ V(Sw64Fnegd) \ ++ V(Sw64Fsqrtd) \ ++ V(Sw64Float64RoundDown) \ ++ V(Sw64Float64RoundTruncate) \ ++ V(Sw64Float64RoundUp) \ ++ V(Sw64Float64RoundTiesEven) \ ++ V(Sw64Float32RoundDown) \ ++ V(Sw64Float32RoundTruncate) \ ++ V(Sw64Float32RoundUp) \ ++ V(Sw64Float32RoundTiesEven) \ ++ V(Sw64F64ToF32) \ ++ V(Sw64F32ToF64) \ ++ V(Sw64F64ToI32) \ ++ V(Sw64F64ToI32_g) \ ++ V(Sw64F64ToI32_n) \ ++ V(Sw64F64ToI32_p) \ ++ V(Sw64F32ToI32) \ ++ V(Sw64F32ToI32_g) \ ++ V(Sw64F32ToI32_n) \ ++ V(Sw64F32ToI32_p) \ ++ V(Sw64F64ToUI32) \ ++ V(Sw64F32ToUI32) \ ++ V(Sw64F32ToI64) \ ++ V(Sw64F64ToI64) \ ++ V(Sw64F32ToUI64) \ ++ V(Sw64F64ToUI64) \ ++ V(Sw64I32ToF32) \ ++ V(Sw64UI32ToF32) \ ++ V(Sw64I64ToF32) \ ++ V(Sw64UI64ToF32) \ ++ V(Sw64I32ToF64) \ ++ V(Sw64UI32ToF64) \ ++ V(Sw64I64ToF64) \ ++ V(Sw64UI64ToF64) \ ++ V(Sw64Ldb) \ ++ V(Sw64Ldbu) \ ++ V(Sw64Stb) \ ++ V(Sw64Ldh) \ ++ V(Sw64Ldh_u) \ ++ V(Sw64Ldhu) \ ++ V(Sw64Ldhu_u) \ ++ V(Sw64Sth) \ ++ V(Sw64Sth_u) \ ++ V(Sw64Ldl) \ ++ V(Sw64Ldl_u) \ ++ V(Sw64Ldw) \ ++ V(Sw64Ldw_u) \ ++ V(Sw64Ldwu) \ ++ V(Sw64Ldwu_u) \ ++ V(Sw64Stw) \ ++ V(Sw64Stw_u) \ ++ V(Sw64Stl) \ ++ V(Sw64Stl_u) \ ++ V(Sw64Flds) \ ++ V(Sw64Flds_u) \ ++ V(Sw64Fsts) \ ++ V(Sw64Fsts_u) \ ++ V(Sw64Fldd) \ ++ V(Sw64Fldd_u) \ ++ V(Sw64Fstd) \ ++ V(Sw64Fstd_u) \ ++ V(Sw64BitcastDL) \ ++ V(Sw64BitcastLD) \ ++ V(Sw64BitcastSW) \ ++ V(Sw64BitcastWS) \ ++ V(Sw64Float64ExtractLowWord32) \ ++ V(Sw64Float64ExtractHighWord32) \ ++ V(Sw64Float64InsertLowWord32) \ ++ V(Sw64Float64InsertHighWord32) \ ++ V(Sw64Float32Max) \ ++ V(Sw64Float64Max) \ ++ V(Sw64Float32Min) \ ++ V(Sw64Float64Min) \ ++ V(Sw64Float64SilenceNaN) \ ++ V(Sw64Push) \ ++ V(Sw64Peek) \ ++ V(Sw64Poke) \ ++ V(Sw64ByteSwap64) \ ++ V(Sw64ByteSwap32) \ ++ V(Sw64StackClaim) \ ++ V(Sw64Sextb) \ ++ V(Sw64Sexth) \ ++ V(Sw64Memb) \ ++ V(Sw64AssertEqual) \ ++ V(Sw64S128Const) \ ++ V(Sw64S128Zero) \ ++ V(Sw64S128AllOnes) \ ++ V(Sw64I32x4Splat) \ ++ V(Sw64I32x4ExtractLane) \ ++ V(Sw64I32x4ReplaceLane) \ ++ V(Sw64I32x4Add) \ ++ V(Sw64I32x4Sub) \ ++ V(Sw64F64x2Abs) \ ++ V(Sw64F64x2Neg) \ ++ V(Sw64F32x4Splat) \ ++ V(Sw64F32x4ExtractLane) \ ++ V(Sw64F32x4ReplaceLane) \ ++ V(Sw64F32x4SConvertI32x4) \ ++ V(Sw64F32x4UConvertI32x4) \ ++ V(Sw64I32x4Mul) \ ++ V(Sw64I32x4MaxS) \ ++ V(Sw64I32x4MinS) \ ++ V(Sw64I32x4Eq) \ ++ V(Sw64I32x4Ne) \ ++ V(Sw64I32x4Shl) \ ++ V(Sw64I32x4ShrS) \ ++ V(Sw64I32x4ShrU) \ ++ V(Sw64I32x4MaxU) \ ++ V(Sw64I32x4MinU) \ ++ V(Sw64F64x2Sqrt) \ ++ V(Sw64F64x2Add) \ ++ V(Sw64F64x2Sub) \ ++ V(Sw64F64x2Mul) \ ++ V(Sw64F64x2Div) \ ++ V(Sw64F64x2Min) \ ++ V(Sw64F64x2Max) \ ++ V(Sw64F64x2Eq) \ ++ V(Sw64F64x2Ne) \ ++ V(Sw64F64x2Lt) \ ++ V(Sw64F64x2Le) \ ++ V(Sw64F64x2Splat) \ ++ V(Sw64F64x2ExtractLane) \ ++ V(Sw64F64x2ReplaceLane) \ ++ V(Sw64F64x2Pmin) \ ++ V(Sw64F64x2Pmax) \ ++ V(Sw64F64x2Ceil) \ ++ V(Sw64F64x2Floor) \ ++ V(Sw64F64x2Trunc) \ ++ V(Sw64F64x2NearestInt) \ ++ V(Sw64F64x2ConvertLowI32x4S) \ ++ V(Sw64F64x2ConvertLowI32x4U) \ ++ V(Sw64F64x2PromoteLowF32x4) \ ++ V(Sw64I64x2Splat) \ ++ V(Sw64I64x2ExtractLane) \ ++ V(Sw64I64x2ReplaceLane) \ ++ V(Sw64I64x2Add) \ ++ V(Sw64I64x2Sub) \ ++ V(Sw64I64x2Mul) \ ++ V(Sw64I64x2Neg) \ ++ V(Sw64I64x2Shl) \ ++ V(Sw64I64x2ShrS) \ ++ V(Sw64I64x2ShrU) \ ++ V(Sw64I64x2BitMask) \ ++ V(Sw64I64x2Eq) \ ++ V(Sw64I64x2Ne) \ ++ V(Sw64I64x2GtS) \ ++ V(Sw64I64x2GeS) \ ++ V(Sw64I64x2Abs) \ ++ V(Sw64I64x2SConvertI32x4Low) \ ++ V(Sw64I64x2SConvertI32x4High) \ ++ V(Sw64I64x2UConvertI32x4Low) \ ++ V(Sw64I64x2UConvertI32x4High) \ ++ V(Sw64ExtMulLow) \ ++ V(Sw64ExtMulHigh) \ ++ V(Sw64ExtAddPairwise) \ ++ V(Sw64F32x4Abs) \ ++ V(Sw64F32x4Neg) \ ++ V(Sw64F32x4Sqrt) \ ++ V(Sw64F32x4Add) \ ++ V(Sw64F32x4Sub) \ ++ V(Sw64F32x4Mul) \ ++ V(Sw64F32x4Div) \ ++ V(Sw64F32x4Max) \ ++ V(Sw64F32x4Min) \ ++ V(Sw64F32x4Eq) \ ++ V(Sw64F32x4Ne) \ ++ V(Sw64F32x4Lt) \ ++ V(Sw64F32x4Le) \ ++ V(Sw64F32x4Pmin) \ ++ V(Sw64F32x4Pmax) \ ++ V(Sw64F32x4Ceil) \ ++ V(Sw64F32x4Floor) \ ++ V(Sw64F32x4Trunc) \ ++ V(Sw64F32x4NearestInt) \ ++ V(Sw64F32x4DemoteF64x2Zero) \ ++ V(Sw64I32x4SConvertF32x4) \ ++ V(Sw64I32x4UConvertF32x4) \ ++ V(Sw64I32x4Neg) \ ++ V(Sw64I32x4GtS) \ ++ V(Sw64I32x4GeS) \ ++ V(Sw64I32x4GtU) \ ++ V(Sw64I32x4GeU) \ ++ V(Sw64I32x4Abs) \ ++ V(Sw64I32x4BitMask) \ ++ V(Sw64I32x4DotI16x8S) \ ++ V(Sw64I32x4TruncSatF64x2SZero) \ ++ V(Sw64I32x4TruncSatF64x2UZero) \ ++ V(Sw64I16x8Splat) \ ++ V(Sw64I16x8ExtractLaneU) \ ++ V(Sw64I16x8ExtractLaneS) \ ++ V(Sw64I16x8ReplaceLane) \ ++ V(Sw64I16x8Neg) \ ++ V(Sw64I16x8Shl) \ ++ V(Sw64I16x8ShrS) \ ++ V(Sw64I16x8ShrU) \ ++ V(Sw64I16x8Add) \ ++ V(Sw64I16x8AddSatS) \ ++ V(Sw64I16x8Sub) \ ++ V(Sw64I16x8SubSatS) \ ++ V(Sw64I16x8Mul) \ ++ V(Sw64I16x8MaxS) \ ++ V(Sw64I16x8MinS) \ ++ V(Sw64I16x8Eq) \ ++ V(Sw64I16x8Ne) \ ++ V(Sw64I16x8GtS) \ ++ V(Sw64I16x8GeS) \ ++ V(Sw64I16x8AddSatU) \ ++ V(Sw64I16x8SubSatU) \ ++ V(Sw64I16x8MaxU) \ ++ V(Sw64I16x8MinU) \ ++ V(Sw64I16x8GtU) \ ++ V(Sw64I16x8GeU) \ ++ V(Sw64I16x8RoundingAverageU) \ ++ V(Sw64I16x8Abs) \ ++ V(Sw64I16x8BitMask) \ ++ V(Sw64I16x8Q15MulRSatS) \ ++ V(Sw64I8x16Splat) \ ++ V(Sw64I8x16ExtractLaneU) \ ++ V(Sw64I8x16ExtractLaneS) \ ++ V(Sw64I8x16ReplaceLane) \ ++ V(Sw64I8x16Neg) \ ++ V(Sw64I8x16Shl) \ ++ V(Sw64I8x16ShrS) \ ++ V(Sw64I8x16Add) \ ++ V(Sw64I8x16AddSatS) \ ++ V(Sw64I8x16Sub) \ ++ V(Sw64I8x16SubSatS) \ ++ V(Sw64I8x16MaxS) \ ++ V(Sw64I8x16MinS) \ ++ V(Sw64I8x16Eq) \ ++ V(Sw64I8x16Ne) \ ++ V(Sw64I8x16GtS) \ ++ V(Sw64I8x16GeS) \ ++ V(Sw64I8x16ShrU) \ ++ V(Sw64I8x16AddSatU) \ ++ V(Sw64I8x16SubSatU) \ ++ V(Sw64I8x16MaxU) \ ++ V(Sw64I8x16MinU) \ ++ V(Sw64I8x16GtU) \ ++ V(Sw64I8x16GeU) \ ++ V(Sw64I8x16RoundingAverageU) \ ++ V(Sw64I8x16Abs) \ ++ V(Sw64I8x16Popcnt) \ ++ V(Sw64I8x16BitMask) \ ++ V(Sw64S128And) \ ++ V(Sw64S128Or) \ ++ V(Sw64S128Xor) \ ++ V(Sw64S128Not) \ ++ V(Sw64S128Select) \ ++ V(Sw64S128AndNot) \ ++ V(Sw64I64x2AllTrue) \ ++ V(Sw64I32x4AllTrue) \ ++ V(Sw64I16x8AllTrue) \ ++ V(Sw64I8x16AllTrue) \ ++ V(Sw64V128AnyTrue) \ ++ V(Sw64S32x4InterleaveRight) \ ++ V(Sw64S32x4InterleaveLeft) \ ++ V(Sw64S32x4PackEven) \ ++ V(Sw64S32x4PackOdd) \ ++ V(Sw64S32x4InterleaveEven) \ ++ V(Sw64S32x4InterleaveOdd) \ ++ V(Sw64S32x4Shuffle) \ ++ V(Sw64S16x8InterleaveRight) \ ++ V(Sw64S16x8InterleaveLeft) \ ++ V(Sw64S16x8PackEven) \ ++ V(Sw64S16x8PackOdd) \ ++ V(Sw64S16x8InterleaveEven) \ ++ V(Sw64S16x8InterleaveOdd) \ ++ V(Sw64S16x4Reverse) \ ++ V(Sw64S16x2Reverse) \ ++ V(Sw64S8x16InterleaveRight) \ ++ V(Sw64S8x16InterleaveLeft) \ ++ V(Sw64S8x16PackEven) \ ++ V(Sw64S8x16PackOdd) \ ++ V(Sw64S8x16InterleaveEven) \ ++ V(Sw64S8x16InterleaveOdd) \ ++ V(Sw64I8x16Shuffle) \ ++ V(Sw64I8x16Swizzle) \ ++ V(Sw64S8x16Concat) \ ++ V(Sw64S8x8Reverse) \ ++ V(Sw64S8x4Reverse) \ ++ V(Sw64S8x2Reverse) \ ++ V(Sw64S128LoadSplat) \ ++ V(Sw64SwsaLd) \ ++ V(Sw64SwsaSt) \ ++ V(Sw64I32x4SConvertI16x8Low) \ ++ V(Sw64I32x4SConvertI16x8High) \ ++ V(Sw64I32x4UConvertI16x8Low) \ ++ V(Sw64I32x4UConvertI16x8High) \ ++ V(Sw64I16x8SConvertI8x16Low) \ ++ V(Sw64I16x8SConvertI8x16High) \ ++ V(Sw64I16x8SConvertI32x4) \ ++ V(Sw64I16x8UConvertI32x4) \ ++ V(Sw64I16x8UConvertI8x16Low) \ ++ V(Sw64I16x8UConvertI8x16High) \ ++ V(Sw64I8x16SConvertI16x8) \ ++ V(Sw64I8x16UConvertI16x8) \ ++ V(Sw64StoreCompressTagged) \ ++ V(Sw64Word64AtomicLoadUint64) \ ++ V(Sw64Word64AtomicStoreWord64) \ ++ V(Sw64Word64AtomicAddUint64) \ ++ V(Sw64Word64AtomicSubUint64) \ ++ V(Sw64Word64AtomicAndUint64) \ ++ V(Sw64Word64AtomicOrUint64) \ ++ V(Sw64Word64AtomicXorUint64) \ ++ V(Sw64Word64AtomicExchangeUint64) \ ++ V(Sw64Word64AtomicCompareExchangeUint64) ++ ++// Addressing modes represent the "shape" of inputs to an instruction. ++// Many instructions support multiple addressing modes. Addressing modes ++// are encoded into the InstructionCode of the instruction and tell the ++// code generator after register allocation which assembler method to call. ++// ++// We use the following local notation for addressing modes: ++// ++// R = register ++// O = register or stack slot ++// D = double register ++// I = immediate (handle, external, int32) ++// MRI = [register + immediate] ++// MRR = [register + register] ++// TODO(plind): Add the new r6 address modes. ++#define TARGET_ADDRESSING_MODE_LIST(V) \ ++ V(MRI) /* [%r0 + K] */ \ ++ V(MRR) /* [%r0 + %r1] */ \ ++ V(Root) /* [%rr + K] */ ++ ++} // namespace compiler ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_COMPILER_SW64_INSTRUCTION_CODES_SW64_H_ +diff --git a/deps/v8/src/compiler/backend/sw64/instruction-scheduler-sw64.cc b/deps/v8/src/compiler/backend/sw64/instruction-scheduler-sw64.cc +new file mode 100644 +index 00000000..1e66f529 +--- /dev/null ++++ b/deps/v8/src/compiler/backend/sw64/instruction-scheduler-sw64.cc +@@ -0,0 +1,1272 @@ ++// Copyright 2015 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/codegen/macro-assembler.h" ++#include "src/compiler/backend/instruction-scheduler.h" ++ ++namespace v8 { ++namespace internal { ++namespace compiler { ++ ++bool InstructionScheduler::SchedulerSupported() { return true; } ++ ++int InstructionScheduler::GetTargetInstructionFlags( ++ const Instruction* instr) const { ++ switch (instr->arch_opcode()) { ++ case kSw64Addw: ++ case kSw64Addl: ++ case kSw64AddlOvf: ++ case kSw64Subw: ++ case kSw64Subl: ++ case kSw64SublOvf: ++ case kSw64Mulw: ++ case kSw64MulwOvf: ++ case kSw64MullOvf: ++ case kSw64MullHighU: ++ case kSw64MulwHigh: ++ case kSw64MullHigh: ++ case kSw64MulwHighU: ++ case kSw64Mull: ++ case kSw64Divw: ++ case kSw64Divl: ++ case kSw64Divwu: ++ case kSw64Divlu: ++ case kSw64Modw: ++ case kSw64Modl: ++ case kSw64Modwu: ++ case kSw64Modlu: ++ case kSw64Andl: ++ case kSw64Andw: ++ case kSw64Orl: ++ case kSw64Orw: ++ case kSw64Norl: ++ case kSw64Norw: ++ case kSw64Xorl: ++ case kSw64Xorw: ++ case kSw64Ctlzw: ++ case kSw64Lsaw: ++ case kSw64Lsal: ++ case kSw64Sllw: ++ case kSw64Srlw: ++ case kSw64Sraw: ++ case kSw64Extw: ++ case kSw64InsZerow: ++ case kSw64Extl: ++ case kSw64InsZerod: ++ case kSw64Ctlzl: ++ case kSw64Cttzw: ++ case kSw64Cttzl: ++ ++ case kSw64Ctpopw: ++ case kSw64Ctpopl: ++ case kSw64Slll: ++ case kSw64Srll: ++ case kSw64Sral: ++ ++ case kSw64Rolw: ++ case kSw64Roll: ++ case kSw64Mov: ++ case kSw64Tst: ++ case kSw64Cmp: ++ case kSw64Fcmps: ++ case kSw64Fadds: ++ case kSw64Fsubs: ++ case kSw64Fmuls: ++ case kSw64Fdivs: ++ case kSw64Frecs: ++ case kSw64Frecd: ++ case kSw64Fabss: ++ case kSw64Fnegs: ++ case kSw64Fsqrts: ++ case kSw64Fcmpd: ++ case kSw64Faddd: ++ case kSw64Fsubd: ++ case kSw64Fmuld: ++ case kSw64Fdivd: ++ case kSw64Fabsd: ++ case kSw64Fnegd: ++ case kSw64Fsqrtd: ++ ++ case kSw64Float64RoundDown: ++ case kSw64Float64RoundTruncate: ++ case kSw64Float64RoundUp: ++ case kSw64Float64RoundTiesEven: ++ case kSw64Float32RoundDown: ++ case kSw64Float32RoundTruncate: ++ case kSw64Float32RoundUp: ++ case kSw64Float32RoundTiesEven: ++ ++ case kSw64F64ToF32: ++ case kSw64F32ToF64: ++ case kSw64F64ToI32: ++ case kSw64F64ToI32_g: ++ case kSw64F64ToI32_n: ++ case kSw64F64ToI32_p: ++ case kSw64F32ToI32: ++ case kSw64F32ToI32_g: ++ case kSw64F32ToI32_n: ++ case kSw64F32ToI32_p: ++ ++ case kSw64F32ToI64: ++ case kSw64F64ToI64: ++ case kSw64F64ToUI32: ++ case kSw64F32ToUI32: ++ case kSw64F32ToUI64: ++ case kSw64F64ToUI64: ++ ++ case kSw64I32ToF64: ++ case kSw64I64ToF32: ++ case kSw64I32ToF32: ++ case kSw64UI32ToF32: ++ case kSw64UI64ToF32: ++ case kSw64I64ToF64: ++ case kSw64UI32ToF64: ++ case kSw64UI64ToF64: ++ ++ case kSw64BitcastDL: ++ case kSw64BitcastLD: ++ case kSw64BitcastSW: ++ case kSw64BitcastWS: ++ case kSw64Float64ExtractLowWord32: ++ case kSw64Float64ExtractHighWord32: ++ case kSw64Float64InsertLowWord32: ++ case kSw64Float64InsertHighWord32: ++ case kSw64Float32Max: ++ case kSw64Float64Max: ++ case kSw64Float32Min: ++ case kSw64Float64Min: ++ case kSw64Float64SilenceNaN: ++ ++ case kSw64ByteSwap64: ++ case kSw64ByteSwap32: ++ ++ case kSw64Sextb: ++ case kSw64Sexth: ++ case kSw64AssertEqual: ++ return kNoOpcodeFlags; ++ case kSw64Ldb: ++ case kSw64Ldbu: ++ case kSw64Ldh: ++ case kSw64Ldh_u: ++ case kSw64Ldhu: ++ case kSw64Ldhu_u: ++ case kSw64Ldl: ++ case kSw64Ldl_u: ++ case kSw64Ldw: ++ case kSw64Ldw_u: ++ case kSw64Ldwu: ++ case kSw64Ldwu_u: ++ case kSw64Flds: ++ case kSw64Flds_u: ++ case kSw64Fldd: ++ case kSw64Fldd_u: ++ case kSw64Peek: ++ case kSw64SwsaLd: ++ case kSw64Word64AtomicLoadUint64: ++ return kIsLoadOperation; ++ case kSw64Fmods: ++ case kSw64Fmodd: ++ case kSw64Stb: ++ case kSw64Sth: ++ case kSw64Sth_u: ++ case kSw64Stw: ++ case kSw64Stw_u: ++ case kSw64Stl: ++ case kSw64Stl_u: ++ case kSw64Fsts: ++ case kSw64Fsts_u: ++ case kSw64Fstd: ++ case kSw64Fstd_u: ++ case kSw64Push: ++ case kSw64Word64AtomicStoreWord64: ++ case kSw64Word64AtomicAddUint64: ++ case kSw64Word64AtomicSubUint64: ++ case kSw64Word64AtomicAndUint64: ++ case kSw64Word64AtomicOrUint64: ++ case kSw64Word64AtomicXorUint64: ++ case kSw64Word64AtomicExchangeUint64: ++ case kSw64Word64AtomicCompareExchangeUint64: ++ case kSw64Poke: ++ case kSw64StackClaim: ++ return kHasSideEffect; ++ default: ++ return kHasSideEffect; ++ } ++} ++ ++enum Latency { ++ FSELEQ = 2, ++ FSELNE = 2, ++ FSELLT = 2, ++ FSELLE = 2, ++ FSELGT = 2, ++ FSELGE = 2, ++ ++ FCPYS = 2, ++ FCPYSE = 2, ++ FCPYSN = 2, ++ ++ SLLOW = 3, // 256 sll ++ SRLOW = 3, // 256 srl ++ SRAOW = 3, // core4 ++ ++ BRANCH = 4, // sw ?? core4? ++ RINT_S = 4, // Estimated. core4? ++ RINT_D = 4, // Estimated. core4? ++ ++ LDBU = 4, ++ LDHU = 4, ++ LDW = 4, ++ LDL = 4, ++ LDL_U = 4, ++ STB = 4, ++ STH = 4, ++ STW = 4, ++ STL = 4, ++ STL_U = 4, ++ ++ IFMOVS = 4, ++ IFMOVD = 4, ++ FIMOVS = 4, ++ FIMOVD = 4, ++ ++ LDWE = 4, ++ LDSE = 4, ++ LDDE = 4, ++ VLDS = 4, ++ FLDS = 4, ++ FLDD = 4, ++ PRI_LD = 4, ++ PRI_ST = 4, ++ FSTS = 4, ++ FSTD = 4, ++ ++ MULW = 3, ++ MULL = 3, ++ UMULH = 3, ++ ++ FCVTSD = 4, ++ FCVTDS = 4, ++ FCVTDL = 4, ++ FCVTWL = 4, ++ FCVTLW = 4, ++ FCVTLS = 4, ++ FCVTLD = 4, ++ FCVTDL_Z = 4, ++ FCVTDL_P = 4, ++ FCVTDL_G = 4, ++ FCVTDL_N = 4, ++ ++ FMAS = 6, ++ FMAD = 6, ++ FMSS = 6, ++ FMSD = 6, ++ FNMAS = 6, ++ FNMAD = 6, ++ FNMSS = 6, ++ FNMSD = 6, ++ ++ FADDS = 6, ++ FADDD = 6, ++ FSUBS = 6, ++ FSUBD = 6, ++ FMULS = 6, ++ FMULD = 6, ++ ++ FCMPDEQ = 6, ++ FCMPDLE = 6, ++ FCMPDLT = 6, ++ FCMPDUN = 6, ++ ++ FDIVS = 19, ++ FDIVD = 19, ++ FSQRTS = 19, ++ FSQRTD = 19, ++ ++ FRECS = 3, ++ FRECD = 3, ++ ++ CMOVDL = 4, ++ CMOVDL_G = 4, ++ CMOVDL_P = 4, ++ CMOVDL_Z = 4, ++ CMOVDL_N = 4, ++ CMOVDLU = 4, ++ CMOVDLU_G = 4, ++ CMOVDLU_P = 4, ++ CMOVDLU_Z = 4, ++ CMOVDLU_N = 4, ++ CMOVDWU = 4, ++ CMOVDWU_G = 4, ++ CMOVDWU_P = 4, ++ CMOVDWU_Z = 4, ++ CMOVDWU_N = 4, ++ CMOVDW = 4, ++ CMOVDW_G = 4, ++ CMOVDW_P = 4, ++ CMOVDW_Z = 4, ++ CMOVDW_N = 4, ++ ++ CMOVLS = 4, ++ CMOVWS = 4, ++ CMOVLD = 4, ++ CMOVWD = 4, ++ CMOVULS = 4, ++ CMOVUWS = 4, ++ CMOVULD = 4, ++ CMOVUWD = 4, ++ ++ FCVTSH = 2, ++ FCVTHS = 2, ++ ++ FBEQ = 1, ++ FBGE = 1, ++ FBGT = 1, ++ FBLE = 1, ++ FBLT = 1, ++ FBNE = 1, ++ ++ RFPCR = 1, ++ WFPCR = 1, ++ SETFPEC0 = 1, ++ SETFPEC1 = 1, ++ SETFPEC2 = 1, ++ SETFPEC3 = 1, ++ ++}; ++ ++int DadduLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 1; ++ } else { ++ return 2; // Estimated max. ++ } ++} ++ ++int SrlwLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 4; ++ } else { ++ return 3; // Estimated max. ++ } ++} ++ ++int DsubuLatency(bool is_operand_register = true) { ++ return DadduLatency(is_operand_register); ++} ++ ++int AndLatency(bool is_operand_register = true) { ++ return DadduLatency(is_operand_register); ++} ++ ++int OrLatency(bool is_operand_register = true) { ++ return DadduLatency(is_operand_register); ++} ++ ++int NorLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 2; ++ } else { ++ return 3; // Estimated max. ++ } ++} ++ ++int XorLatency(bool is_operand_register = true) { ++ return DadduLatency(is_operand_register); ++} ++ ++int MulLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return Latency::MULW; ++ } else { ++ return Latency::MULW + 1; ++ } ++} ++ ++int DmulLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::MULL; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Mulwh =(li +)mull + sral ++int MulhLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::MULL + 1; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Mulwhu = zapnot + zapnot + mull ++int MulwhuLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::MULL + 2; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Mullh = (li +)umulh + srll + mull + subl + srll +mull +subl ++int DMulhLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::MULL + Latency::MULL + 5; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Divw = ifmovd*2 + fcvtld*2 + fdivd + fcvtdl_z + fimovd ++int DivLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD; ++ } else { ++ return Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + 1; ++ } ++} ++ ++// Divwu = Divw + zapnot * 2 ++int DivuLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + 2; ++ } else { ++ return Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + 2 + 1; ++ } ++} ++ ++// Divl = ifmovd * 2 + fcvtld * 2 + fdivd + fcvtdl_z + fimovd ++int DdivLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Divlu = Divl ++int DdivuLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Modw = Divw + mulw + subw ++int ModLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + Latency::MULW + ++ DadduLatency(is_operand_register); ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Modwu = Modw + zapnot * 2 ++int ModuLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + Latency::MULW + ++ DadduLatency(is_operand_register); ++ ; ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Modl = Modw ++int DmodLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + Latency::MULW + ++ DadduLatency(is_operand_register); ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++// Modlu = Modl ++int DmoduLatency(bool is_operand_register = true) { ++ int latency = 0; ++ latency = Latency::IFMOVD * 2 + Latency::FCVTLD * 2 + Latency::FDIVD + ++ Latency::FCVTDL_Z + Latency::FIMOVD + Latency::MULW + ++ DadduLatency(is_operand_register); ++ if (!is_operand_register) { ++ latency += 1; ++ } ++ return latency; ++} ++ ++int LsalLatency() { ++ // Estimated max. ++ return DadduLatency() + 1; ++} ++ ++int CallLatency() { ++ // Estimated. ++ return DadduLatency(false) + Latency::BRANCH + 5; ++} ++ ++int JumpLatency() { ++ // Estimated max. ++ return 1 + DadduLatency() + Latency::BRANCH + 2; ++} ++ ++int SmiUntagLatency() { return 1; } ++ ++int PrepareForTailCallLatency() { ++ // Estimated max. ++ return 2 * (LsalLatency() + DadduLatency(false)) + 2 + Latency::BRANCH + ++ Latency::BRANCH + 2 * DsubuLatency(false) + 2 + Latency::BRANCH + 1; ++} ++ ++int AssertLatency() { return 1; } ++ ++int PrepareCallCFunctionLatency() { ++ int frame_alignment = MacroAssembler::ActivationFrameAlignment(); ++ if (frame_alignment > kSystemPointerSize) { ++ return 1 + DsubuLatency(false) + AndLatency(false) + 1; ++ } else { ++ return DsubuLatency(false); ++ } ++} ++ ++int AdjustBaseAndOffsetLatency() { ++ return 3; // Estimated max. ++} ++ ++int AlignedMemoryLatency() { return AdjustBaseAndOffsetLatency() + 1; } ++ ++int MultiPushLatency() { ++ int latency = DsubuLatency(false); ++ for (int16_t i = kNumRegisters - 1; i >= 0; i--) { ++ latency++; ++ } ++ return latency; ++} ++ ++int MultiPushFPULatency() { ++ int latency = DsubuLatency(false); ++ for (int16_t i = kNumRegisters - 1; i >= 0; i--) { ++ latency += 4; ++ } ++ return latency; ++} ++ ++int PushCallerSavedLatency(SaveFPRegsMode fp_mode) { ++ int latency = MultiPushLatency(); ++ if (fp_mode == SaveFPRegsMode::kSave) { ++ latency += MultiPushFPULatency(); ++ } ++ return latency; ++} ++ ++int MultiPopLatency() { ++ int latency = DadduLatency(false); ++ for (int16_t i = 0; i < kNumRegisters; i++) { ++ latency++; ++ } ++ return latency; ++} ++ ++int MultiPopFPULatency() { ++ int latency = DadduLatency(false); ++ for (int16_t i = 0; i < kNumRegisters; i++) { ++ latency += 4; ++ } ++ return latency; ++} ++ ++int PopCallerSavedLatency(SaveFPRegsMode fp_mode) { ++ int latency = MultiPopLatency(); ++ if (fp_mode == SaveFPRegsMode::kSave) { ++ latency += MultiPopFPULatency(); ++ } ++ return latency; ++} ++ ++int CallCFunctionHelperLatency() { ++ // Estimated. ++ int latency = AndLatency(false) + Latency::BRANCH + 2 + CallLatency(); ++ if (base::OS::ActivationFrameAlignment() > kSystemPointerSize) { ++ latency++; ++ } else { ++ latency += DadduLatency(false); ++ } ++ return latency; ++} ++ ++int CallCFunctionLatency() { return 1 + CallCFunctionHelperLatency(); } ++ ++int AssembleArchJumpLatency() { ++ // Estimated max. ++ return Latency::BRANCH; ++} ++ ++int AssembleArchLookupSwitchLatency(const Instruction* instr) { ++ int latency = 0; ++ for (size_t index = 2; index < instr->InputCount(); index += 2) { ++ latency += 1 + Latency::BRANCH; ++ } ++ return latency + AssembleArchJumpLatency(); ++} ++ ++int GenerateSwitchTableLatency() { ++ int latency = 0; ++ latency = LsalLatency() + 2; ++ ++ latency += 2; ++ return latency; ++} ++ ++int AssembleArchTableSwitchLatency() { ++ return Latency::BRANCH + GenerateSwitchTableLatency(); ++} ++ ++int DropAndRetLatency() { ++ // Estimated max. ++ return DadduLatency(false) + JumpLatency(); ++} ++ ++int AssemblerReturnLatency() { ++ // Estimated max. ++ return DadduLatency(false) + MultiPopLatency() + MultiPopFPULatency() + ++ Latency::BRANCH + DadduLatency() + 1 + DropAndRetLatency(); ++} ++ ++int TryInlineTruncateDoubleToILatency() { ++ return 2 + Latency::FCVTDL_Z + Latency::FCVTLW + Latency::FIMOVS + 1 + 2 + ++ AndLatency(false) + Latency::BRANCH; ++} ++ ++int CallStubDelayedLatency() { return 1 + CallLatency(); } ++ ++int TruncateDoubleToIDelayedLatency() { ++ // TODO(sw64): This no longer reflects how TruncateDoubleToI is called. ++ return TryInlineTruncateDoubleToILatency() + 1 + DsubuLatency(false) + 4 + ++ CallStubDelayedLatency() + DadduLatency(false) + 1; ++} ++ ++int CheckPageFlagLatency() { ++ return AndLatency(false) + AlignedMemoryLatency() + AndLatency(false) + ++ Latency::BRANCH; ++} ++ ++int SltuLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 1; ++ } else { ++ return 2; // Estimated max. ++ } ++} ++ ++int BranchShortHelperR6Latency() { ++ return 2; // Estimated max. ++} ++ ++int BranchShortHelperLatency() { ++ return SltuLatency() + 2; // Estimated max. ++} ++ ++int BranchShortLatency() { return BranchShortHelperR6Latency(); } ++ ++int MoveLatency() { return 1; } ++ ++int MovToFloatParametersLatency() { return 2 * MoveLatency(); } ++ ++int MovFromFloatResultLatency() { return MoveLatency(); } ++ ++int DaddOverflowLatency() { ++ // Estimated max. ++ return 6; ++} ++ ++int SublOverflowLatency() { ++ // Estimated max. ++ return 6; ++} ++ ++int MulwOverflowLatency() { ++ // Estimated max. ++ return MulLatency() + MulhLatency() + 2; ++} ++ ++// Ctlzw = addw + ctlz + subl + sellt ++int CtlzwLatency() { return 4; } ++ ++// Ctlzl = ctlz ++int CtlzlLatency() { return 1; } ++ ++// Cttzw = cttz + subl + selge ++int CttzwLatency() { return 3; } ++ ++// Cttzl = cttz ++int CttzlLatency() { return 1; } ++ ++// popcnt = zapnot + ctpop ++int CtpopwLatency() { return 2; } ++ ++// Ctpopl = ctpop ++int CtpoplLatency() { return 1; } ++ ++// Ext TODO ++int ExtLatency() { return 1; } ++ ++// Ins = li + and_ + slll * 2 + bic + bis + addw ++int InsLatency() { return 7; } ++ ++// Dins = Ins - addw ++int DinsLatency() { return 6; } ++ ++// Rolw = and_ + ldi + subw + and_ + zapnot + srll + addw + and_ + slll + addw + ++// bis + addw ++int RolwLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 11; ++ } else { ++ return 7; ++ } ++} ++ ++int RollLatency(bool is_operand_register = true) { ++ if (is_operand_register) { ++ return 5; ++ } else { ++ return 3; ++ } ++} ++ ++int CompareFLatency() { return 1; } ++ ++int CompareIsNanFLatency() { return CompareFLatency(); } ++ ++int Float64RoundLatency() { return 32; } ++ ++int Float32RoundLatency() { return 36; } ++ ++int PushLatency() { return DadduLatency() + AlignedMemoryLatency(); } ++ ++int ByteSwapSignedLatency() { return 2; } ++ ++int LlLatency(int offset) { ++ bool is_one_instruction = is_int9(offset); ++ if (is_one_instruction) { ++ return 1; ++ } else { ++ return 3; ++ } ++} ++ ++int ExtractBitsLatency(bool sign_extend, int size) { ++ int latency = 2; ++ if (sign_extend) { ++ switch (size) { ++ case 8: ++ case 16: ++ case 32: ++ latency += 1; ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ } ++ return latency; ++} ++ ++int InsertBitsLatency() { return 2 + DsubuLatency(false) + 2; } ++ ++int ScLatency(int offset) { ++ bool is_one_instruction = is_int9(offset); ++ if (is_one_instruction) { ++ return 1; ++ } else { ++ return 3; ++ } ++} ++ ++int Word32AtomicExchangeLatency(bool sign_extend, int size) { ++ return DadduLatency(false) + 1 + DsubuLatency() + 2 + LlLatency(0) + ++ ExtractBitsLatency(sign_extend, size) + InsertBitsLatency() + ++ ScLatency(0) + BranchShortLatency() + 1; ++} ++ ++int Word32AtomicCompareExchangeLatency(bool sign_extend, int size) { ++ return 2 + DsubuLatency() + 2 + LlLatency(0) + ++ ExtractBitsLatency(sign_extend, size) + InsertBitsLatency() + ++ ScLatency(0) + BranchShortLatency() + 1; ++} ++ ++int InstructionScheduler::GetInstructionLatency(const Instruction* instr) { ++ switch (instr->arch_opcode()) { ++ case kArchCallCodeObject: ++#if V8_ENABLE_WEBASSEMBLY ++ case kArchCallWasmFunction: ++#endif // V8_ENABLE_WEBASSEMBLY ++ return CallLatency(); ++ case kArchTailCallCodeObject: ++#if V8_ENABLE_WEBASSEMBLY ++ case kArchTailCallWasm: ++#endif // V8_ENABLE_WEBASSEMBLY ++ case kArchTailCallAddress: ++ return JumpLatency(); ++ case kArchCallJSFunction: { ++ int latency = 0; ++ if (v8_flags.debug_code) { ++ latency = 1 + AssertLatency(); ++ } ++ return latency + 1 + DadduLatency(false) + CallLatency(); ++ } ++ case kArchPrepareCallCFunction: ++ return PrepareCallCFunctionLatency(); ++ case kArchSaveCallerRegisters: { ++ auto fp_mode = ++ static_cast(MiscField::decode(instr->opcode())); ++ return PushCallerSavedLatency(fp_mode); ++ } ++ case kArchRestoreCallerRegisters: { ++ auto fp_mode = ++ static_cast(MiscField::decode(instr->opcode())); ++ return PopCallerSavedLatency(fp_mode); ++ } ++ case kArchPrepareTailCall: ++ return 2; ++ case kArchCallCFunction: ++ return CallCFunctionLatency(); ++ case kArchJmp: ++ return AssembleArchJumpLatency(); ++ case kArchTableSwitch: ++ return AssembleArchTableSwitchLatency(); ++ case kArchAbortCSADcheck: ++ return CallLatency() + 1; ++ case kArchDebugBreak: ++ return 1; ++ case kArchComment: ++ case kArchNop: ++ case kArchThrowTerminator: ++ case kArchDeoptimize: ++ return 0; ++ case kArchRet: ++ return AssemblerReturnLatency(); ++ case kArchFramePointer: ++ return 1; ++ case kArchParentFramePointer: ++ return AlignedMemoryLatency(); ++ case kArchTruncateDoubleToI: ++ return TruncateDoubleToIDelayedLatency(); ++ case kArchStoreWithWriteBarrier: ++ return DadduLatency() + 1 + CheckPageFlagLatency(); ++ case kArchStackSlot: ++ return DadduLatency(false) + AndLatency(false) + AssertLatency() + ++ DadduLatency(false) + AndLatency(false) + BranchShortLatency() + ++ 1 + DsubuLatency() + DadduLatency(); ++ case kIeee754Float64Acos: ++ case kIeee754Float64Acosh: ++ case kIeee754Float64Asin: ++ case kIeee754Float64Asinh: ++ case kIeee754Float64Atan: ++ case kIeee754Float64Atanh: ++ case kIeee754Float64Atan2: ++ case kIeee754Float64Cos: ++ case kIeee754Float64Cosh: ++ case kIeee754Float64Cbrt: ++ case kIeee754Float64Exp: ++ case kIeee754Float64Expm1: ++ case kIeee754Float64Log: ++ case kIeee754Float64Log1p: ++ case kIeee754Float64Log2: ++ case kIeee754Float64Log10: ++ case kIeee754Float64Pow: ++ case kIeee754Float64Sin: ++ case kIeee754Float64Sinh: ++ case kIeee754Float64Tan: ++ case kIeee754Float64Tanh: ++ return PrepareCallCFunctionLatency() + MovToFloatParametersLatency() + ++ CallCFunctionLatency() + MovFromFloatResultLatency(); ++ case kSw64Addw: ++ case kSw64Addl: ++ return DadduLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64AddlOvf: ++ return DaddOverflowLatency(); ++ case kSw64Subw: ++ case kSw64Subl: ++ return DsubuLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64SublOvf: ++ return SublOverflowLatency(); ++ case kSw64Mulw: ++ return MulLatency(); ++ case kSw64MulwOvf: ++ case kSw64MullOvf: ++ return MulwOverflowLatency(); ++ case kSw64MulwHigh: ++ return MulhLatency(); ++ case kSw64MulwHighU: ++ return MulwhuLatency(); ++ case kSw64MullHigh: ++ return DMulhLatency(); ++ case kSw64Divw: ++ return DivLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Divwu: ++ return DivuLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Modw: ++ return ModLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Modwu: ++ return ModuLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Mull: ++ return DmulLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Divl: ++ return ModLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Divlu: ++ return DdivLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Modl: ++ return DmodLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Modlu: ++ return DmodLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Lsal: ++ case kSw64Lsaw: ++ return LsalLatency(); ++ case kSw64Andl: ++ return AndLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Andw: { ++ bool is_operand_register = instr->InputAt(1)->IsRegister(); ++ int latency = AndLatency(is_operand_register); ++ if (is_operand_register) { ++ return latency + 2; ++ } else { ++ return latency + 1; ++ } ++ } ++ case kSw64Orl: ++ return OrLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Orw: { ++ bool is_operand_register = instr->InputAt(1)->IsRegister(); ++ int latency = OrLatency(is_operand_register); ++ if (is_operand_register) { ++ return latency + 2; ++ } else { ++ return latency + 1; ++ } ++ } ++ case kSw64Norl: ++ return NorLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Norw: { ++ bool is_operand_register = instr->InputAt(1)->IsRegister(); ++ int latency = NorLatency(is_operand_register); ++ if (is_operand_register) { ++ return latency + 2; ++ } else { ++ return latency + 1; ++ } ++ } ++ case kSw64Xorl: ++ return XorLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Xorw: { ++ bool is_operand_register = instr->InputAt(1)->IsRegister(); ++ int latency = XorLatency(is_operand_register); ++ if (is_operand_register) { ++ return latency + 2; ++ } else { ++ return latency + 1; ++ } ++ } ++ case kSw64Ctlzw: ++ return CtlzwLatency(); ++ case kSw64Ctlzl: ++ return CtlzlLatency(); ++ case kSw64Cttzw: ++ return CttzwLatency(); ++ case kSw64Cttzl: ++ return CttzlLatency(); ++ case kSw64Ctpopw: ++ return CtpopwLatency(); ++ case kSw64Ctpopl: ++ return CtpoplLatency(); ++ case kSw64Sllw: ++ return 1; ++ case kSw64Srlw: ++ case kSw64Sraw: ++ return 2; ++ case kSw64Extw: ++ case kSw64Extl: ++ return ExtLatency(); ++ case kSw64InsZerow: ++ return InsLatency(); ++ case kSw64InsZerod: ++ return DinsLatency(); ++ case kSw64Slll: ++ case kSw64Srll: ++ case kSw64Sral: ++ return 1; ++ case kSw64Rolw: ++ return RolwLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Roll: ++ return RollLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Tst: ++ return AndLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Mov: ++ return 1; ++ case kSw64Fcmps: ++ return CompareFLatency(); ++ case kSw64Fadds: ++ case kSw64Fsubs: ++ case kSw64Fmuls: ++ case kSw64Fdivs: ++ case kSw64Frecs: ++ case kSw64Frecd: ++ return 1; ++ case kSw64Fmods: ++ return PrepareCallCFunctionLatency() + MovToFloatParametersLatency() + ++ CallCFunctionLatency() + MovFromFloatResultLatency(); ++ case kSw64Fabss: ++ return Latency::FCPYS; ++ case kSw64Fnegs: ++ return 1; ++ case kSw64Fsqrts: ++ return Latency::FSQRTS; ++ case kSw64Fcmpd: ++ return CompareFLatency(); ++ case kSw64Faddd: ++ case kSw64Fsubd: ++ case kSw64Fmuld: ++ case kSw64Fdivd: ++ return 1; ++ case kSw64Fmodd: ++ return PrepareCallCFunctionLatency() + MovToFloatParametersLatency() + ++ CallCFunctionLatency() + MovFromFloatResultLatency(); ++ case kSw64Fabsd: ++ return Latency::FCPYS; ++ case kSw64Fnegd: ++ return 1; ++ case kSw64Fsqrtd: ++ return Latency::FSQRTD; ++ case kSw64Float64RoundDown: ++ case kSw64Float64RoundTruncate: ++ case kSw64Float64RoundUp: ++ case kSw64Float64RoundTiesEven: ++ return Float64RoundLatency(); // TODO ++ case kSw64Float32RoundDown: ++ case kSw64Float32RoundTruncate: ++ case kSw64Float32RoundUp: ++ case kSw64Float32RoundTiesEven: ++ return Float32RoundLatency(); // TODO ++ /* case kSw64Float32Max: ++ return Float32MaxLatency(); ++ case kSw64Float64Max: ++ return Float64MaxLatency(); ++ case kSw64Float32Min: ++ return Float32MinLatency(); ++ case kSw64Float64Min: ++ return Float64MinLatency();*/ ++ case kSw64Float64SilenceNaN: ++ return Latency::FSUBD; ++ case kSw64F64ToF32: ++ return Latency::FCVTDS; ++ case kSw64F32ToF64: ++ return Latency::FCVTSD; ++ case kSw64I32ToF64: ++ return Latency::IFMOVD + Latency::FCVTLD; ++ case kSw64I32ToF32: ++ return Latency::IFMOVS + Latency::FCVTWL + Latency::FCVTLS; ++ case kSw64UI32ToF32: ++ return 1 + Latency::FIMOVS; ++ case kSw64I64ToF32: ++ return Latency::IFMOVD + Latency::FCVTLS; ++ case kSw64I64ToF64: ++ return Latency::IFMOVD + Latency::FCVTLD; ++ case kSw64UI32ToF64: ++ return 1 + Latency::FIMOVS; ++ case kSw64UI64ToF64: ++ return 1 + Latency::FIMOVD; ++ case kSw64UI64ToF32: ++ return 1 + Latency::FIMOVD; ++ case kSw64F64ToI32_n: ++ return Latency::FCVTDL_N + Latency::FCVTLW + Latency::FIMOVS; ++ case kSw64F64ToI32_p: ++ return Latency::FCVTDL_P + Latency::FCVTLW + Latency::FIMOVS; ++ case kSw64F64ToI32_g: ++ return Latency::FCVTDL_G + Latency::FCVTLW + Latency::FIMOVS; ++ case kSw64F64ToI32: ++ return Latency::FCVTDL_Z + Latency::FCVTLW + Latency::FIMOVS; ++ case kSw64F32ToI32_n: ++ return Latency::FCVTSD + Latency::FCVTDL_N + Latency::FCVTLW + ++ Latency::FIMOVS; ++ case kSw64F32ToI32_p: ++ return Latency::FCVTSD + Latency::FCVTDL_P + Latency::FCVTLW + ++ Latency::FIMOVS; ++ case kSw64F32ToI32_g: ++ return Latency::FCVTSD + Latency::FCVTDL_G + Latency::FCVTLW + ++ Latency::FIMOVS; ++ case kSw64F32ToI32: ++ return Latency::FCVTSD + Latency::FCVTDL_Z + Latency::FCVTLW + ++ Latency::FIMOVS + 3; // cmplt selne ? ++ // case kSw64F32ToI64: ++ // return 5; //TODO ++ // case kSw64F64ToI64: ++ // return 5; ++ // case kSw64F64ToUI32: ++ // return CompareFLatency() + 2 * Latency::BRANCH + ++ // 2 * Latency::TRUNC_W_D + Latency::SUB_D + OrLatency() + ++ // Latency::MTC1 + Latency::MFC1 + Latency::MTHC1 + 1; ++ // case kSw64F32ToUI32: ++ // return CompareFLatency() + 2 * Latency::BRANCH + ++ // 2 * Latency::TRUNC_W_S + Latency::SUB_S + OrLatency() + ++ // Latency::MTC1 + 2 * Latency::MFC1 + 2 + MovzLatency(); ++ // case kSw64F32ToUI64: ++ // return TruncUlSLatency(); ++ // case kSw64F64ToUI64: ++ // return TruncUlDLatency(); ++ // TODO ++ case kSw64BitcastDL: ++ return 4; ++ case kSw64BitcastLD: ++ return 4; ++ case kSw64BitcastSW: ++ case kSw64BitcastWS: ++ return 4; ++ case kSw64Float64ExtractLowWord32: ++ case kSw64Float64InsertLowWord32: ++ return 12; ++ case kSw64Float64ExtractHighWord32: ++ case kSw64Float64InsertHighWord32: ++ return 5; ++ case kSw64Sextb: ++ case kSw64Sexth: ++ return 1; ++ case kSw64Ldbu: ++ case kSw64Ldhu: ++ case kSw64Ldl: ++ case kSw64Ldl_u: ++ case kSw64Ldw: ++ case kSw64Ldw_u: ++ case kSw64Flds: ++ case kSw64Flds_u: ++ case kSw64Fldd: ++ case kSw64Fldd_u: ++ case kSw64Stb: ++ case kSw64Sth: ++ case kSw64Stw: ++ case kSw64Stw_u: ++ case kSw64Stl: ++ case kSw64Stl_u: ++ case kSw64Fsts: ++ case kSw64Fsts_u: ++ case kSw64Fstd: ++ case kSw64Fstd_u: ++ return 4; ++ ++ case kSw64Ldb: ++ case kSw64Ldh: ++ case kSw64Ldwu: ++ case kSw64Ldwu_u: ++ return 5; ++ ++ case kSw64Ldhu_u: ++ return 10; ++ case kSw64Ldh_u: ++ return 11; ++ case kSw64Sth_u: ++ return 8 + SrlwLatency(instr->InputAt(1)->IsRegister()); ++ case kSw64Push: { ++ int latency = 0; ++ if (instr->InputAt(0)->IsFPRegister()) { ++ latency = 4 + DsubuLatency(false); ++ } else { ++ latency = PushLatency(); ++ } ++ return latency; ++ } ++ case kSw64Peek: { ++ int latency = 0; ++ if (instr->OutputAt(0)->IsFPRegister()) { ++ latency = Latency::FLDD; ++ } else { ++ latency = AlignedMemoryLatency(); ++ } ++ return latency; ++ } ++ case kSw64StackClaim: ++ return DsubuLatency(false); ++ case kSw64Poke: { ++ int latency = 0; ++ if (instr->InputAt(0)->IsFPRegister()) { ++ if (instr->InputAt(0)->IsSimd128Register()) { ++ latency = 1; // Estimated value. ++ } else { ++ latency = 4; ++ } ++ } else { ++ latency = AlignedMemoryLatency(); ++ } ++ return latency; ++ } ++ // case kSw64ByteSwap64: ++ // case kSw64ByteSwap32: ++ case kAtomicLoadInt8: ++ case kAtomicLoadUint8: ++ case kAtomicLoadInt16: ++ case kAtomicLoadUint16: ++ case kAtomicLoadWord32: ++ return 2; ++ case kAtomicStoreWord8: ++ case kAtomicStoreWord16: ++ case kAtomicStoreWord32: ++ return 3; ++ case kAtomicExchangeInt8: ++ return Word32AtomicExchangeLatency(true, 8); ++ case kAtomicExchangeUint8: ++ return Word32AtomicExchangeLatency(false, 8); ++ case kAtomicExchangeInt16: ++ return Word32AtomicExchangeLatency(true, 16); ++ case kAtomicExchangeUint16: ++ return Word32AtomicExchangeLatency(false, 16); ++ case kAtomicExchangeWord32: ++ return 2 + LlLatency(0) + 1 + ScLatency(0) + BranchShortLatency() + 1; ++ case kAtomicCompareExchangeInt8: ++ return Word32AtomicCompareExchangeLatency(true, 8); ++ case kAtomicCompareExchangeUint8: ++ return Word32AtomicCompareExchangeLatency(false, 8); ++ case kAtomicCompareExchangeInt16: ++ return Word32AtomicCompareExchangeLatency(true, 16); ++ case kAtomicCompareExchangeUint16: ++ return Word32AtomicCompareExchangeLatency(false, 16); ++ case kAtomicCompareExchangeWord32: ++ return 3 + LlLatency(0) + BranchShortLatency() + 1 + ScLatency(0) + ++ BranchShortLatency() + 1; ++ /* case kSw64Word64AtomicCompareExchangeUint64:*/ ++ //case kWord32Atomic##op##Int8: \ ++ //case kWord32Atomic##op##Uint8: \ ++ //case kWord32Atomic##op##Int16: \ ++ //case kWord32Atomic##op##Uint16: \ ++ //case kWord32Atomic##op##Word32: \ ++ //case kSw64Word64Atomic##op##Uint8: \ ++ //case kSw64Word64Atomic##op##Uint16: \ ++ //case kSw64Word64Atomic##op##Uint32: \ ++ //case kSw64Word64Atomic##op##Uint64: ++ case kSw64AssertEqual: ++ return AssertLatency(); ++ default: ++ return 1; ++ } ++} ++ ++} // namespace compiler ++} // namespace internal ++} // namespace v8 +diff --git a/deps/v8/src/compiler/backend/sw64/instruction-selector-sw64.cc b/deps/v8/src/compiler/backend/sw64/instruction-selector-sw64.cc +new file mode 100755 +index 00000000..df088724 +--- /dev/null ++++ b/deps/v8/src/compiler/backend/sw64/instruction-selector-sw64.cc +@@ -0,0 +1,3375 @@ ++// Copyright 2014 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/base/bits.h" ++#include "src/base/platform/wrappers.h" ++#include "src/codegen/machine-type.h" ++#include "src/compiler/backend/instruction-selector-impl.h" ++#include "src/compiler/node-matchers.h" ++#include "src/compiler/node-properties.h" ++ ++namespace v8 { ++namespace internal { ++namespace compiler { ++ ++#define TRACE_UNIMPL() \ ++ PrintF("UNIMPLEMENTED instr_sel: %s at line %d\n", __FUNCTION__, __LINE__) ++ ++#define TRACE() PrintF("instr_sel: %s at line %d\n", __FUNCTION__, __LINE__) ++ ++// Adds Sw64-specific methods for generating InstructionOperands. ++class Sw64OperandGenerator final : public OperandGenerator { ++ public: ++ explicit Sw64OperandGenerator(InstructionSelector* selector) ++ : OperandGenerator(selector) {} ++ ++ InstructionOperand UseOperand(Node* node, InstructionCode opcode) { ++ if (CanBeImmediate(node, opcode)) { ++ return UseImmediate(node); ++ } ++ return UseRegister(node); ++ } ++ ++ // Use the zero register if the node has the immediate value zero, otherwise ++ // assign a register. ++ InstructionOperand UseRegisterOrImmediateZero(Node* node) { ++ if ((IsIntegerConstant(node) && (GetIntegerConstantValue(node) == 0)) || ++ (IsFloatConstant(node) && ++ (base::bit_cast(GetFloatConstantValue(node)) == 0))) { ++ return UseImmediate(node); ++ } ++ return UseRegister(node); ++ } ++ ++ bool IsIntegerConstant(Node* node) { ++ return (node->opcode() == IrOpcode::kInt32Constant) || ++ (node->opcode() == IrOpcode::kInt64Constant); ++ } ++ ++ int64_t GetIntegerConstantValue(Node* node) { ++ if (node->opcode() == IrOpcode::kInt32Constant) { ++ return OpParameter(node->op()); ++ } ++ DCHECK_EQ(IrOpcode::kInt64Constant, node->opcode()); ++ return OpParameter(node->op()); ++ } ++ ++ bool IsFloatConstant(Node* node) { ++ return (node->opcode() == IrOpcode::kFloat32Constant) || ++ (node->opcode() == IrOpcode::kFloat64Constant); ++ } ++ ++ double GetFloatConstantValue(Node* node) { ++ if (node->opcode() == IrOpcode::kFloat32Constant) { ++ return OpParameter(node->op()); ++ } ++ DCHECK_EQ(IrOpcode::kFloat64Constant, node->opcode()); ++ return OpParameter(node->op()); ++ } ++ ++ bool CanBeImmediate(Node* node, InstructionCode mode) { ++ return IsIntegerConstant(node) && ++ CanBeImmediate(GetIntegerConstantValue(node), mode); ++ } ++ bool CanBeImmediate(int64_t value, InstructionCode opcode) { ++ switch (ArchOpcodeField::decode(opcode)) { ++ case kSw64Sllw: ++ case kSw64Sraw: ++ case kSw64Srlw: ++ return is_uint5(value); ++ case kSw64Slll: ++ case kSw64Sral: ++ case kSw64Srll: ++ return is_uint6(value); ++ case kSw64Addw: ++ case kSw64Andw: ++ case kSw64Andl: ++ case kSw64Addl: ++ case kSw64Orw: ++ case kSw64Orl: ++ case kSw64Tst: ++ case kSw64Xorl: ++ return is_uint16(value); ++ case kSw64Ldb: ++ case kSw64Ldbu: ++ case kSw64Stb: ++ case kSw64Ldh: ++ case kSw64Ldhu: ++ case kSw64Sth: ++ case kSw64Ldw: ++ case kSw64Stw: ++ case kSw64Ldl: ++ case kSw64Stl: ++ case kSw64Flds: ++ case kSw64Fsts: ++ case kSw64Fldd: ++ case kSw64Fstd: ++ return is_int32(value); ++ default: ++ return is_int16(value); ++ } ++ } ++ ++ private: ++ bool ImmediateFitsAddrMode1Instruction(int32_t imm) const { ++ TRACE_UNIMPL(); ++ return false; ++ } ++}; ++ ++static void VisitRR(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0))); ++} ++ ++static void VisitRRI(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ int32_t imm = OpParameter(node->op()); ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseImmediate(imm)); ++} ++ ++static void VisitSimdShift(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ if (g.IsIntegerConstant(node->InputAt(1))) { ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), ++ g.UseImmediate(node->InputAt(1))); ++ } else { ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), ++ g.UseRegister(node->InputAt(1))); ++ } ++} ++ ++static void VisitRRIR(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ int32_t imm = OpParameter(node->op()); ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseImmediate(imm), ++ g.UseRegister(node->InputAt(1))); ++} ++ ++static void VisitRRR(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), ++ g.UseRegister(node->InputAt(1))); ++} ++ ++// static void VisitUniqueRRR(InstructionSelector* selector, ArchOpcode opcode, ++// Node* node) { ++// Sw64OperandGenerator g(selector); ++// selector->Emit(opcode, g.DefineAsRegister(node), ++// g.UseUniqueRegister(node->InputAt(0)), ++// g.UseUniqueRegister(node->InputAt(1))); ++// } ++ ++void VisitRRRR(InstructionSelector* selector, ArchOpcode opcode, Node* node) { ++ Sw64OperandGenerator g(selector); ++ selector->Emit( ++ opcode, g.DefineSameAsFirst(node), g.UseRegister(node->InputAt(0)), ++ g.UseRegister(node->InputAt(1)), g.UseRegister(node->InputAt(2))); ++} ++ ++static void VisitRRO(InstructionSelector* selector, ArchOpcode opcode, ++ Node* node) { ++ Sw64OperandGenerator g(selector); ++ selector->Emit(opcode, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), ++ g.UseOperand(node->InputAt(1), opcode)); ++} ++ ++struct ExtendingLoadMatcher { ++ ExtendingLoadMatcher(Node* node, InstructionSelector* selector) ++ : matches_(false), selector_(selector), base_(nullptr), immediate_(0) { ++ Initialize(node); ++ } ++ ++ bool Matches() const { return matches_; } ++ ++ Node* base() const { ++ DCHECK(Matches()); ++ return base_; ++ } ++ int64_t immediate() const { ++ DCHECK(Matches()); ++ return immediate_; ++ } ++ ArchOpcode opcode() const { ++ DCHECK(Matches()); ++ return opcode_; ++ } ++ ++ private: ++ bool matches_; ++ InstructionSelector* selector_; ++ Node* base_; ++ int64_t immediate_; ++ ArchOpcode opcode_; ++ ++ void Initialize(Node* node) { ++ Int64BinopMatcher m(node); ++ // When loading a 64-bit value and shifting by 32, we should ++ // just load and sign-extend the interesting 4 bytes instead. ++ // This happens, for example, when we're loading and untagging SMIs. ++ DCHECK(m.IsWord64Sar()); ++ if (m.left().IsLoad() && m.right().Is(32) && ++ selector_->CanCover(m.node(), m.left().node())) { ++ DCHECK_EQ(selector_->GetEffectLevel(node), ++ selector_->GetEffectLevel(m.left().node())); ++ MachineRepresentation rep = ++ LoadRepresentationOf(m.left().node()->op()).representation(); ++ DCHECK_EQ(3, ElementSizeLog2Of(rep)); ++ if (rep != MachineRepresentation::kTaggedSigned && ++ rep != MachineRepresentation::kTaggedPointer && ++ rep != MachineRepresentation::kTagged && ++ rep != MachineRepresentation::kWord64) { ++ return; ++ } ++ ++ Sw64OperandGenerator g(selector_); ++ Node* load = m.left().node(); ++ Node* offset = load->InputAt(1); ++ base_ = load->InputAt(0); ++ opcode_ = kSw64Ldw; ++ if (g.CanBeImmediate(offset, opcode_)) { ++ immediate_ = g.GetIntegerConstantValue(offset) + 4; ++ matches_ = g.CanBeImmediate(immediate_, kSw64Ldw); ++ } ++ } ++ } ++}; ++ ++bool TryEmitExtendingLoad(InstructionSelector* selector, Node* node, ++ Node* output_node) { ++ ExtendingLoadMatcher m(node, selector); ++ Sw64OperandGenerator g(selector); ++ if (m.Matches()) { ++ InstructionOperand inputs[2]; ++ inputs[0] = g.UseRegister(m.base()); ++ InstructionCode opcode = ++ m.opcode() | AddressingModeField::encode(kMode_MRI); ++ DCHECK(is_int32(m.immediate())); ++ inputs[1] = g.TempImmediate(static_cast(m.immediate())); ++ InstructionOperand outputs[] = {g.DefineAsRegister(output_node)}; ++ selector->Emit(opcode, arraysize(outputs), outputs, arraysize(inputs), ++ inputs); ++ return true; ++ } ++ return false; ++} ++ ++bool TryMatchImmediate(InstructionSelector* selector, ++ InstructionCode* opcode_return, Node* node, ++ size_t* input_count_return, InstructionOperand* inputs) { ++ Sw64OperandGenerator g(selector); ++ if (g.CanBeImmediate(node, *opcode_return)) { ++ *opcode_return |= AddressingModeField::encode(kMode_MRI); ++ inputs[0] = g.UseImmediate(node); ++ *input_count_return = 1; ++ return true; ++ } ++ return false; ++} ++ ++static void VisitBinop(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, bool has_reverse_opcode, ++ InstructionCode reverse_opcode, ++ FlagsContinuation* cont) { ++ Sw64OperandGenerator g(selector); ++ Int32BinopMatcher m(node); ++ InstructionOperand inputs[2]; ++ size_t input_count = 0; ++ InstructionOperand outputs[1]; ++ size_t output_count = 0; ++ ++ if (TryMatchImmediate(selector, &opcode, m.right().node(), &input_count, ++ &inputs[1])) { ++ inputs[0] = g.UseRegister(m.left().node()); ++ input_count++; ++ } else if (has_reverse_opcode && ++ TryMatchImmediate(selector, &reverse_opcode, m.left().node(), ++ &input_count, &inputs[1])) { ++ inputs[0] = g.UseRegister(m.right().node()); ++ opcode = reverse_opcode; ++ input_count++; ++ } else { ++ inputs[input_count++] = g.UseRegister(m.left().node()); ++ inputs[input_count++] = g.UseOperand(m.right().node(), opcode); ++ } ++ ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ DCHECK_NE(0u, input_count); ++ DCHECK_EQ(1u, output_count); ++ DCHECK_GE(arraysize(inputs), input_count); ++ DCHECK_GE(arraysize(outputs), output_count); ++ ++ selector->EmitWithContinuation(opcode, output_count, outputs, input_count, ++ inputs, cont); ++} ++ ++static void VisitBinop(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, bool has_reverse_opcode, ++ InstructionCode reverse_opcode) { ++ FlagsContinuation cont; ++ VisitBinop(selector, node, opcode, has_reverse_opcode, reverse_opcode, &cont); ++} ++ ++static void VisitBinop(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, FlagsContinuation* cont) { ++ VisitBinop(selector, node, opcode, false, kArchNop, cont); ++} ++ ++static void VisitBinop(InstructionSelector* selector, Node* node, ++ InstructionCode opcode) { ++ VisitBinop(selector, node, opcode, false, kArchNop); ++} ++ ++void InstructionSelector::VisitStackSlot(Node* node) { ++ StackSlotRepresentation rep = StackSlotRepresentationOf(node->op()); ++ int alignment = rep.alignment(); ++ int slot = frame_->AllocateSpillSlot(rep.size(), alignment); ++ OperandGenerator g(this); ++ ++ Emit(kArchStackSlot, g.DefineAsRegister(node), ++ sequence()->AddImmediate(Constant(slot)), 0, nullptr); ++} ++ ++void InstructionSelector::VisitAbortCSADcheck(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kArchAbortCSADcheck, g.NoOutput(), g.UseFixed(node->InputAt(0), a0)); ++} ++ ++void EmitLoad(InstructionSelector* selector, Node* node, InstructionCode opcode, ++ Node* output = nullptr) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ ++ if (base != nullptr && base->opcode() == IrOpcode::kLoadRootRegister) { ++ selector->Emit(opcode | AddressingModeField::encode(kMode_Root), ++ g.DefineAsRegister(output == nullptr ? node : output), ++ g.UseImmediate(index)); ++ return; ++ } ++ ++ if (g.CanBeImmediate(index, opcode)) { ++ selector->Emit(opcode | AddressingModeField::encode(kMode_MRI), ++ g.DefineAsRegister(output == nullptr ? node : output), ++ g.UseRegister(base), g.UseImmediate(index)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ selector->Emit(kSw64Addl | AddressingModeField::encode(kMode_None), ++ addr_reg, g.UseRegister(base), g.UseRegister(index)); ++ // Emit desired load opcode, using temp addr_reg. ++ selector->Emit(opcode | AddressingModeField::encode(kMode_MRI), ++ g.DefineAsRegister(output == nullptr ? node : output), ++ addr_reg, g.TempImmediate(0)); ++ } ++} ++ ++// TODO ++void InstructionSelector::VisitLoadLane(Node* node) { UNIMPLEMENTED(); } ++ ++void InstructionSelector::VisitStoreLane(Node* node) { UNIMPLEMENTED(); } ++#if 0 ++namespace { ++InstructionOperand EmitAddBeforeS128LoadStore(InstructionSelector* selector, ++ Node* node, ++ InstructionCode* opcode) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ InstructionOperand addr_reg = g.TempRegister(); ++ selector->Emit(kSw64Addl | AddressingModeField::encode(kMode_None), ++ addr_reg, g.UseRegister(base), g.UseRegister(index)); ++ *opcode |= AddressingModeField::encode(kMode_MRI); ++ return addr_reg; ++} ++ ++} // namespace ++ ++void InstructionSelector::VisitStoreLane(Node* node) { ++ StoreLaneParameters params = StoreLaneParametersOf(node->op()); ++ LoadStoreLaneParams f(params.rep, params.laneidx); ++ InstructionCode opcode = kSw64S128StoreLane; ++ opcode |= MiscField::encode(f.sz); ++ ++ Sw64OperandGenerator g(this); ++ InstructionOperand addr = EmitAddBeforeS128LoadStore(this, node, &opcode); ++ InstructionOperand inputs[4] = { ++ g.UseRegister(node->InputAt(2)), ++ g.UseImmediate(f.laneidx), ++ addr, ++ g.TempImmediate(0), ++ }; ++ Emit(opcode, 0, nullptr, 4, inputs); ++} ++ ++void InstructionSelector::VisitLoadLane(Node* node) { ++ LoadLaneParameters params = LoadLaneParametersOf(node->op()); ++ LoadStoreLaneParams f(params.rep.representation(), params.laneidx); ++ InstructionCode opcode = kSw64S128LoadLane; ++ opcode |= MiscField::encode(f.sz); ++ ++ Sw64OperandGenerator g(this); ++ InstructionOperand addr = EmitAddBeforeS128LoadStore(this, node, &opcode); ++ Emit(opcode, g.DefineSameAsFirst(node), g.UseRegister(node->InputAt(2)), ++ g.UseImmediate(f.laneidx), addr, g.TempImmediate(0)); ++} ++#endif ++ ++void InstructionSelector::VisitLoadTransform(Node* node) { ++ LoadTransformParameters params = LoadTransformParametersOf(node->op()); ++ ++ InstructionCode opcode = kArchNop; ++ switch (params.transformation) { ++ case LoadTransformation::kS128Load8Splat: ++ opcode = kSw64S128LoadSplat; ++ opcode |= MiscField::encode(SWSASize::SWSA_B); ++ break; ++ case LoadTransformation::kS128Load16Splat: ++ opcode = kSw64S128LoadSplat; ++ opcode |= MiscField::encode(SWSASize::SWSA_H); ++ break; ++ case LoadTransformation::kS128Load32Splat: ++ opcode = kSw64S128LoadSplat; ++ opcode |= MiscField::encode(SWSASize::SWSA_W); ++ break; ++ case LoadTransformation::kS128Load64Splat: ++ opcode = kSw64S128LoadSplat; ++ opcode |= MiscField::encode(SWSASize::SWSA_D); ++ break; ++#if 0 ++ case LoadTransformation::kS128Load8x8S: ++ opcode = kSw64S128Load8x8S; ++ break; ++ case LoadTransformation::kS128Load8x8U: ++ opcode = kSw64S128Load8x8U; ++ break; ++ case LoadTransformation::kS128Load16x4S: ++ opcode = kSw64S128Load16x4S; ++ break; ++ case LoadTransformation::kS128Load16x4U: ++ opcode = kSw64S128Load16x4U; ++ break; ++ case LoadTransformation::kS128Load32x2S: ++ opcode = kSw64S128Load32x2S; ++ break; ++ case LoadTransformation::kS128Load32x2U: ++ opcode = kSw64S128Load32x2U; ++ break; ++ case LoadTransformation::kS128Load32Zero: ++ opcode = kSw64S128Load32Zero; ++ break; ++ case LoadTransformation::kS128Load64Zero: ++ opcode = kSw64S128Load64Zero; ++ break; ++#endif ++ default: ++ UNIMPLEMENTED(); ++ } ++ ++ EmitLoad(this, node, opcode); ++} ++ ++void InstructionSelector::VisitLoad(Node* node) { ++ LoadRepresentation load_rep = LoadRepresentationOf(node->op()); ++ ++ InstructionCode opcode = kArchNop; ++ switch (load_rep.representation()) { ++ case MachineRepresentation::kFloat32: ++ opcode = kSw64Flds; ++ break; ++ case MachineRepresentation::kFloat64: ++ opcode = kSw64Fldd; ++ break; ++ case MachineRepresentation::kBit: // Fall through. ++ case MachineRepresentation::kWord8: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldbu : kSw64Ldb; ++ break; ++ case MachineRepresentation::kWord16: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldhu : kSw64Ldh; ++ break; ++ case MachineRepresentation::kWord32: ++ opcode = kSw64Ldw; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: // Fall through. ++ case MachineRepresentation::kWord64: ++ opcode = kSw64Ldl; ++ break; ++ case MachineRepresentation::kSimd128: ++ opcode = kSw64SwsaLd; ++ break; ++ case MachineRepresentation::kSimd256: // Fall through. ++ case MachineRepresentation::kCompressedPointer: // Fall through. ++ case MachineRepresentation::kSandboxedPointer: // Fall through. ++ case MachineRepresentation::kCompressed: // Fall through. ++ case MachineRepresentation::kMapWord: // Fall through. ++ case MachineRepresentation::kNone: ++ UNREACHABLE(); ++ } ++ ++ EmitLoad(this, node, opcode); ++} ++ ++void InstructionSelector::VisitProtectedLoad(Node* node) { ++ // TODO(eholk) ++ UNIMPLEMENTED(); ++} ++ ++void InstructionSelector::VisitStore(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* value = node->InputAt(2); ++ ++ StoreRepresentation store_rep = StoreRepresentationOf(node->op()); ++ WriteBarrierKind write_barrier_kind = store_rep.write_barrier_kind(); ++ MachineRepresentation rep = store_rep.representation(); ++ ++ if (v8_flags.enable_unconditional_write_barriers && CanBeTaggedPointer(rep)) { ++ write_barrier_kind = kFullWriteBarrier; ++ } ++ ++ // TODO(sw64): I guess this could be done in a better way. ++ if (write_barrier_kind != kNoWriteBarrier && ++ !v8_flags.disable_write_barriers) { ++ DCHECK(CanBeTaggedPointer(rep)); ++ InstructionOperand inputs[3]; ++ size_t input_count = 0; ++ inputs[input_count++] = g.UseUniqueRegister(base); ++ inputs[input_count++] = g.UseUniqueRegister(index); ++ inputs[input_count++] = g.UseUniqueRegister(value); ++ RecordWriteMode record_write_mode = ++ WriteBarrierKindToRecordWriteMode(write_barrier_kind); ++ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()}; ++ size_t const temp_count = arraysize(temps); ++ InstructionCode code = kArchStoreWithWriteBarrier; ++ code |= MiscField::encode(static_cast(record_write_mode)); ++ Emit(code, 0, nullptr, input_count, inputs, temp_count, temps); ++ } else { ++ ArchOpcode opcode; ++ switch (rep) { ++ case MachineRepresentation::kFloat32: ++ opcode = kSw64Fsts; ++ break; ++ case MachineRepresentation::kFloat64: ++ opcode = kSw64Fstd; ++ break; ++ case MachineRepresentation::kBit: // Fall through. ++ case MachineRepresentation::kWord8: ++ opcode = kSw64Stb; ++ break; ++ case MachineRepresentation::kWord16: ++ opcode = kSw64Sth; ++ break; ++ case MachineRepresentation::kWord32: ++ opcode = kSw64Stw; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: // Fall through. ++ case MachineRepresentation::kWord64: ++ opcode = kSw64Stl; ++ break; ++ case MachineRepresentation::kSimd128: ++ opcode = kSw64SwsaSt; ++ break; ++ case MachineRepresentation::kSimd256: // Fall through. ++ case MachineRepresentation::kCompressedPointer: // Fall through. ++ case MachineRepresentation::kCompressed: // Fall through. ++ case MachineRepresentation::kSandboxedPointer: // Fall through. ++ case MachineRepresentation::kMapWord: // Fall through. ++ case MachineRepresentation::kNone: ++ UNREACHABLE(); ++ } ++ ++ if (base != nullptr && base->opcode() == IrOpcode::kLoadRootRegister) { ++ // This will only work if {index} is a constant. ++ Emit(opcode | AddressingModeField::encode(kMode_Root), g.NoOutput(), ++ g.UseImmediate(index), g.UseRegisterOrImmediateZero(value)); ++ return; ++ } ++ ++ if (g.CanBeImmediate(index, opcode)) { ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), ++ g.UseRegister(base), g.UseImmediate(index), ++ g.UseRegisterOrImmediateZero(value)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ Emit(kSw64Addl | AddressingModeField::encode(kMode_None), addr_reg, ++ g.UseRegister(index), g.UseRegister(base)); ++ // Emit desired store opcode, using temp addr_reg. ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), ++ addr_reg, g.TempImmediate(0), g.UseRegisterOrImmediateZero(value)); ++ } ++ } ++} ++ ++void InstructionSelector::VisitProtectedStore(Node* node) { ++ // TODO(eholk) ++ UNIMPLEMENTED(); ++} ++ ++void InstructionSelector::VisitWord32And(Node* node) { ++ VisitBinop(this, node, kSw64Andw, true, kSw64Andw); ++} ++ ++void InstructionSelector::VisitWord64And(Node* node) { ++ VisitBinop(this, node, kSw64Andl, true, kSw64Andl); ++} ++ ++void InstructionSelector::VisitWord32Or(Node* node) { ++ VisitBinop(this, node, kSw64Orw, true, kSw64Orw); ++} ++ ++void InstructionSelector::VisitWord64Or(Node* node) { ++ VisitBinop(this, node, kSw64Orl, true, kSw64Orl); ++} ++ ++void InstructionSelector::VisitWord32Xor(Node* node) { ++ Int32BinopMatcher m(node); ++ if (m.left().IsWord32Or() && CanCover(node, m.left().node()) && ++ m.right().Is(-1)) { ++ Int32BinopMatcher mleft(m.left().node()); ++ if (!mleft.right().HasResolvedValue()) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Norw, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), ++ g.UseRegister(mleft.right().node())); ++ return; ++ } ++ } ++ if (m.right().Is(-1)) { ++ // Use Nor for bit negation and eliminate constant loading for xori. ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Norw, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.TempImmediate(0)); ++ return; ++ } ++ VisitBinop(this, node, kSw64Xorw, true, kSw64Xorw); ++} ++ ++void InstructionSelector::VisitWord64Xor(Node* node) { ++ Int64BinopMatcher m(node); ++ if (m.left().IsWord64Or() && CanCover(node, m.left().node()) && ++ m.right().Is(-1)) { ++ Int64BinopMatcher mleft(m.left().node()); ++ if (!mleft.right().HasResolvedValue()) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Norl, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), ++ g.UseRegister(mleft.right().node())); ++ return; ++ } ++ } ++ if (m.right().Is(-1)) { ++ // Use Nor for bit negation and eliminate constant loading for xori. ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Norl, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.TempImmediate(0)); ++ return; ++ } ++ VisitBinop(this, node, kSw64Xorl, true, kSw64Xorl); ++} ++ ++void InstructionSelector::VisitWord32Shl(Node* node) { ++ Int32BinopMatcher m(node); ++ if (m.left().IsWord32And() && CanCover(node, m.left().node()) && ++ m.right().IsInRange(1, 31)) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher mleft(m.left().node()); ++ // Match Word32Shl(Word32And(x, mask), imm) to Shl where the mask is ++ // contiguous, and the shift immediate non-zero. ++ if (mleft.right().HasResolvedValue()) { ++ uint32_t mask = mleft.right().ResolvedValue(); ++ uint32_t mask_width = base::bits::CountPopulation(mask); ++ uint32_t mask_msb = base::bits::CountLeadingZeros32(mask); ++ if ((mask_width != 0) && (mask_msb + mask_width == 32)) { ++ uint32_t shift = m.right().ResolvedValue(); ++ DCHECK_EQ(0u, base::bits::CountTrailingZeros32(mask)); ++ DCHECK_NE(0u, shift); ++ if ((shift + mask_width) >= 32) { ++ // If the mask is contiguous and reaches or extends beyond the top ++ // bit, only the shift is needed. ++ Emit(kSw64Sllw, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), ++ g.UseImmediate(m.right().node())); ++ return; ++ } ++ } ++ } ++ } ++ VisitRRO(this, kSw64Sllw, node); ++} ++ ++void InstructionSelector::VisitWord32Shr(Node* node) { ++ Int32BinopMatcher m(node); ++ if (m.left().IsWord32And() && m.right().HasResolvedValue()) { ++ uint32_t lsb = m.right().ResolvedValue() & 0x1F; ++ Int32BinopMatcher mleft(m.left().node()); ++ if (mleft.right().HasResolvedValue() && ++ mleft.right().ResolvedValue() != 0) { ++ // Select Ext for Srlw(And(x, mask), imm) where the result of the mask is ++ // shifted into the least-significant bits. ++ uint32_t mask = (mleft.right().ResolvedValue() >> lsb) << lsb; ++ unsigned mask_width = base::bits::CountPopulation(mask); ++ unsigned mask_msb = base::bits::CountLeadingZeros32(mask); ++ if ((mask_msb + mask_width + lsb) == 32) { ++ Sw64OperandGenerator g(this); ++ DCHECK_EQ(lsb, base::bits::CountTrailingZeros32(mask)); ++ Emit(kSw64Extw, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), g.TempImmediate(lsb), ++ g.TempImmediate(mask_width)); ++ return; ++ } ++ } ++ } ++ VisitRRO(this, kSw64Srlw, node); ++} ++ ++void InstructionSelector::VisitWord32Sar(Node* node) { ++ Int32BinopMatcher m(node); ++ if (m.left().IsWord32Shl() && CanCover(node, m.left().node())) { ++ Int32BinopMatcher mleft(m.left().node()); ++ if (m.right().HasResolvedValue() && mleft.right().HasResolvedValue()) { ++ Sw64OperandGenerator g(this); ++ uint32_t sraw = m.right().ResolvedValue(); ++ uint32_t sllw = mleft.right().ResolvedValue(); ++ if ((sraw == sllw) && (sraw == 16)) { ++ Emit(kSw64Sexth, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node())); ++ return; ++ } else if ((sraw == sllw) && (sraw == 24)) { ++ Emit(kSw64Sextb, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node())); ++ return; ++ } else if ((sraw == sllw) && (sraw == 32)) { ++ Emit(kSw64Sllw, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), g.TempImmediate(0)); ++ return; ++ } ++ } ++ } ++ VisitRRO(this, kSw64Sraw, node); ++} ++ ++void InstructionSelector::VisitWord64Shl(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ if ((m.left().IsChangeInt32ToInt64() || m.left().IsChangeUint32ToUint64()) && ++ m.right().IsInRange(32, 63) && CanCover(node, m.left().node())) { ++ // There's no need to sign/zero-extend to 64-bit if we shift out the upper ++ // 32 bits anyway. ++ Emit(kSw64Slll, g.DefineAsRegister(node), ++ g.UseRegister(m.left().node()->InputAt(0)), ++ g.UseImmediate(m.right().node())); ++ return; ++ } ++ if (m.left().IsWord64And() && CanCover(node, m.left().node()) && ++ m.right().IsInRange(1, 63)) { ++ // Match Word64Shl(Word64And(x, mask), imm) to Slll where the mask is ++ // contiguous, and the shift immediate non-zero. ++ Int64BinopMatcher mleft(m.left().node()); ++ if (mleft.right().HasResolvedValue()) { ++ uint64_t mask = mleft.right().ResolvedValue(); ++ uint32_t mask_width = base::bits::CountPopulation(mask); ++ uint32_t mask_msb = base::bits::CountLeadingZeros64(mask); ++ if ((mask_width != 0) && (mask_msb + mask_width == 64)) { ++ uint64_t shift = m.right().ResolvedValue(); ++ DCHECK_EQ(0u, base::bits::CountTrailingZeros64(mask)); ++ DCHECK_NE(0u, shift); ++ ++ if ((shift + mask_width) >= 64) { ++ // If the mask is contiguous and reaches or extends beyond the top ++ // bit, only the shift is needed. ++ Emit(kSw64Slll, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), ++ g.UseImmediate(m.right().node())); ++ return; ++ } ++ } ++ } ++ } ++ VisitRRO(this, kSw64Slll, node); ++} ++ ++void InstructionSelector::VisitWord64Shr(Node* node) { ++ Int64BinopMatcher m(node); ++ if (m.left().IsWord64And() && m.right().HasResolvedValue()) { ++ uint32_t lsb = m.right().ResolvedValue() & 0x3F; ++ Int64BinopMatcher mleft(m.left().node()); ++ if (mleft.right().HasResolvedValue() && ++ mleft.right().ResolvedValue() != 0) { ++ // Select Extl for Srlw(And(x, mask), imm) where the result of the mask is ++ // shifted into the least-significant bits. ++ uint64_t mask = (mleft.right().ResolvedValue() >> lsb) << lsb; ++ unsigned mask_width = base::bits::CountPopulation(mask); ++ unsigned mask_msb = base::bits::CountLeadingZeros64(mask); ++ if ((mask_msb + mask_width + lsb) == 64) { ++ Sw64OperandGenerator g(this); ++ DCHECK_EQ(lsb, base::bits::CountTrailingZeros64(mask)); ++ Emit(kSw64Extl, g.DefineAsRegister(node), ++ g.UseRegister(mleft.left().node()), g.TempImmediate(lsb), ++ g.TempImmediate(mask_width)); ++ return; ++ } ++ } ++ } ++ VisitRRO(this, kSw64Srll, node); ++} ++ ++void InstructionSelector::VisitWord64Sar(Node* node) { ++ if (TryEmitExtendingLoad(this, node, node)) return; ++ VisitRRO(this, kSw64Sral, node); ++} ++ ++void InstructionSelector::VisitWord32Rol(Node* node) { UNREACHABLE(); } ++ ++void InstructionSelector::VisitWord64Rol(Node* node) { UNREACHABLE(); } ++ ++void InstructionSelector::VisitWord32Ror(Node* node) { ++ VisitRRO(this, kSw64Rolw, node); ++} ++ ++void InstructionSelector::VisitWord32Clz(Node* node) { ++ VisitRR(this, kSw64Ctlzw, node); ++} ++ ++void InstructionSelector::VisitWord32ReverseBits(Node* node) { UNREACHABLE(); } ++ ++void InstructionSelector::VisitWord64ReverseBits(Node* node) { UNREACHABLE(); } ++ ++void InstructionSelector::VisitWord64ReverseBytes(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64ByteSwap64, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitWord32ReverseBytes(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64ByteSwap32, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitSimd128ReverseBytes(Node* node) { ++ UNREACHABLE(); ++} ++ ++void InstructionSelector::VisitWord32Ctz(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Cttzw, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitWord64Ctz(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Cttzl, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitWord32Popcnt(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Ctpopw, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitWord64Popcnt(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Ctpopl, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitWord64Ror(Node* node) { ++ VisitRRO(this, kSw64Roll, node); ++} ++ ++void InstructionSelector::VisitWord64Clz(Node* node) { ++ VisitRR(this, kSw64Ctlzl, node); ++} ++ ++void InstructionSelector::VisitInt32Add(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ ++ // Select Lsaw for (left + (left_of_right << imm)). ++ if (m.right().opcode() == IrOpcode::kWord32Shl && ++ CanCover(node, m.left().node()) && CanCover(node, m.right().node())) { ++ Int32BinopMatcher mright(m.right().node()); ++ if (mright.right().HasResolvedValue() && !m.left().HasResolvedValue()) { ++ int32_t shift_value = ++ static_cast(mright.right().ResolvedValue()); ++ Emit(kSw64Lsaw, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(mright.left().node()), g.TempImmediate(shift_value)); ++ return; ++ } ++ } ++ ++ // Select Lsaw for ((left_of_left << imm) + right). ++ if (m.left().opcode() == IrOpcode::kWord32Shl && ++ CanCover(node, m.right().node()) && CanCover(node, m.left().node())) { ++ Int32BinopMatcher mleft(m.left().node()); ++ if (mleft.right().HasResolvedValue() && !m.right().HasResolvedValue()) { ++ int32_t shift_value = static_cast(mleft.right().ResolvedValue()); ++ Emit(kSw64Lsaw, g.DefineAsRegister(node), g.UseRegister(m.right().node()), ++ g.UseRegister(mleft.left().node()), g.TempImmediate(shift_value)); ++ return; ++ } ++ } ++ VisitBinop(this, node, kSw64Addw, true, kSw64Addw); ++} ++ ++void InstructionSelector::VisitInt64Add(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ ++ // Select Lsal for (left + (left_of_right << imm)). ++ if (m.right().opcode() == IrOpcode::kWord64Shl && ++ CanCover(node, m.left().node()) && CanCover(node, m.right().node())) { ++ Int64BinopMatcher mright(m.right().node()); ++ if (mright.right().HasResolvedValue() && !m.left().HasResolvedValue()) { ++ int32_t shift_value = ++ static_cast(mright.right().ResolvedValue()); ++ Emit(kSw64Lsal, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(mright.left().node()), g.TempImmediate(shift_value)); ++ return; ++ } ++ } ++ ++ // Select Lsal for ((left_of_left << imm) + right). ++ if (m.left().opcode() == IrOpcode::kWord64Shl && ++ CanCover(node, m.right().node()) && CanCover(node, m.left().node())) { ++ Int64BinopMatcher mleft(m.left().node()); ++ if (mleft.right().HasResolvedValue() && !m.right().HasResolvedValue()) { ++ int32_t shift_value = static_cast(mleft.right().ResolvedValue()); ++ Emit(kSw64Lsal, g.DefineAsRegister(node), g.UseRegister(m.right().node()), ++ g.UseRegister(mleft.left().node()), g.TempImmediate(shift_value)); ++ return; ++ } ++ } ++ ++ VisitBinop(this, node, kSw64Addl, true, kSw64Addl); ++} ++ ++void InstructionSelector::VisitInt32Sub(Node* node) { ++ VisitBinop(this, node, kSw64Subw); ++} ++ ++void InstructionSelector::VisitInt64Sub(Node* node) { ++ VisitBinop(this, node, kSw64Subl); ++} ++ ++void InstructionSelector::VisitInt32Mul(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ if (m.right().HasResolvedValue() && m.right().ResolvedValue() > 0) { ++ uint32_t value = static_cast(m.right().ResolvedValue()); ++ if (base::bits::IsPowerOfTwo(value)) { ++ Emit(kSw64Sllw | AddressingModeField::encode(kMode_None), ++ g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value))); ++ return; ++ } ++ if (base::bits::IsPowerOfTwo(value - 1)) { ++ Emit(kSw64Lsaw, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value - 1))); ++ return; ++ } ++ if (base::bits::IsPowerOfTwo(value + 1)) { ++ InstructionOperand temp = g.TempRegister(); ++ Emit(kSw64Sllw | AddressingModeField::encode(kMode_None), temp, ++ g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value + 1))); ++ Emit(kSw64Subw | AddressingModeField::encode(kMode_None), ++ g.DefineAsRegister(node), temp, g.UseRegister(m.left().node())); ++ return; ++ } ++ } ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ if (CanCover(node, left) && CanCover(node, right)) { ++ if (left->opcode() == IrOpcode::kWord64Sar && ++ right->opcode() == IrOpcode::kWord64Sar) { ++ Int64BinopMatcher leftInput(left), rightInput(right); ++ if (leftInput.right().Is(32) && rightInput.right().Is(32)) { ++ // Combine untagging shifts with Dmul high. ++ Emit(kSw64MullHigh, g.DefineSameAsFirst(node), ++ g.UseRegister(leftInput.left().node()), ++ g.UseRegister(rightInput.left().node())); ++ return; ++ } ++ } ++ } ++ VisitRRR(this, kSw64Mulw, node); ++} ++ ++void InstructionSelector::VisitInt32MulHigh(Node* node) { ++ VisitRRR(this, kSw64MulwHigh, node); ++} ++ ++void InstructionSelector::VisitInt64MulHigh(Node* node) { ++ VisitRRR(this, kSw64MullHigh, node); ++} ++ ++void InstructionSelector::VisitUint32MulHigh(Node* node) { ++ VisitRRR(this, kSw64MulwHighU, node); ++} ++ ++void InstructionSelector::VisitUint64MulHigh(Node* node) { ++ VisitRRR(this, kSw64MullHighU, node); ++} ++ ++void InstructionSelector::VisitInt64Mul(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ if (m.right().HasResolvedValue() && m.right().ResolvedValue() > 0) { ++ uint64_t value = static_cast(m.right().ResolvedValue()); ++ if (base::bits::IsPowerOfTwo(value)) { ++ Emit(kSw64Slll | AddressingModeField::encode(kMode_None), ++ g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value))); ++ return; ++ } ++ if (base::bits::IsPowerOfTwo(value - 1) && value - 1 > 0) { ++ // Lsal macro will handle the shifting value out of bound cases. ++ Emit(kSw64Lsal, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value - 1))); ++ return; ++ } ++ if (base::bits::IsPowerOfTwo(value + 1)) { ++ InstructionOperand temp = g.TempRegister(); ++ Emit(kSw64Slll | AddressingModeField::encode(kMode_None), temp, ++ g.UseRegister(m.left().node()), ++ g.TempImmediate(base::bits::WhichPowerOfTwo(value + 1))); ++ Emit(kSw64Subl | AddressingModeField::encode(kMode_None), ++ g.DefineAsRegister(node), temp, g.UseRegister(m.left().node())); ++ return; ++ } ++ } ++ Emit(kSw64Mull, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitInt32Div(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ if (CanCover(node, left) && CanCover(node, right)) { ++ if (left->opcode() == IrOpcode::kWord64Sar && ++ right->opcode() == IrOpcode::kWord64Sar) { ++ Int64BinopMatcher rightInput(right), leftInput(left); ++ if (rightInput.right().Is(32) && leftInput.right().Is(32)) { ++ // Combine both shifted operands with Ddiv. ++ Emit(kSw64Divl, g.DefineSameAsFirst(node), ++ g.UseRegister(leftInput.left().node()), ++ g.UseRegister(rightInput.left().node())); ++ return; ++ } ++ } ++ } ++ Emit(kSw64Divw, g.DefineSameAsFirst(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitUint32Div(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ Emit(kSw64Divwu, g.DefineSameAsFirst(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitInt32Mod(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ if (CanCover(node, left) && CanCover(node, right)) { ++ if (left->opcode() == IrOpcode::kWord64Sar && ++ right->opcode() == IrOpcode::kWord64Sar) { ++ Int64BinopMatcher rightInput(right), leftInput(left); ++ if (rightInput.right().Is(32) && leftInput.right().Is(32)) { ++ // Combine both shifted operands with Dmod. ++ Emit(kSw64Modl, g.DefineSameAsFirst(node), ++ g.UseRegister(leftInput.left().node()), ++ g.UseRegister(rightInput.left().node())); ++ return; ++ } ++ } ++ } ++ Emit(kSw64Modw, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitUint32Mod(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int32BinopMatcher m(node); ++ Emit(kSw64Modwu, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitInt64Div(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ Emit(kSw64Divl, g.DefineSameAsFirst(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitUint64Div(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ Emit(kSw64Divlu, g.DefineSameAsFirst(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitInt64Mod(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ Emit(kSw64Modl, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitUint64Mod(Node* node) { ++ Sw64OperandGenerator g(this); ++ Int64BinopMatcher m(node); ++ Emit(kSw64Modlu, g.DefineAsRegister(node), g.UseRegister(m.left().node()), ++ g.UseRegister(m.right().node())); ++} ++ ++void InstructionSelector::VisitChangeFloat32ToFloat64(Node* node) { ++ VisitRR(this, kSw64F32ToF64, node); ++} ++ ++void InstructionSelector::VisitRoundInt32ToFloat32(Node* node) { ++ VisitRR(this, kSw64I32ToF32, node); ++} ++ ++void InstructionSelector::VisitRoundUint32ToFloat32(Node* node) { ++ VisitRR(this, kSw64UI32ToF32, node); ++} ++ ++void InstructionSelector::VisitChangeInt32ToFloat64(Node* node) { ++ VisitRR(this, kSw64I32ToF64, node); ++} ++ ++void InstructionSelector::VisitChangeInt64ToFloat64(Node* node) { ++ VisitRR(this, kSw64I64ToF64, node); ++} ++ ++void InstructionSelector::VisitChangeUint32ToFloat64(Node* node) { ++ VisitRR(this, kSw64UI32ToF64, node); ++} ++ ++void InstructionSelector::VisitTruncateFloat32ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionCode opcode = kSw64F32ToI32; ++ TruncateKind kind = OpParameter(node->op()); ++ if (kind == TruncateKind::kSetOverflowToMin) { ++ opcode |= MiscField::encode(true); ++ } ++ Emit(opcode, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitTruncateFloat32ToUint32(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionCode opcode = kSw64F32ToUI32; ++ TruncateKind kind = OpParameter(node->op()); ++ if (kind == TruncateKind::kSetOverflowToMin) { ++ opcode |= MiscField::encode(true); ++ } ++ Emit(opcode, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitChangeFloat64ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* value = node->InputAt(0); ++ // Match ChangeFloat64ToInt32(Float64Round##OP) to corresponding instruction ++ // which does rounding and conversion to integer format. ++ if (CanCover(node, value)) { ++ switch (value->opcode()) { ++ case IrOpcode::kFloat64RoundDown: ++ Emit(kSw64F64ToI32_n, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ case IrOpcode::kFloat64RoundUp: ++ Emit(kSw64F64ToI32_p, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ case IrOpcode::kFloat64RoundTiesEven: ++ Emit(kSw64F64ToI32_g, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ case IrOpcode::kFloat64RoundTruncate: ++ Emit(kSw64F64ToI32, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ default: ++ break; ++ } ++ if (value->opcode() == IrOpcode::kChangeFloat32ToFloat64) { ++ Node* next = value->InputAt(0); ++ if (CanCover(value, next)) { ++ // Match ChangeFloat64ToInt32(ChangeFloat32ToFloat64(Float64Round##OP)) ++ switch (next->opcode()) { ++ case IrOpcode::kFloat32RoundDown: ++ Emit(kSw64F32ToI32_n, g.DefineAsRegister(node), ++ g.UseRegister(next->InputAt(0))); ++ return; ++ case IrOpcode::kFloat32RoundUp: ++ Emit(kSw64F32ToI32_p, g.DefineAsRegister(node), ++ g.UseRegister(next->InputAt(0))); ++ return; ++ case IrOpcode::kFloat32RoundTiesEven: ++ Emit(kSw64F32ToI32_g, g.DefineAsRegister(node), ++ g.UseRegister(next->InputAt(0))); ++ return; ++ case IrOpcode::kFloat32RoundTruncate: ++ Emit(kSw64F32ToI32, g.DefineAsRegister(node), ++ g.UseRegister(next->InputAt(0))); ++ return; ++ default: ++ Emit(kSw64F32ToI32, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ } ++ } else { ++ // Match float32 -> float64 -> int32 representation change path. ++ Emit(kSw64F32ToI32, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ } ++ } ++ } ++ VisitRR(this, kSw64F64ToI32, node); ++} ++ ++void InstructionSelector::VisitChangeFloat64ToInt64(Node* node) { ++ VisitRR(this, kSw64F64ToI64, node); ++} ++ ++void InstructionSelector::VisitChangeFloat64ToUint32(Node* node) { ++ VisitRR(this, kSw64F64ToUI32, node); ++} ++ ++void InstructionSelector::VisitChangeFloat64ToUint64(Node* node) { ++ VisitRR(this, kSw64F64ToUI64, node); ++} ++ ++void InstructionSelector::VisitTruncateFloat64ToUint32(Node* node) { ++ VisitRR(this, kSw64F64ToUI32, node); ++} ++ ++void InstructionSelector::VisitTruncateFloat64ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionCode opcode = kSw64F64ToI64; ++ TruncateKind kind = OpParameter(node->op()); ++ if (kind == TruncateKind::kSetOverflowToMin) { ++ opcode |= MiscField::encode(true); ++ } ++ Emit(opcode, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat32ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ this->Emit(kSw64F32ToI64, output_count, outputs, 1, inputs); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat64ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ Emit(kSw64F64ToI64, output_count, outputs, 1, inputs); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat32ToUint64(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ Emit(kSw64F32ToUI64, output_count, outputs, 1, inputs); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat64ToUint64(Node* node) { ++ Sw64OperandGenerator g(this); ++ ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ Emit(kSw64F64ToUI64, output_count, outputs, 1, inputs); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat64ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand temps[] = {g.TempDoubleRegister()}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ Emit(kSw64F64ToI32, output_count, outputs, 1, inputs, 1, temps); ++} ++ ++void InstructionSelector::VisitTryTruncateFloat64ToUint32(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand inputs[] = {g.UseRegister(node->InputAt(0))}; ++ InstructionOperand temps[] = {g.TempDoubleRegister()}; ++ InstructionOperand outputs[2]; ++ size_t output_count = 0; ++ outputs[output_count++] = g.DefineAsRegister(node); ++ ++ Node* success_output = NodeProperties::FindProjection(node, 1); ++ if (success_output) { ++ outputs[output_count++] = g.DefineAsRegister(success_output); ++ } ++ ++ Emit(kSw64F64ToUI32, output_count, outputs, 1, inputs, 1, temps); ++} ++ ++void InstructionSelector::VisitBitcastWord32ToWord64(Node* node) { ++ UNIMPLEMENTED(); ++} ++ ++void InstructionSelector::VisitChangeInt32ToInt64(Node* node) { ++ Node* value = node->InputAt(0); ++ if ((value->opcode() == IrOpcode::kLoad || ++ value->opcode() == IrOpcode::kLoadImmutable) && ++ CanCover(node, value)) { ++ // Generate sign-extending load. ++ LoadRepresentation load_rep = LoadRepresentationOf(value->op()); ++ InstructionCode opcode = kArchNop; ++ switch (load_rep.representation()) { ++ case MachineRepresentation::kBit: // Fall through. ++ case MachineRepresentation::kWord8: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldbu : kSw64Ldb; ++ break; ++ case MachineRepresentation::kWord16: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldhu : kSw64Ldh; ++ break; ++ case MachineRepresentation::kWord32: ++ opcode = kSw64Ldw; ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ EmitLoad(this, value, opcode, node); ++ } else { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sllw, g.DefineAsRegister(node), g.UseRegister(value), ++ g.TempImmediate(0)); ++ } ++} ++ ++bool InstructionSelector::ZeroExtendsWord32ToWord64NoPhis(Node* node) { ++ DCHECK_NE(node->opcode(), IrOpcode::kPhi); ++ switch (node->opcode()) { ++ // Comparisons only emit 0/1, so the upper 32 bits must be zero. ++ case IrOpcode::kWord32Equal: ++ case IrOpcode::kInt32LessThan: ++ case IrOpcode::kInt32LessThanOrEqual: ++ case IrOpcode::kUint32LessThan: ++ case IrOpcode::kUint32LessThanOrEqual: ++ return true; ++ case IrOpcode::kWord32And: { ++ Int32BinopMatcher m(node); ++ if (m.right().HasResolvedValue()) { ++ uint32_t mask = m.right().ResolvedValue(); ++ return is_uint31(mask); ++ } ++ return false; ++ } ++ case IrOpcode::kWord32Shr: { ++ Int32BinopMatcher m(node); ++ if (m.right().HasResolvedValue()) { ++ uint8_t sa = m.right().ResolvedValue() & 0x1f; ++ return sa > 0; ++ } ++ return false; ++ } ++ case IrOpcode::kLoad: ++ case IrOpcode::kLoadImmutable: { ++ LoadRepresentation load_rep = LoadRepresentationOf(node->op()); ++ if (load_rep.IsUnsigned()) { ++ switch (load_rep.representation()) { ++ case MachineRepresentation::kWord8: ++ case MachineRepresentation::kWord16: ++ return true; ++ default: ++ return false; ++ } ++ } ++ return false; ++ } ++ default: ++ return false; ++ } ++} ++ ++void InstructionSelector::VisitChangeUint32ToUint64(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* value = node->InputAt(0); ++ IrOpcode::Value opcode = value->opcode(); ++ ++ if (opcode == IrOpcode::kLoad || opcode == IrOpcode::kUnalignedLoad) { ++ LoadRepresentation load_rep = LoadRepresentationOf(value->op()); ++ ArchOpcode arch_opcode = ++ opcode == IrOpcode::kUnalignedLoad ? kSw64Ldwu_u : kSw64Ldwu; ++ if (load_rep.IsUnsigned() && ++ load_rep.representation() == MachineRepresentation::kWord32) { ++ EmitLoad(this, value, arch_opcode, node); ++ return; ++ } ++ } ++ ++ if (ZeroExtendsWord32ToWord64(value)) { ++ EmitIdentity(node); ++ return; ++ } ++ ++ Emit(kSw64Extl, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0)), ++ g.TempImmediate(0), g.TempImmediate(32)); ++} ++ ++void InstructionSelector::VisitTruncateInt64ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* value = node->InputAt(0); ++ if (CanCover(node, value)) { ++ switch (value->opcode()) { ++ case IrOpcode::kWord64Sar: { ++ if (CanCover(value, value->InputAt(0)) && ++ TryEmitExtendingLoad(this, value, node)) { ++ return; ++ } else { ++ Int64BinopMatcher m(value); ++ if (m.right().IsInRange(32, 63)) { ++ // After smi untagging no need for truncate. Combine sequence. ++ Emit(kSw64Sral, g.DefineAsRegister(node), ++ g.UseRegister(m.left().node()), ++ g.UseImmediate(m.right().node())); ++ return; ++ } ++ } ++ break; ++ } ++ default: ++ break; ++ } ++ } ++ Emit(kSw64Sllw, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0)), ++ g.TempImmediate(0)); ++} ++ ++void InstructionSelector::VisitTruncateFloat64ToFloat32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* value = node->InputAt(0); ++ // Match TruncateFloat64ToFloat32(ChangeInt32ToFloat64) to corresponding ++ // instruction. ++ if (CanCover(node, value) && ++ value->opcode() == IrOpcode::kChangeInt32ToFloat64) { ++ Emit(kSw64I32ToF32, g.DefineAsRegister(node), ++ g.UseRegister(value->InputAt(0))); ++ return; ++ } ++ VisitRR(this, kSw64F64ToF32, node); ++} ++ ++void InstructionSelector::VisitTruncateFloat64ToWord32(Node* node) { ++ VisitRR(this, kArchTruncateDoubleToI, node); ++} ++ ++void InstructionSelector::VisitRoundFloat64ToInt32(Node* node) { ++ VisitRR(this, kSw64F64ToI32, node); ++} ++ ++void InstructionSelector::VisitRoundInt64ToFloat32(Node* node) { ++ VisitRR(this, kSw64I64ToF32, node); ++} ++ ++void InstructionSelector::VisitRoundInt64ToFloat64(Node* node) { ++ VisitRR(this, kSw64I64ToF64, node); ++} ++ ++void InstructionSelector::VisitRoundUint64ToFloat32(Node* node) { ++ VisitRR(this, kSw64UI64ToF32, node); ++} ++ ++void InstructionSelector::VisitRoundUint64ToFloat64(Node* node) { ++ VisitRR(this, kSw64UI64ToF64, node); ++} ++ ++void InstructionSelector::VisitBitcastFloat32ToInt32(Node* node) { ++ VisitRR(this, kSw64BitcastSW, node); ++} ++ ++void InstructionSelector::VisitBitcastFloat64ToInt64(Node* node) { ++ VisitRR(this, kSw64BitcastDL, node); ++} ++ ++void InstructionSelector::VisitBitcastInt32ToFloat32(Node* node) { ++ VisitRR(this, kSw64BitcastWS, node); ++} ++ ++void InstructionSelector::VisitBitcastInt64ToFloat64(Node* node) { ++ VisitRR(this, kSw64BitcastLD, node); ++} ++ ++void InstructionSelector::VisitFloat32Add(Node* node) { ++ // Optimization with Madd.S(z, x, y) is intentionally removed. ++ // See explanation for madd_s in assembler-sw64.cc. ++ VisitRRR(this, kSw64Fadds, node); ++} ++ ++void InstructionSelector::VisitFloat64Add(Node* node) { ++ // Optimization with Madd.D(z, x, y) is intentionally removed. ++ // See explanation for madd_d in assembler-sw64.cc. ++ VisitRRR(this, kSw64Faddd, node); ++} ++ ++void InstructionSelector::VisitFloat32Sub(Node* node) { ++ // Optimization with Msub.S(z, x, y) is intentionally removed. ++ // See explanation for madd_s in assembler-sw64.cc. ++ VisitRRR(this, kSw64Fsubs, node); ++} ++ ++void InstructionSelector::VisitFloat64Sub(Node* node) { ++ // Optimization with Msub.D(z, x, y) is intentionally removed. ++ // See explanation for madd_d in assembler-sw64.cc. ++ VisitRRR(this, kSw64Fsubd, node); ++} ++ ++void InstructionSelector::VisitFloat32Mul(Node* node) { ++ VisitRRR(this, kSw64Fmuls, node); ++} ++ ++void InstructionSelector::VisitFloat64Mul(Node* node) { ++ VisitRRR(this, kSw64Fmuld, node); ++} ++ ++void InstructionSelector::VisitFloat32Div(Node* node) { ++ VisitRRR(this, kSw64Fdivs, node); ++} ++ ++void InstructionSelector::VisitFloat64Div(Node* node) { ++ VisitRRR(this, kSw64Fdivd, node); ++} ++ ++void InstructionSelector::VisitFloat64Mod(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Fmodd, g.DefineAsFixed(node, f0), g.UseFixed(node->InputAt(0), f16), ++ g.UseFixed(node->InputAt(1), f17)) ++ ->MarkAsCall(); ++} ++ ++void InstructionSelector::VisitFloat32Max(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Float32Max, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); ++} ++ ++void InstructionSelector::VisitFloat64Max(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Float64Max, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); ++} ++ ++void InstructionSelector::VisitFloat32Min(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Float32Min, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); ++} ++ ++void InstructionSelector::VisitFloat64Min(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Float64Min, g.DefineAsRegister(node), ++ g.UseRegister(node->InputAt(0)), g.UseRegister(node->InputAt(1))); ++} ++ ++void InstructionSelector::VisitFloat32Abs(Node* node) { ++ VisitRR(this, kSw64Fabss, node); ++} ++ ++void InstructionSelector::VisitFloat64Abs(Node* node) { ++ VisitRR(this, kSw64Fabsd, node); ++} ++ ++void InstructionSelector::VisitFloat32Sqrt(Node* node) { ++ VisitRR(this, kSw64Fsqrts, node); ++} ++ ++void InstructionSelector::VisitFloat64Sqrt(Node* node) { ++ VisitRR(this, kSw64Fsqrtd, node); ++} ++ ++void InstructionSelector::VisitFloat32RoundDown(Node* node) { ++ VisitRR(this, kSw64Float32RoundDown, node); ++} ++ ++void InstructionSelector::VisitFloat64RoundDown(Node* node) { ++ VisitRR(this, kSw64Float64RoundDown, node); ++} ++ ++void InstructionSelector::VisitFloat32RoundUp(Node* node) { ++ VisitRR(this, kSw64Float32RoundUp, node); ++} ++ ++void InstructionSelector::VisitFloat64RoundUp(Node* node) { ++ VisitRR(this, kSw64Float64RoundUp, node); ++} ++ ++void InstructionSelector::VisitFloat32RoundTruncate(Node* node) { ++ VisitRR(this, kSw64Float32RoundTruncate, node); ++} ++ ++void InstructionSelector::VisitFloat64RoundTruncate(Node* node) { ++ VisitRR(this, kSw64Float64RoundTruncate, node); ++} ++ ++void InstructionSelector::VisitFloat64RoundTiesAway(Node* node) { ++ UNREACHABLE(); ++} ++ ++void InstructionSelector::VisitFloat32RoundTiesEven(Node* node) { ++ VisitRR(this, kSw64Float32RoundTiesEven, node); ++} ++ ++void InstructionSelector::VisitFloat64RoundTiesEven(Node* node) { ++ VisitRR(this, kSw64Float64RoundTiesEven, node); ++} ++ ++void InstructionSelector::VisitFloat32Neg(Node* node) { ++ VisitRR(this, kSw64Fnegs, node); ++} ++ ++void InstructionSelector::VisitFloat64Neg(Node* node) { ++ VisitRR(this, kSw64Fnegd, node); ++} ++ ++void InstructionSelector::VisitFloat64Ieee754Binop(Node* node, ++ InstructionCode opcode) { ++ Sw64OperandGenerator g(this); ++ Emit(opcode, g.DefineAsFixed(node, f0), g.UseFixed(node->InputAt(0), f2), ++ g.UseFixed(node->InputAt(1), f4)) ++ ->MarkAsCall(); ++} ++ ++void InstructionSelector::VisitFloat64Ieee754Unop(Node* node, ++ InstructionCode opcode) { ++ Sw64OperandGenerator g(this); ++ Emit(opcode, g.DefineAsFixed(node, f0), g.UseFixed(node->InputAt(0), f16)) ++ ->MarkAsCall(); ++} ++ ++void InstructionSelector::EmitMoveParamToFPR(Node* node, int index) {} ++ ++void InstructionSelector::EmitMoveFPRToParam(InstructionOperand* op, ++ LinkageLocation location) {} ++ ++void InstructionSelector::EmitPrepareArguments( ++ ZoneVector* arguments, const CallDescriptor* call_descriptor, ++ Node* node) { ++ Sw64OperandGenerator g(this); ++ ++ // Prepare for C function call. ++ if (call_descriptor->IsCFunctionCall()) { ++ Emit(kArchPrepareCallCFunction | MiscField::encode(static_cast( ++ call_descriptor->ParameterCount())), ++ 0, nullptr, 0, nullptr); ++ ++ // Poke any stack arguments. ++ int slot = kCArgSlotCount; ++ for (PushParameter input : (*arguments)) { ++ Emit(kSw64Poke, g.NoOutput(), g.UseRegister(input.node), ++ g.TempImmediate(slot << kSystemPointerSizeLog2)); ++ ++slot; ++ } ++ } else { ++ int push_count = static_cast(call_descriptor->ParameterSlotCount()); ++ if (push_count > 0) { ++ // Calculate needed space ++ int stack_size = 0; ++ for (PushParameter input : (*arguments)) { ++ if (input.node) { ++ stack_size += input.location.GetSizeInPointers(); ++ } ++ } ++ Emit(kSw64StackClaim, g.NoOutput(), ++ g.TempImmediate(stack_size << kSystemPointerSizeLog2)); ++ } ++ for (size_t n = 0; n < arguments->size(); ++n) { ++ PushParameter input = (*arguments)[n]; ++ if (input.node) { ++ Emit(kSw64Poke, g.NoOutput(), g.UseRegister(input.node), ++ g.TempImmediate(static_cast(n << kSystemPointerSizeLog2))); ++ } ++ } ++ } ++} ++ ++void InstructionSelector::EmitPrepareResults( ++ ZoneVector* results, const CallDescriptor* call_descriptor, ++ Node* node) { ++ Sw64OperandGenerator g(this); ++ ++ for (PushParameter output : *results) { ++ if (!output.location.IsCallerFrameSlot()) continue; ++ // Skip any alignment holes in nodes. ++ if (output.node != nullptr) { ++ DCHECK(!call_descriptor->IsCFunctionCall()); ++ if (output.location.GetType() == MachineType::Float32()) { ++ MarkAsFloat32(output.node); ++ } else if (output.location.GetType() == MachineType::Float64()) { ++ MarkAsFloat64(output.node); ++ } ++ int offset = call_descriptor->GetOffsetToReturns(); ++ int reverse_slot = -output.location.GetLocation() - offset; ++ Emit(kSw64Peek, g.DefineAsRegister(output.node), ++ g.UseImmediate(reverse_slot)); ++ } ++ } ++} ++ ++bool InstructionSelector::IsTailCallAddressImmediate() { return false; } ++ ++void InstructionSelector::VisitUnalignedLoad(Node* node) { ++ LoadRepresentation load_rep = LoadRepresentationOf(node->op()); ++ Sw64OperandGenerator g(this); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ ++ ArchOpcode opcode; ++ switch (load_rep.representation()) { ++ case MachineRepresentation::kFloat32: ++ opcode = kSw64Flds_u; ++ break; ++ case MachineRepresentation::kFloat64: ++ opcode = kSw64Fldd_u; ++ break; ++ case MachineRepresentation::kWord8: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldbu : kSw64Ldb; ++ break; ++ case MachineRepresentation::kWord16: ++ opcode = load_rep.IsUnsigned() ? kSw64Ldhu_u : kSw64Ldh_u; ++ break; ++ case MachineRepresentation::kWord32: ++ opcode = kSw64Ldw_u; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: // Fall through. ++ case MachineRepresentation::kWord64: ++ opcode = kSw64Ldl_u; ++ break; ++ case MachineRepresentation::kSimd128: ++ opcode = kSw64SwsaLd; ++ break; ++ case MachineRepresentation::kSimd256: // Fall through. ++ case MachineRepresentation::kBit: // Fall through. ++ case MachineRepresentation::kCompressedPointer: // Fall through. ++ case MachineRepresentation::kCompressed: // Fall through. ++ case MachineRepresentation::kSandboxedPointer: // Fall through. ++ case MachineRepresentation::kMapWord: // Fall through. ++ case MachineRepresentation::kNone: ++ UNREACHABLE(); ++ } ++ ++ if (g.CanBeImmediate(index, opcode)) { ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), ++ g.DefineAsRegister(node), g.UseRegister(base), g.UseImmediate(index)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ Emit(kSw64Addl | AddressingModeField::encode(kMode_None), addr_reg, ++ g.UseRegister(index), g.UseRegister(base)); ++ // Emit desired load opcode, using temp addr_reg. ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), ++ g.DefineAsRegister(node), addr_reg, g.TempImmediate(0)); ++ } ++} ++ ++void InstructionSelector::VisitUnalignedStore(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* value = node->InputAt(2); ++ ++ UnalignedStoreRepresentation rep = UnalignedStoreRepresentationOf(node->op()); ++ ArchOpcode opcode; ++ switch (rep) { ++ case MachineRepresentation::kFloat32: ++ opcode = kSw64Fsts_u; ++ break; ++ case MachineRepresentation::kFloat64: ++ opcode = kSw64Fstd_u; ++ break; ++ case MachineRepresentation::kWord8: ++ opcode = kSw64Stb; ++ break; ++ case MachineRepresentation::kWord16: ++ opcode = kSw64Sth_u; ++ break; ++ case MachineRepresentation::kWord32: ++ opcode = kSw64Stw_u; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: // Fall through. ++ case MachineRepresentation::kWord64: ++ opcode = kSw64Stl_u; ++ break; ++ case MachineRepresentation::kSimd128: ++ opcode = kSw64SwsaSt; ++ break; ++ case MachineRepresentation::kSimd256: // Fall through. ++ case MachineRepresentation::kBit: // Fall through. ++ case MachineRepresentation::kCompressedPointer: // Fall through. ++ case MachineRepresentation::kCompressed: // Fall through. ++ case MachineRepresentation::kSandboxedPointer: // Fall through. ++ case MachineRepresentation::kMapWord: // Fall through. ++ case MachineRepresentation::kNone: ++ UNREACHABLE(); ++ } ++ ++ if (g.CanBeImmediate(index, opcode)) { ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), ++ g.UseRegister(base), g.UseImmediate(index), ++ g.UseRegisterOrImmediateZero(value)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ Emit(kSw64Addl | AddressingModeField::encode(kMode_None), addr_reg, ++ g.UseRegister(index), g.UseRegister(base)); ++ // Emit desired store opcode, using temp addr_reg. ++ Emit(opcode | AddressingModeField::encode(kMode_MRI), g.NoOutput(), ++ addr_reg, g.TempImmediate(0), g.UseRegisterOrImmediateZero(value)); ++ } ++} ++ ++namespace { ++ ++// Shared routine for multiple compare operations. ++static void VisitCompare(InstructionSelector* selector, InstructionCode opcode, ++ InstructionOperand left, InstructionOperand right, ++ FlagsContinuation* cont) { ++ selector->EmitWithContinuation(opcode, left, right, cont); ++} ++ ++// Shared routine for multiple float32 compare operations. ++void VisitFloat32Compare(InstructionSelector* selector, Node* node, ++ FlagsContinuation* cont) { ++ Sw64OperandGenerator g(selector); ++ Float32BinopMatcher m(node); ++ InstructionOperand lhs, rhs; ++ ++ lhs = m.left().IsZero() ? g.UseImmediate(m.left().node()) ++ : g.UseRegister(m.left().node()); ++ rhs = m.right().IsZero() ? g.UseImmediate(m.right().node()) ++ : g.UseRegister(m.right().node()); ++ VisitCompare(selector, kSw64Fcmps, lhs, rhs, cont); ++} ++ ++// Shared routine for multiple float64 compare operations. ++void VisitFloat64Compare(InstructionSelector* selector, Node* node, ++ FlagsContinuation* cont) { ++ Sw64OperandGenerator g(selector); ++ Float64BinopMatcher m(node); ++ InstructionOperand lhs, rhs; ++ ++ lhs = m.left().IsZero() ? g.UseImmediate(m.left().node()) ++ : g.UseRegister(m.left().node()); ++ rhs = m.right().IsZero() ? g.UseImmediate(m.right().node()) ++ : g.UseRegister(m.right().node()); ++ VisitCompare(selector, kSw64Fcmpd, lhs, rhs, cont); ++} ++ ++// Shared routine for multiple word compare operations. ++void VisitWordCompare(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, FlagsContinuation* cont, ++ bool commutative) { ++ Sw64OperandGenerator g(selector); ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ ++ // Match immediates on left or right side of comparison. ++ if (g.CanBeImmediate(right, opcode)) { ++ if (opcode == kSw64Tst) { ++ VisitCompare(selector, opcode, g.UseRegister(left), g.UseImmediate(right), ++ cont); ++ } else { ++ switch (cont->condition()) { ++ case kEqual: ++ case kNotEqual: ++ if (cont->IsSet()) { ++ VisitCompare(selector, opcode, g.UseRegister(left), ++ g.UseImmediate(right), cont); ++ } else { ++ VisitCompare(selector, opcode, g.UseRegister(left), ++ g.UseRegister(right), cont); ++ } ++ break; ++ case kSignedLessThan: ++ case kSignedGreaterThanOrEqual: ++ case kUnsignedLessThan: ++ case kUnsignedGreaterThanOrEqual: ++ VisitCompare(selector, opcode, g.UseRegister(left), ++ g.UseImmediate(right), cont); ++ break; ++ default: ++ VisitCompare(selector, opcode, g.UseRegister(left), ++ g.UseRegister(right), cont); ++ } ++ } ++ } else if (g.CanBeImmediate(left, opcode)) { ++ if (!commutative) cont->Commute(); ++ if (opcode == kSw64Tst) { ++ VisitCompare(selector, opcode, g.UseRegister(right), g.UseImmediate(left), ++ cont); ++ } else { ++ switch (cont->condition()) { ++ case kEqual: ++ case kNotEqual: ++ if (cont->IsSet()) { ++ VisitCompare(selector, opcode, g.UseRegister(right), ++ g.UseImmediate(left), cont); ++ } else { ++ VisitCompare(selector, opcode, g.UseRegister(right), ++ g.UseRegister(left), cont); ++ } ++ break; ++ case kSignedLessThan: ++ case kSignedGreaterThanOrEqual: ++ case kUnsignedLessThan: ++ case kUnsignedGreaterThanOrEqual: ++ VisitCompare(selector, opcode, g.UseRegister(right), ++ g.UseImmediate(left), cont); ++ break; ++ default: ++ VisitCompare(selector, opcode, g.UseRegister(right), ++ g.UseRegister(left), cont); ++ } ++ } ++ } else { ++ VisitCompare(selector, opcode, g.UseRegister(left), g.UseRegister(right), ++ cont); ++ } ++} ++ ++bool IsNodeUnsigned(Node* n) { ++ NodeMatcher m(n); ++ ++ if (m.IsLoad() || m.IsUnalignedLoad() || m.IsProtectedLoad()) { ++ LoadRepresentation load_rep = LoadRepresentationOf(n->op()); ++ return load_rep.IsUnsigned(); ++ } else if (m.IsWord32AtomicLoad() || m.IsWord64AtomicLoad()) { ++ AtomicLoadParameters atomic_load_params = AtomicLoadParametersOf(n->op()); ++ LoadRepresentation load_rep = atomic_load_params.representation(); ++ return load_rep.IsUnsigned(); ++ } else { ++ return m.IsUint32Div() || m.IsUint32LessThan() || ++ m.IsUint32LessThanOrEqual() || m.IsUint32Mod() || ++ m.IsUint32MulHigh() || m.IsChangeFloat64ToUint32() || ++ m.IsTruncateFloat64ToUint32() || m.IsTruncateFloat32ToUint32(); ++ } ++} ++ ++// Shared routine for multiple word compare operations. ++void VisitFullWord32Compare(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, FlagsContinuation* cont) { ++ Sw64OperandGenerator g(selector); ++ InstructionOperand leftOp = g.TempRegister(); ++ InstructionOperand rightOp = g.TempRegister(); ++ ++ selector->Emit(kSw64Slll, leftOp, g.UseRegister(node->InputAt(0)), ++ g.TempImmediate(32)); ++ selector->Emit(kSw64Slll, rightOp, g.UseRegister(node->InputAt(1)), ++ g.TempImmediate(32)); ++ ++ VisitCompare(selector, opcode, leftOp, rightOp, cont); ++} ++ ++void VisitOptimizedWord32Compare(InstructionSelector* selector, Node* node, ++ InstructionCode opcode, ++ FlagsContinuation* cont) { ++ if (v8_flags.debug_code) { ++ Sw64OperandGenerator g(selector); ++ InstructionOperand leftOp = g.TempRegister(); ++ InstructionOperand rightOp = g.TempRegister(); ++ InstructionOperand optimizedResult = g.TempRegister(); ++ InstructionOperand fullResult = g.TempRegister(); ++ FlagsCondition condition = cont->condition(); ++ InstructionCode testOpcode = opcode | ++ FlagsConditionField::encode(condition) | ++ FlagsModeField::encode(kFlags_set); ++ ++ selector->Emit(testOpcode, optimizedResult, g.UseRegister(node->InputAt(0)), ++ g.UseRegister(node->InputAt(1))); ++ ++ selector->Emit(kSw64Slll, leftOp, g.UseRegister(node->InputAt(0)), ++ g.TempImmediate(32)); ++ selector->Emit(kSw64Slll, rightOp, g.UseRegister(node->InputAt(1)), ++ g.TempImmediate(32)); ++ selector->Emit(testOpcode, fullResult, leftOp, rightOp); ++ ++ selector->Emit(kSw64AssertEqual, g.NoOutput(), optimizedResult, fullResult, ++ g.TempImmediate(static_cast( ++ AbortReason::kUnsupportedNonPrimitiveCompare))); ++ } ++ ++ VisitWordCompare(selector, node, opcode, cont, false); ++} ++ ++void VisitWord32Compare(InstructionSelector* selector, Node* node, ++ FlagsContinuation* cont) { ++ // SW64 doesn't support Word32 compare instructions. Instead it relies ++ // that the values in registers are correctly sign-extended and uses ++ // Word64 comparison instead. This behavior is correct in most cases, ++ // but doesn't work when comparing signed with unsigned operands. ++ // We could simulate full Word32 compare in all cases but this would ++ // create an unnecessary overhead since unsigned integers are rarely ++ // used in JavaScript. ++ // The solution proposed here tries to match a comparison of signed ++ // with unsigned operand, and perform full Word32Compare only ++ // in those cases. Unfortunately, the solution is not complete because ++ // it might skip cases where Word32 full compare is needed, so ++ // basically it is a hack. ++ // When call to a host function in simulator, if the function return a ++ // int32 value, the simulator do not sign-extended to int64 because in ++ // simulator we do not know the function whether return a int32 or int64. ++ // so we need do a full word32 compare in this case. ++#ifndef USE_SIMULATOR ++ if (IsNodeUnsigned(node->InputAt(0)) != IsNodeUnsigned(node->InputAt(1))) { ++#else ++ if (IsNodeUnsigned(node->InputAt(0)) != IsNodeUnsigned(node->InputAt(1)) || ++ node->InputAt(0)->opcode() == IrOpcode::kCall || ++ node->InputAt(1)->opcode() == IrOpcode::kCall) { ++#endif ++ VisitFullWord32Compare(selector, node, kSw64Cmp, cont); ++ } else { ++ VisitOptimizedWord32Compare(selector, node, kSw64Cmp, cont); ++ } ++} ++ ++void VisitWord64Compare(InstructionSelector* selector, Node* node, ++ FlagsContinuation* cont) { ++ VisitWordCompare(selector, node, kSw64Cmp, cont, false); ++} ++ ++void EmitWordCompareZero(InstructionSelector* selector, Node* value, ++ FlagsContinuation* cont) { ++ Sw64OperandGenerator g(selector); ++ selector->EmitWithContinuation(kSw64Cmp, g.UseRegister(value), ++ g.TempImmediate(0), cont); ++} ++ ++void VisitAtomicLoad(InstructionSelector* selector, Node* node, ++ AtomicWidth width) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ ++ // The memory order is ignored. ++ AtomicLoadParameters atomic_load_params = AtomicLoadParametersOf(node->op()); ++ LoadRepresentation load_rep = atomic_load_params.representation(); ++ InstructionCode code; ++ switch (load_rep.representation()) { ++ case MachineRepresentation::kWord8: ++ DCHECK_IMPLIES(load_rep.IsSigned(), width == AtomicWidth::kWord32); ++ code = load_rep.IsSigned() ? kAtomicLoadInt8 : kAtomicLoadUint8; ++ break; ++ case MachineRepresentation::kWord16: ++ DCHECK_IMPLIES(load_rep.IsSigned(), width == AtomicWidth::kWord32); ++ code = load_rep.IsSigned() ? kAtomicLoadInt16 : kAtomicLoadUint16; ++ break; ++ case MachineRepresentation::kWord32: ++ code = kAtomicLoadWord32; ++ break; ++ case MachineRepresentation::kWord64: ++ code = kSw64Word64AtomicLoadUint64; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: ++ DCHECK_EQ(kTaggedSize, 8); ++ code = kSw64Word64AtomicLoadUint64; ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ ++ if (g.CanBeImmediate(index, code)) { ++ selector->Emit(code | AddressingModeField::encode(kMode_MRI) | ++ AtomicWidthField::encode(width), ++ g.DefineAsRegister(node), g.UseRegister(base), ++ g.UseImmediate(index)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ selector->Emit(kSw64Addl | AddressingModeField::encode(kMode_None), ++ addr_reg, g.UseRegister(index), g.UseRegister(base)); ++ // Emit desired load opcode, using temp addr_reg. ++ selector->Emit(code | AddressingModeField::encode(kMode_MRI) | ++ AtomicWidthField::encode(width), ++ g.DefineAsRegister(node), addr_reg, g.TempImmediate(0)); ++ } ++} ++ ++void VisitAtomicStore(InstructionSelector* selector, Node* node, ++ AtomicWidth width) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* value = node->InputAt(2); ++ ++ // The memory order is ignored. ++ AtomicStoreParameters store_params = AtomicStoreParametersOf(node->op()); ++ WriteBarrierKind write_barrier_kind = store_params.write_barrier_kind(); ++ MachineRepresentation rep = store_params.representation(); ++ ++ if (v8_flags.enable_unconditional_write_barriers && ++ CanBeTaggedOrCompressedPointer(rep)) { ++ write_barrier_kind = kFullWriteBarrier; ++ } ++ ++ InstructionCode code; ++ ++ if (write_barrier_kind != kNoWriteBarrier && ++ !v8_flags.disable_write_barriers) { ++ DCHECK(CanBeTaggedPointer(rep)); ++ DCHECK_EQ(AtomicWidthSize(width), kTaggedSize); ++ ++ InstructionOperand inputs[3]; ++ size_t input_count = 0; ++ inputs[input_count++] = g.UseUniqueRegister(base); ++ inputs[input_count++] = g.UseUniqueRegister(index); ++ inputs[input_count++] = g.UseUniqueRegister(value); ++ RecordWriteMode record_write_mode = ++ WriteBarrierKindToRecordWriteMode(write_barrier_kind); ++ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()}; ++ size_t const temp_count = arraysize(temps); ++ code = kArchAtomicStoreWithWriteBarrier; ++ code |= RecordWriteModeField::encode(record_write_mode); ++ selector->Emit(code, 0, nullptr, input_count, inputs, temp_count, temps); ++ } else { ++ switch (rep) { ++ case MachineRepresentation::kWord8: ++ code = kAtomicStoreWord8; ++ break; ++ case MachineRepresentation::kWord16: ++ code = kAtomicStoreWord16; ++ break; ++ case MachineRepresentation::kWord32: ++ code = kAtomicStoreWord32; ++ break; ++ case MachineRepresentation::kWord64: ++ DCHECK_EQ(width, AtomicWidth::kWord64); ++ code = kSw64Word64AtomicStoreWord64; ++ break; ++ case MachineRepresentation::kTaggedSigned: // Fall through. ++ case MachineRepresentation::kTaggedPointer: // Fall through. ++ case MachineRepresentation::kTagged: ++ DCHECK_EQ(AtomicWidthSize(width), kTaggedSize); ++ code = kSw64StoreCompressTagged; ++ break; ++ default: ++ UNREACHABLE(); ++ } ++ code |= AtomicWidthField::encode(width); ++ ++ if (g.CanBeImmediate(index, code)) { ++ selector->Emit(code | AddressingModeField::encode(kMode_MRI) | ++ AtomicWidthField::encode(width), ++ g.NoOutput(), g.UseRegister(base), g.UseImmediate(index), ++ g.UseRegisterOrImmediateZero(value)); ++ } else { ++ InstructionOperand addr_reg = g.TempRegister(); ++ selector->Emit(kSw64Addl | AddressingModeField::encode(kMode_None), ++ addr_reg, g.UseRegister(index), g.UseRegister(base)); ++ // Emit desired store opcode, using temp addr_reg. ++ selector->Emit(code | AddressingModeField::encode(kMode_MRI) | ++ AtomicWidthField::encode(width), ++ g.NoOutput(), addr_reg, g.TempImmediate(0), ++ g.UseRegisterOrImmediateZero(value)); ++ } ++ } ++} ++ ++void VisitAtomicExchange(InstructionSelector* selector, Node* node, ++ ArchOpcode opcode, AtomicWidth width) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* value = node->InputAt(2); ++ ++ AddressingMode addressing_mode = kMode_MRI; ++ InstructionOperand inputs[3]; ++ size_t input_count = 0; ++ inputs[input_count++] = g.UseUniqueRegister(base); ++ inputs[input_count++] = g.UseUniqueRegister(index); ++ inputs[input_count++] = g.UseUniqueRegister(value); ++ InstructionOperand outputs[1]; ++ outputs[0] = g.UseUniqueRegister(node); ++ InstructionOperand temp[3]; ++ temp[0] = g.TempRegister(); ++ temp[1] = g.TempRegister(); ++ temp[2] = g.TempRegister(); ++ InstructionCode code = opcode | AddressingModeField::encode(addressing_mode) | ++ AtomicWidthField::encode(width); ++ selector->Emit(code, 1, outputs, input_count, inputs, 3, temp); ++} ++ ++void VisitAtomicCompareExchange(InstructionSelector* selector, Node* node, ++ ArchOpcode opcode, AtomicWidth width) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* old_value = node->InputAt(2); ++ Node* new_value = node->InputAt(3); ++ ++ AddressingMode addressing_mode = kMode_MRI; ++ InstructionOperand inputs[4]; ++ size_t input_count = 0; ++ inputs[input_count++] = g.UseUniqueRegister(base); ++ inputs[input_count++] = g.UseUniqueRegister(index); ++ inputs[input_count++] = g.UseUniqueRegister(old_value); ++ inputs[input_count++] = g.UseUniqueRegister(new_value); ++ InstructionOperand outputs[1]; ++ outputs[0] = g.UseUniqueRegister(node); ++ InstructionOperand temp[3]; ++ temp[0] = g.TempRegister(); ++ temp[1] = g.TempRegister(); ++ temp[2] = g.TempRegister(); ++ InstructionCode code = opcode | AddressingModeField::encode(addressing_mode) | ++ AtomicWidthField::encode(width); ++ selector->Emit(code, 1, outputs, input_count, inputs, 3, temp); ++} ++ ++void VisitAtomicBinop(InstructionSelector* selector, Node* node, ++ ArchOpcode opcode, AtomicWidth width) { ++ Sw64OperandGenerator g(selector); ++ Node* base = node->InputAt(0); ++ Node* index = node->InputAt(1); ++ Node* value = node->InputAt(2); ++ ++ AddressingMode addressing_mode = kMode_MRI; ++ InstructionOperand inputs[3]; ++ size_t input_count = 0; ++ inputs[input_count++] = g.UseUniqueRegister(base); ++ inputs[input_count++] = g.UseUniqueRegister(index); ++ inputs[input_count++] = g.UseUniqueRegister(value); ++ InstructionOperand outputs[1]; ++ outputs[0] = g.UseUniqueRegister(node); ++ InstructionOperand temps[4]; ++ temps[0] = g.TempRegister(); ++ temps[1] = g.TempRegister(); ++ temps[2] = g.TempRegister(); ++ temps[3] = g.TempRegister(); ++ InstructionCode code = opcode | AddressingModeField::encode(addressing_mode) | ++ AtomicWidthField::encode(width); ++ selector->Emit(code, 1, outputs, input_count, inputs, 4, temps); ++} ++ ++} // namespace ++ ++void InstructionSelector::VisitStackPointerGreaterThan( ++ Node* node, FlagsContinuation* cont) { ++ StackCheckKind kind = StackCheckKindOf(node->op()); ++ InstructionCode opcode = ++ kArchStackPointerGreaterThan | MiscField::encode(static_cast(kind)); ++ ++ Sw64OperandGenerator g(this); ++ ++ // No outputs. ++ InstructionOperand* const outputs = nullptr; ++ const int output_count = 0; ++ ++ // TempRegister(0) is used to store the comparison result. ++ // Applying an offset to this stack check requires a temp register. Offsets ++ // are only applied to the first stack check. If applying an offset, we must ++ // ensure the input and temp registers do not alias, thus kUniqueRegister. ++ InstructionOperand temps[] = {g.TempRegister(), g.TempRegister()}; ++ const int temp_count = (kind == StackCheckKind::kJSFunctionEntry ? 2 : 1); ++ const auto register_mode = (kind == StackCheckKind::kJSFunctionEntry) ++ ? OperandGenerator::kUniqueRegister ++ : OperandGenerator::kRegister; ++ ++ Node* const value = node->InputAt(0); ++ InstructionOperand inputs[] = {g.UseRegisterWithMode(value, register_mode)}; ++ static constexpr int input_count = arraysize(inputs); ++ ++ EmitWithContinuation(opcode, output_count, outputs, input_count, inputs, ++ temp_count, temps, cont); ++} ++ ++// Shared routine for word comparisons against zero. ++void InstructionSelector::VisitWordCompareZero(Node* user, Node* value, ++ FlagsContinuation* cont) { ++ // Try to combine with comparisons against 0 by simply inverting the branch. ++ while (CanCover(user, value)) { ++ if (value->opcode() == IrOpcode::kWord32Equal) { ++ Int32BinopMatcher m(value); ++ if (!m.right().Is(0)) break; ++ user = value; ++ value = m.left().node(); ++ } else if (value->opcode() == IrOpcode::kWord64Equal) { ++ Int64BinopMatcher m(value); ++ if (!m.right().Is(0)) break; ++ user = value; ++ value = m.left().node(); ++ } else { ++ break; ++ } ++ ++ cont->Negate(); ++ } ++ ++ if (CanCover(user, value)) { ++ switch (value->opcode()) { ++ case IrOpcode::kWord32Equal: ++ cont->OverwriteAndNegateIfEqual(kEqual); ++ return VisitWord32Compare(this, value, cont); ++ case IrOpcode::kInt32LessThan: ++ cont->OverwriteAndNegateIfEqual(kSignedLessThan); ++ return VisitWord32Compare(this, value, cont); ++ case IrOpcode::kInt32LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); ++ return VisitWord32Compare(this, value, cont); ++ case IrOpcode::kUint32LessThan: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); ++ return VisitWord32Compare(this, value, cont); ++ case IrOpcode::kUint32LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); ++ return VisitWord32Compare(this, value, cont); ++ case IrOpcode::kWord64Equal: ++ cont->OverwriteAndNegateIfEqual(kEqual); ++ return VisitWord64Compare(this, value, cont); ++ case IrOpcode::kInt64LessThan: ++ cont->OverwriteAndNegateIfEqual(kSignedLessThan); ++ return VisitWord64Compare(this, value, cont); ++ case IrOpcode::kInt64LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kSignedLessThanOrEqual); ++ return VisitWord64Compare(this, value, cont); ++ case IrOpcode::kUint64LessThan: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); ++ return VisitWord64Compare(this, value, cont); ++ case IrOpcode::kUint64LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); ++ return VisitWord64Compare(this, value, cont); ++ case IrOpcode::kFloat32Equal: ++ cont->OverwriteAndNegateIfEqual(kEqual); ++ return VisitFloat32Compare(this, value, cont); ++ case IrOpcode::kFloat32LessThan: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); ++ return VisitFloat32Compare(this, value, cont); ++ case IrOpcode::kFloat32LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); ++ return VisitFloat32Compare(this, value, cont); ++ case IrOpcode::kFloat64Equal: ++ cont->OverwriteAndNegateIfEqual(kEqual); ++ return VisitFloat64Compare(this, value, cont); ++ case IrOpcode::kFloat64LessThan: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThan); ++ return VisitFloat64Compare(this, value, cont); ++ case IrOpcode::kFloat64LessThanOrEqual: ++ cont->OverwriteAndNegateIfEqual(kUnsignedLessThanOrEqual); ++ return VisitFloat64Compare(this, value, cont); ++ case IrOpcode::kProjection: ++ // Check if this is the overflow output projection of an ++ // WithOverflow node. ++ if (ProjectionIndexOf(value->op()) == 1u) { ++ // We cannot combine the WithOverflow with this branch ++ // unless the 0th projection (the use of the actual value of the ++ // is either nullptr, which means there's no use of the ++ // actual value, or was already defined, which means it is scheduled ++ // *AFTER* this branch). ++ Node* const node = value->InputAt(0); ++ Node* const result = NodeProperties::FindProjection(node, 0); ++ if (result == nullptr || IsDefined(result)) { ++ switch (node->opcode()) { ++ case IrOpcode::kInt32AddWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64Addl, cont); ++ case IrOpcode::kInt32SubWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64Subl, cont); ++ case IrOpcode::kInt32MulWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64MulwOvf, cont); ++ case IrOpcode::kInt64MulWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64MullOvf, cont); ++ case IrOpcode::kInt64AddWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64AddlOvf, cont); ++ case IrOpcode::kInt64SubWithOverflow: ++ cont->OverwriteAndNegateIfEqual(kOverflow); ++ return VisitBinop(this, node, kSw64SublOvf, cont); ++ default: ++ break; ++ } ++ } ++ } ++ break; ++ case IrOpcode::kWord32And: ++ case IrOpcode::kWord64And: ++ return VisitWordCompare(this, value, kSw64Tst, cont, true); ++ case IrOpcode::kStackPointerGreaterThan: ++ cont->OverwriteAndNegateIfEqual(kStackPointerGreaterThanCondition); ++ return VisitStackPointerGreaterThan(value, cont); ++ default: ++ break; ++ } ++ } ++ ++ // Continuation could not be combined with a compare, emit compare against 0. ++ EmitWordCompareZero(this, value, cont); ++} ++ ++void InstructionSelector::VisitSwitch(Node* node, const SwitchInfo& sw) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand value_operand = g.UseRegister(node->InputAt(0)); ++ ++ // Emit either ArchTableSwitch or ArchBinarySearchSwitch. ++ if (enable_switch_jump_table_ == kEnableSwitchJumpTable) { ++ static const size_t kMaxTableSwitchValueRange = 2 << 16; ++ size_t table_space_cost = 10 + 2 * sw.value_range(); ++ size_t table_time_cost = 3; ++ size_t lookup_space_cost = 2 + 2 * sw.case_count(); ++ size_t lookup_time_cost = sw.case_count(); ++ if (sw.case_count() > 0 && ++ table_space_cost + 3 * table_time_cost <= ++ lookup_space_cost + 3 * lookup_time_cost && ++ sw.min_value() > std::numeric_limits::min() && ++ sw.value_range() <= kMaxTableSwitchValueRange) { ++ InstructionOperand index_operand = value_operand; ++ if (sw.min_value()) { ++ index_operand = g.TempRegister(); ++ Emit(kSw64Subw, index_operand, value_operand, ++ g.TempImmediate(sw.min_value())); ++ } ++ // Generate a table lookup. ++ return EmitTableSwitch(sw, index_operand); ++ } ++ } ++ ++ // Generate a tree of conditional jumps. ++ return EmitBinarySearchSwitch(sw, value_operand); ++} ++ ++void InstructionSelector::VisitWord32Equal(Node* const node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); ++ Int32BinopMatcher m(node); ++ if (m.right().Is(0)) { ++ return VisitWordCompareZero(m.node(), m.left().node(), &cont); ++ } ++ ++ VisitWord32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitInt32LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kSignedLessThan, node); ++ VisitWord32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitInt32LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kSignedLessThanOrEqual, node); ++ VisitWord32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitUint32LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); ++ VisitWord32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitUint32LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); ++ VisitWord32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitInt32AddWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64Addl, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64Addl, &cont); ++} ++ ++void InstructionSelector::VisitInt32SubWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64Subl, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64Subl, &cont); ++} ++ ++void InstructionSelector::VisitInt32MulWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64MulwOvf, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64MulwOvf, &cont); ++} ++ ++void InstructionSelector::VisitInt64MulWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64MullOvf, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64MullOvf, &cont); ++} ++ ++void InstructionSelector::VisitInt64AddWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64AddlOvf, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64AddlOvf, &cont); ++} ++ ++void InstructionSelector::VisitInt64SubWithOverflow(Node* node) { ++ if (Node* ovf = NodeProperties::FindProjection(node, 1)) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kOverflow, ovf); ++ return VisitBinop(this, node, kSw64SublOvf, &cont); ++ } ++ FlagsContinuation cont; ++ VisitBinop(this, node, kSw64SublOvf, &cont); ++} ++ ++void InstructionSelector::VisitWord64Equal(Node* const node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); ++ Int64BinopMatcher m(node); ++ if (m.right().Is(0)) { ++ return VisitWordCompareZero(m.node(), m.left().node(), &cont); ++ } ++ ++ VisitWord64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitInt64LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kSignedLessThan, node); ++ VisitWord64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitInt64LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kSignedLessThanOrEqual, node); ++ VisitWord64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitUint64LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); ++ VisitWord64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitUint64LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); ++ VisitWord64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat32Equal(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); ++ VisitFloat32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat32LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); ++ VisitFloat32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat32LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); ++ VisitFloat32Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat64Equal(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kEqual, node); ++ VisitFloat64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat64LessThan(Node* node) { ++ FlagsContinuation cont = FlagsContinuation::ForSet(kUnsignedLessThan, node); ++ VisitFloat64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat64LessThanOrEqual(Node* node) { ++ FlagsContinuation cont = ++ FlagsContinuation::ForSet(kUnsignedLessThanOrEqual, node); ++ VisitFloat64Compare(this, node, &cont); ++} ++ ++void InstructionSelector::VisitFloat64ExtractLowWord32(Node* node) { ++ VisitRR(this, kSw64Float64ExtractLowWord32, node); ++} ++ ++void InstructionSelector::VisitFloat64ExtractHighWord32(Node* node) { ++ VisitRR(this, kSw64Float64ExtractHighWord32, node); ++} ++ ++void InstructionSelector::VisitFloat64SilenceNaN(Node* node) { ++ VisitRR(this, kSw64Float64SilenceNaN, node); ++} ++ ++void InstructionSelector::VisitFloat64InsertLowWord32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ Emit(kSw64Float64InsertLowWord32, g.DefineSameAsFirst(node), ++ g.UseRegister(left), g.UseRegister(right)); ++} ++ ++void InstructionSelector::VisitFloat64InsertHighWord32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Node* left = node->InputAt(0); ++ Node* right = node->InputAt(1); ++ Emit(kSw64Float64InsertHighWord32, g.DefineSameAsFirst(node), ++ g.UseRegister(left), g.UseRegister(right)); ++} ++ ++void InstructionSelector::VisitMemoryBarrier(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Memb, g.NoOutput()); ++} ++ ++void InstructionSelector::VisitWord32AtomicLoad(Node* node) { ++ VisitAtomicLoad(this, node, AtomicWidth::kWord32); ++} ++ ++void InstructionSelector::VisitWord32AtomicStore(Node* node) { ++ VisitAtomicStore(this, node, AtomicWidth::kWord32); ++} ++ ++void InstructionSelector::VisitWord64AtomicLoad(Node* node) { ++ VisitAtomicLoad(this, node, AtomicWidth::kWord64); ++} ++ ++void InstructionSelector::VisitWord64AtomicStore(Node* node) { ++ VisitAtomicStore(this, node, AtomicWidth::kWord64); ++} ++ ++void InstructionSelector::VisitWord32AtomicExchange(Node* node) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Int8()) { ++ opcode = kAtomicExchangeInt8; ++ } else if (type == MachineType::Uint8()) { ++ opcode = kAtomicExchangeUint8; ++ } else if (type == MachineType::Int16()) { ++ opcode = kAtomicExchangeInt16; ++ } else if (type == MachineType::Uint16()) { ++ opcode = kAtomicExchangeUint16; ++ } else if (type == MachineType::Int32() || type == MachineType::Uint32()) { ++ opcode = kAtomicExchangeWord32; ++ } else { ++ UNREACHABLE(); ++ } ++ ++ VisitAtomicExchange(this, node, opcode, AtomicWidth::kWord32); ++} ++ ++void InstructionSelector::VisitWord64AtomicExchange(Node* node) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Uint8()) { ++ opcode = kAtomicExchangeUint8; ++ } else if (type == MachineType::Uint16()) { ++ opcode = kAtomicExchangeUint16; ++ } else if (type == MachineType::Uint32()) { ++ opcode = kAtomicExchangeWord32; ++ } else if (type == MachineType::Uint64()) { ++ opcode = kSw64Word64AtomicExchangeUint64; ++ } else { ++ UNREACHABLE(); ++ } ++ VisitAtomicExchange(this, node, opcode, AtomicWidth::kWord64); ++} ++ ++void InstructionSelector::VisitWord32AtomicCompareExchange(Node* node) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Int8()) { ++ opcode = kAtomicCompareExchangeInt8; ++ } else if (type == MachineType::Uint8()) { ++ opcode = kAtomicCompareExchangeUint8; ++ } else if (type == MachineType::Int16()) { ++ opcode = kAtomicCompareExchangeInt16; ++ } else if (type == MachineType::Uint16()) { ++ opcode = kAtomicCompareExchangeUint16; ++ } else if (type == MachineType::Int32() || type == MachineType::Uint32()) { ++ opcode = kAtomicCompareExchangeWord32; ++ } else { ++ UNREACHABLE(); ++ } ++ ++ VisitAtomicCompareExchange(this, node, opcode, AtomicWidth::kWord32); ++} ++ ++void InstructionSelector::VisitWord64AtomicCompareExchange(Node* node) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Uint8()) { ++ opcode = kAtomicCompareExchangeUint8; ++ } else if (type == MachineType::Uint16()) { ++ opcode = kAtomicCompareExchangeUint16; ++ } else if (type == MachineType::Uint32()) { ++ opcode = kAtomicCompareExchangeWord32; ++ } else if (type == MachineType::Uint64()) { ++ opcode = kSw64Word64AtomicCompareExchangeUint64; ++ } else { ++ UNREACHABLE(); ++ } ++ VisitAtomicCompareExchange(this, node, opcode, AtomicWidth::kWord64); ++} ++void InstructionSelector::VisitWord32AtomicBinaryOperation( ++ Node* node, ArchOpcode int8_op, ArchOpcode uint8_op, ArchOpcode int16_op, ++ ArchOpcode uint16_op, ArchOpcode word32_op) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Int8()) { ++ opcode = int8_op; ++ } else if (type == MachineType::Uint8()) { ++ opcode = uint8_op; ++ } else if (type == MachineType::Int16()) { ++ opcode = int16_op; ++ } else if (type == MachineType::Uint16()) { ++ opcode = uint16_op; ++ } else if (type == MachineType::Int32() || type == MachineType::Uint32()) { ++ opcode = word32_op; ++ } else { ++ UNREACHABLE(); ++ } ++ ++ VisitAtomicBinop(this, node, opcode, AtomicWidth::kWord32); ++} ++ ++#define VISIT_ATOMIC_BINOP(op) \ ++ void InstructionSelector::VisitWord32Atomic##op(Node* node) { \ ++ VisitWord32AtomicBinaryOperation( \ ++ node, kAtomic##op##Int8, kAtomic##op##Uint8, kAtomic##op##Int16, \ ++ kAtomic##op##Uint16, kAtomic##op##Word32); \ ++ } ++VISIT_ATOMIC_BINOP(Add) ++VISIT_ATOMIC_BINOP(Sub) ++VISIT_ATOMIC_BINOP(And) ++VISIT_ATOMIC_BINOP(Or) ++VISIT_ATOMIC_BINOP(Xor) ++#undef VISIT_ATOMIC_BINOP ++ ++void InstructionSelector::VisitWord64AtomicBinaryOperation( ++ Node* node, ArchOpcode uint8_op, ArchOpcode uint16_op, ArchOpcode uint32_op, ++ ArchOpcode uint64_op) { ++ ArchOpcode opcode; ++ MachineType type = AtomicOpType(node->op()); ++ if (type == MachineType::Uint8()) { ++ opcode = uint8_op; ++ } else if (type == MachineType::Uint16()) { ++ opcode = uint16_op; ++ } else if (type == MachineType::Uint32()) { ++ opcode = uint32_op; ++ } else if (type == MachineType::Uint64()) { ++ opcode = uint64_op; ++ } else { ++ UNREACHABLE(); ++ } ++ VisitAtomicBinop(this, node, opcode, AtomicWidth::kWord64); ++} ++ ++#define VISIT_ATOMIC_BINOP(op) \ ++ void InstructionSelector::VisitWord64Atomic##op(Node* node) { \ ++ VisitWord64AtomicBinaryOperation(node, kAtomic##op##Uint8, \ ++ kAtomic##op##Uint16, kAtomic##op##Word32, \ ++ kSw64Word64Atomic##op##Uint64); \ ++ } ++VISIT_ATOMIC_BINOP(Add) ++VISIT_ATOMIC_BINOP(Sub) ++VISIT_ATOMIC_BINOP(And) ++VISIT_ATOMIC_BINOP(Or) ++VISIT_ATOMIC_BINOP(Xor) ++#undef VISIT_ATOMIC_BINOP ++ ++void InstructionSelector::VisitInt32AbsWithOverflow(Node* node) { ++ UNREACHABLE(); ++} ++ ++void InstructionSelector::VisitInt64AbsWithOverflow(Node* node) { ++ UNREACHABLE(); ++} ++ ++#define SIMD_TYPE_LIST(V) \ ++ V(F64x2) \ ++ V(F32x4) \ ++ V(I64x2) \ ++ V(I32x4) \ ++ V(I16x8) \ ++ V(I8x16) ++ ++#define SIMD_UNOP_LIST(V) \ ++ V(F64x2Abs, kSw64F64x2Abs) \ ++ V(F64x2Neg, kSw64F64x2Neg) \ ++ V(F64x2Sqrt, kSw64F64x2Sqrt) \ ++ V(F64x2Ceil, kSw64F64x2Ceil) \ ++ V(F64x2Floor, kSw64F64x2Floor) \ ++ V(F64x2Trunc, kSw64F64x2Trunc) \ ++ V(F64x2NearestInt, kSw64F64x2NearestInt) \ ++ V(I64x2Neg, kSw64I64x2Neg) \ ++ V(I64x2BitMask, kSw64I64x2BitMask) \ ++ V(F64x2ConvertLowI32x4S, kSw64F64x2ConvertLowI32x4S) \ ++ V(F64x2ConvertLowI32x4U, kSw64F64x2ConvertLowI32x4U) \ ++ V(F64x2PromoteLowF32x4, kSw64F64x2PromoteLowF32x4) \ ++ V(F32x4SConvertI32x4, kSw64F32x4SConvertI32x4) \ ++ V(F32x4UConvertI32x4, kSw64F32x4UConvertI32x4) \ ++ V(F32x4Abs, kSw64F32x4Abs) \ ++ V(F32x4Neg, kSw64F32x4Neg) \ ++ V(F32x4Sqrt, kSw64F32x4Sqrt) \ ++ V(F32x4Ceil, kSw64F32x4Ceil) \ ++ V(F32x4Floor, kSw64F32x4Floor) \ ++ V(F32x4Trunc, kSw64F32x4Trunc) \ ++ V(F32x4NearestInt, kSw64F32x4NearestInt) \ ++ V(F32x4DemoteF64x2Zero, kSw64F32x4DemoteF64x2Zero) \ ++ V(I64x2Abs, kSw64I64x2Abs) \ ++ V(I64x2SConvertI32x4Low, kSw64I64x2SConvertI32x4Low) \ ++ V(I64x2SConvertI32x4High, kSw64I64x2SConvertI32x4High) \ ++ V(I64x2UConvertI32x4Low, kSw64I64x2UConvertI32x4Low) \ ++ V(I64x2UConvertI32x4High, kSw64I64x2UConvertI32x4High) \ ++ V(I32x4SConvertF32x4, kSw64I32x4SConvertF32x4) \ ++ V(I32x4UConvertF32x4, kSw64I32x4UConvertF32x4) \ ++ V(I32x4Neg, kSw64I32x4Neg) \ ++ V(I32x4SConvertI16x8Low, kSw64I32x4SConvertI16x8Low) \ ++ V(I32x4SConvertI16x8High, kSw64I32x4SConvertI16x8High) \ ++ V(I32x4UConvertI16x8Low, kSw64I32x4UConvertI16x8Low) \ ++ V(I32x4UConvertI16x8High, kSw64I32x4UConvertI16x8High) \ ++ V(I32x4Abs, kSw64I32x4Abs) \ ++ V(I32x4BitMask, kSw64I32x4BitMask) \ ++ V(I32x4TruncSatF64x2SZero, kSw64I32x4TruncSatF64x2SZero) \ ++ V(I32x4TruncSatF64x2UZero, kSw64I32x4TruncSatF64x2UZero) \ ++ V(I16x8Neg, kSw64I16x8Neg) \ ++ V(I16x8SConvertI8x16Low, kSw64I16x8SConvertI8x16Low) \ ++ V(I16x8SConvertI8x16High, kSw64I16x8SConvertI8x16High) \ ++ V(I16x8UConvertI8x16Low, kSw64I16x8UConvertI8x16Low) \ ++ V(I16x8UConvertI8x16High, kSw64I16x8UConvertI8x16High) \ ++ V(I16x8Abs, kSw64I16x8Abs) \ ++ V(I16x8BitMask, kSw64I16x8BitMask) \ ++ V(I8x16Neg, kSw64I8x16Neg) \ ++ V(I8x16Abs, kSw64I8x16Abs) \ ++ V(I8x16Popcnt, kSw64I8x16Popcnt) \ ++ V(I8x16BitMask, kSw64I8x16BitMask) \ ++ V(S128Not, kSw64S128Not) \ ++ V(I64x2AllTrue, kSw64I64x2AllTrue) \ ++ V(I32x4AllTrue, kSw64I32x4AllTrue) \ ++ V(I16x8AllTrue, kSw64I16x8AllTrue) \ ++ V(I8x16AllTrue, kSw64I8x16AllTrue) \ ++ V(V128AnyTrue, kSw64V128AnyTrue) ++ ++#define SIMD_SHIFT_OP_LIST(V) \ ++ V(I64x2Shl) \ ++ V(I64x2ShrS) \ ++ V(I64x2ShrU) \ ++ V(I32x4Shl) \ ++ V(I32x4ShrS) \ ++ V(I32x4ShrU) \ ++ V(I16x8Shl) \ ++ V(I16x8ShrS) \ ++ V(I16x8ShrU) \ ++ V(I8x16Shl) \ ++ V(I8x16ShrS) \ ++ V(I8x16ShrU) ++ ++#define SIMD_BINOP_LIST(V) \ ++ V(F64x2Add, kSw64F64x2Add) \ ++ V(F64x2Sub, kSw64F64x2Sub) \ ++ V(F64x2Mul, kSw64F64x2Mul) \ ++ V(F64x2Div, kSw64F64x2Div) \ ++ V(F64x2Min, kSw64F64x2Min) \ ++ V(F64x2Max, kSw64F64x2Max) \ ++ V(F64x2Eq, kSw64F64x2Eq) \ ++ V(F64x2Ne, kSw64F64x2Ne) \ ++ V(F64x2Lt, kSw64F64x2Lt) \ ++ V(F64x2Le, kSw64F64x2Le) \ ++ V(I64x2Eq, kSw64I64x2Eq) \ ++ V(I64x2Ne, kSw64I64x2Ne) \ ++ V(I64x2Add, kSw64I64x2Add) \ ++ V(I64x2Sub, kSw64I64x2Sub) \ ++ V(I64x2Mul, kSw64I64x2Mul) \ ++ V(I64x2GtS, kSw64I64x2GtS) \ ++ V(I64x2GeS, kSw64I64x2GeS) \ ++ V(F32x4Add, kSw64F32x4Add) \ ++ V(F32x4Sub, kSw64F32x4Sub) \ ++ V(F32x4Mul, kSw64F32x4Mul) \ ++ V(F32x4Div, kSw64F32x4Div) \ ++ V(F32x4Max, kSw64F32x4Max) \ ++ V(F32x4Min, kSw64F32x4Min) \ ++ V(F32x4Eq, kSw64F32x4Eq) \ ++ V(F32x4Ne, kSw64F32x4Ne) \ ++ V(F32x4Lt, kSw64F32x4Lt) \ ++ V(F32x4Le, kSw64F32x4Le) \ ++ V(I32x4Add, kSw64I32x4Add) \ ++ V(I32x4Sub, kSw64I32x4Sub) \ ++ V(I32x4Mul, kSw64I32x4Mul) \ ++ V(I32x4MaxS, kSw64I32x4MaxS) \ ++ V(I32x4MinS, kSw64I32x4MinS) \ ++ V(I32x4MaxU, kSw64I32x4MaxU) \ ++ V(I32x4MinU, kSw64I32x4MinU) \ ++ V(I32x4Eq, kSw64I32x4Eq) \ ++ V(I32x4Ne, kSw64I32x4Ne) \ ++ V(I32x4GtS, kSw64I32x4GtS) \ ++ V(I32x4GeS, kSw64I32x4GeS) \ ++ V(I32x4GtU, kSw64I32x4GtU) \ ++ V(I32x4GeU, kSw64I32x4GeU) \ ++ V(I32x4DotI16x8S, kSw64I32x4DotI16x8S) \ ++ V(I16x8Add, kSw64I16x8Add) \ ++ V(I16x8AddSatS, kSw64I16x8AddSatS) \ ++ V(I16x8AddSatU, kSw64I16x8AddSatU) \ ++ V(I16x8Sub, kSw64I16x8Sub) \ ++ V(I16x8SubSatS, kSw64I16x8SubSatS) \ ++ V(I16x8SubSatU, kSw64I16x8SubSatU) \ ++ V(I16x8Mul, kSw64I16x8Mul) \ ++ V(I16x8MaxS, kSw64I16x8MaxS) \ ++ V(I16x8MinS, kSw64I16x8MinS) \ ++ V(I16x8MaxU, kSw64I16x8MaxU) \ ++ V(I16x8MinU, kSw64I16x8MinU) \ ++ V(I16x8Eq, kSw64I16x8Eq) \ ++ V(I16x8Ne, kSw64I16x8Ne) \ ++ V(I16x8GtS, kSw64I16x8GtS) \ ++ V(I16x8GeS, kSw64I16x8GeS) \ ++ V(I16x8GtU, kSw64I16x8GtU) \ ++ V(I16x8GeU, kSw64I16x8GeU) \ ++ V(I16x8RoundingAverageU, kSw64I16x8RoundingAverageU) \ ++ V(I16x8SConvertI32x4, kSw64I16x8SConvertI32x4) \ ++ V(I16x8UConvertI32x4, kSw64I16x8UConvertI32x4) \ ++ V(I16x8Q15MulRSatS, kSw64I16x8Q15MulRSatS) \ ++ V(I8x16Add, kSw64I8x16Add) \ ++ V(I8x16AddSatS, kSw64I8x16AddSatS) \ ++ V(I8x16AddSatU, kSw64I8x16AddSatU) \ ++ V(I8x16Sub, kSw64I8x16Sub) \ ++ V(I8x16SubSatS, kSw64I8x16SubSatS) \ ++ V(I8x16SubSatU, kSw64I8x16SubSatU) \ ++ V(I8x16MaxS, kSw64I8x16MaxS) \ ++ V(I8x16MinS, kSw64I8x16MinS) \ ++ V(I8x16MaxU, kSw64I8x16MaxU) \ ++ V(I8x16MinU, kSw64I8x16MinU) \ ++ V(I8x16Eq, kSw64I8x16Eq) \ ++ V(I8x16Ne, kSw64I8x16Ne) \ ++ V(I8x16GtS, kSw64I8x16GtS) \ ++ V(I8x16GeS, kSw64I8x16GeS) \ ++ V(I8x16GtU, kSw64I8x16GtU) \ ++ V(I8x16GeU, kSw64I8x16GeU) \ ++ V(I8x16RoundingAverageU, kSw64I8x16RoundingAverageU) \ ++ V(I8x16SConvertI16x8, kSw64I8x16SConvertI16x8) \ ++ V(I8x16UConvertI16x8, kSw64I8x16UConvertI16x8) \ ++ V(S128And, kSw64S128And) \ ++ V(S128Or, kSw64S128Or) \ ++ V(S128Xor, kSw64S128Xor) \ ++ V(S128AndNot, kSw64S128AndNot) ++ ++// SKTODO ++void InstructionSelector::VisitS128Const(Node* node) { ++ Sw64OperandGenerator g(this); ++ static const int kUint32Immediates = kSimd128Size / sizeof(uint32_t); ++ uint32_t val[kUint32Immediates]; ++ memcpy(val, S128ImmediateParameterOf(node->op()).data(), kSimd128Size); ++ // If all bytes are zeros or ones, avoid emitting code for generic constants ++ bool all_zeros = !(val[0] || val[1] || val[2] || val[3]); ++ bool all_ones = val[0] == UINT32_MAX && val[1] == UINT32_MAX && ++ val[2] == UINT32_MAX && val[3] == UINT32_MAX; ++ InstructionOperand dst = g.DefineAsRegister(node); ++ if (all_zeros) { ++ Emit(kSw64S128Zero, dst); ++ } else if (all_ones) { ++ Emit(kSw64S128AllOnes, dst); ++ } else { ++ Emit(kSw64S128Const, dst, g.UseImmediate(val[0]), g.UseImmediate(val[1]), ++ g.UseImmediate(val[2]), g.UseImmediate(val[3])); ++ } ++} ++ ++void InstructionSelector::VisitS128Zero(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64S128Zero, g.DefineAsRegister(node)); ++} ++ ++#define SIMD_VISIT_SPLAT(Type) \ ++ void InstructionSelector::Visit##Type##Splat(Node* node) { \ ++ VisitRR(this, kSw64##Type##Splat, node); \ ++ } ++SIMD_TYPE_LIST(SIMD_VISIT_SPLAT) ++#undef SIMD_VISIT_SPLAT ++ ++#define SIMD_VISIT_EXTRACT_LANE(Type, Sign) \ ++ void InstructionSelector::Visit##Type##ExtractLane##Sign(Node* node) { \ ++ VisitRRI(this, kSw64##Type##ExtractLane##Sign, node); \ ++ } ++SIMD_VISIT_EXTRACT_LANE(F64x2, ) ++SIMD_VISIT_EXTRACT_LANE(F32x4, ) ++SIMD_VISIT_EXTRACT_LANE(I64x2, ) ++SIMD_VISIT_EXTRACT_LANE(I32x4, ) ++SIMD_VISIT_EXTRACT_LANE(I16x8, U) ++SIMD_VISIT_EXTRACT_LANE(I16x8, S) ++SIMD_VISIT_EXTRACT_LANE(I8x16, U) ++SIMD_VISIT_EXTRACT_LANE(I8x16, S) ++#undef SIMD_VISIT_EXTRACT_LANE ++ ++#define SIMD_VISIT_REPLACE_LANE(Type) \ ++ void InstructionSelector::Visit##Type##ReplaceLane(Node* node) { \ ++ VisitRRIR(this, kSw64##Type##ReplaceLane, node); \ ++ } ++SIMD_TYPE_LIST(SIMD_VISIT_REPLACE_LANE) ++#undef SIMD_VISIT_REPLACE_LANE ++ ++#define SIMD_VISIT_UNOP(Name, instruction) \ ++ void InstructionSelector::Visit##Name(Node* node) { \ ++ VisitRR(this, instruction, node); \ ++ } ++SIMD_UNOP_LIST(SIMD_VISIT_UNOP) ++#undef SIMD_VISIT_UNOP ++ ++#define SIMD_VISIT_SHIFT_OP(Name) \ ++ void InstructionSelector::Visit##Name(Node* node) { \ ++ VisitSimdShift(this, kSw64##Name, node); \ ++ } ++SIMD_SHIFT_OP_LIST(SIMD_VISIT_SHIFT_OP) ++#undef SIMD_VISIT_SHIFT_OP ++ ++#define SIMD_VISIT_BINOP(Name, instruction) \ ++ void InstructionSelector::Visit##Name(Node* node) { \ ++ VisitRRR(this, instruction, node); \ ++ } ++SIMD_BINOP_LIST(SIMD_VISIT_BINOP) ++#undef SIMD_VISIT_BINOP ++ ++#define SIMD_RELAXED_OP_LIST(V) \ ++ V(F64x2RelaxedMin) \ ++ V(F64x2RelaxedMax) \ ++ V(F32x4RelaxedMin) \ ++ V(F32x4RelaxedMax) \ ++ V(I32x4RelaxedTruncF32x4S) \ ++ V(I32x4RelaxedTruncF32x4U) \ ++ V(I32x4RelaxedTruncF64x2SZero) \ ++ V(I32x4RelaxedTruncF64x2UZero) \ ++ V(I16x8RelaxedQ15MulRS) ++ ++#define SIMD_VISIT_RELAXED_OP(Name) \ ++ void InstructionSelector::Visit##Name(Node* node) { UNREACHABLE(); } ++SIMD_RELAXED_OP_LIST(SIMD_VISIT_RELAXED_OP) ++#undef SIMD_VISIT_SHIFT_OP ++ ++void InstructionSelector::VisitS128Select(Node* node) { ++ VisitRRRR(this, kSw64S128Select, node); ++} ++ ++void InstructionSelector::VisitI8x16RelaxedLaneSelect(Node* node) { ++ VisitS128Select(node); ++} ++ ++void InstructionSelector::VisitI16x8RelaxedLaneSelect(Node* node) { ++ VisitS128Select(node); ++} ++ ++void InstructionSelector::VisitI32x4RelaxedLaneSelect(Node* node) { ++ VisitS128Select(node); ++} ++ ++void InstructionSelector::VisitI64x2RelaxedLaneSelect(Node* node) { ++ VisitS128Select(node); ++} ++ ++#define SIMD_UNIMP_OP_LIST(V) \ ++ V(F64x2Qfma) \ ++ V(F64x2Qfms) \ ++ V(F32x4Qfma) \ ++ V(F32x4Qfms) \ ++ V(I16x8DotI8x16I7x16S) \ ++ V(I32x4DotI8x16I7x16AddS) ++ ++#define SIMD_VISIT_UNIMP_OP(Name) \ ++ void InstructionSelector::Visit##Name(Node* node) { UNIMPLEMENTED(); } ++SIMD_UNIMP_OP_LIST(SIMD_VISIT_UNIMP_OP) ++ ++#undef SIMD_VISIT_UNIMP_OP ++#undef SIMD_UNIMP_OP_LIST ++ ++#if V8_ENABLE_WEBASSEMBLY ++namespace { ++ ++struct ShuffleEntry { ++ uint8_t shuffle[kSimd128Size]; ++ ArchOpcode opcode; ++}; ++ ++static const ShuffleEntry arch_shuffles[] = { ++ {{0, 1, 2, 3, 16, 17, 18, 19, 4, 5, 6, 7, 20, 21, 22, 23}, ++ kSw64S32x4InterleaveRight}, ++ {{8, 9, 10, 11, 24, 25, 26, 27, 12, 13, 14, 15, 28, 29, 30, 31}, ++ kSw64S32x4InterleaveLeft}, ++ {{0, 1, 2, 3, 8, 9, 10, 11, 16, 17, 18, 19, 24, 25, 26, 27}, ++ kSw64S32x4PackEven}, ++ {{4, 5, 6, 7, 12, 13, 14, 15, 20, 21, 22, 23, 28, 29, 30, 31}, ++ kSw64S32x4PackOdd}, ++ {{0, 1, 2, 3, 16, 17, 18, 19, 8, 9, 10, 11, 24, 25, 26, 27}, ++ kSw64S32x4InterleaveEven}, ++ {{4, 5, 6, 7, 20, 21, 22, 23, 12, 13, 14, 15, 28, 29, 30, 31}, ++ kSw64S32x4InterleaveOdd}, ++ ++ {{0, 1, 16, 17, 2, 3, 18, 19, 4, 5, 20, 21, 6, 7, 22, 23}, ++ kSw64S16x8InterleaveRight}, ++ {{8, 9, 24, 25, 10, 11, 26, 27, 12, 13, 28, 29, 14, 15, 30, 31}, ++ kSw64S16x8InterleaveLeft}, ++ {{0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21, 24, 25, 28, 29}, ++ kSw64S16x8PackEven}, ++ {{2, 3, 6, 7, 10, 11, 14, 15, 18, 19, 22, 23, 26, 27, 30, 31}, ++ kSw64S16x8PackOdd}, ++ {{0, 1, 16, 17, 4, 5, 20, 21, 8, 9, 24, 25, 12, 13, 28, 29}, ++ kSw64S16x8InterleaveEven}, ++ {{2, 3, 18, 19, 6, 7, 22, 23, 10, 11, 26, 27, 14, 15, 30, 31}, ++ kSw64S16x8InterleaveOdd}, ++ {{6, 7, 4, 5, 2, 3, 0, 1, 14, 15, 12, 13, 10, 11, 8, 9}, kSw64S16x4Reverse}, ++ {{2, 3, 0, 1, 6, 7, 4, 5, 10, 11, 8, 9, 14, 15, 12, 13}, kSw64S16x2Reverse}, ++ ++ {{0, 16, 1, 17, 2, 18, 3, 19, 4, 20, 5, 21, 6, 22, 7, 23}, ++ kSw64S8x16InterleaveRight}, ++ {{8, 24, 9, 25, 10, 26, 11, 27, 12, 28, 13, 29, 14, 30, 15, 31}, ++ kSw64S8x16InterleaveLeft}, ++ {{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30}, ++ kSw64S8x16PackEven}, ++ {{1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31}, ++ kSw64S8x16PackOdd}, ++ {{0, 16, 2, 18, 4, 20, 6, 22, 8, 24, 10, 26, 12, 28, 14, 30}, ++ kSw64S8x16InterleaveEven}, ++ {{1, 17, 3, 19, 5, 21, 7, 23, 9, 25, 11, 27, 13, 29, 15, 31}, ++ kSw64S8x16InterleaveOdd}, ++ {{7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8}, kSw64S8x8Reverse}, ++ {{3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12}, kSw64S8x4Reverse}, ++ {{1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14}, kSw64S8x2Reverse}}; ++ ++bool TryMatchArchShuffle(const uint8_t* shuffle, const ShuffleEntry* table, ++ size_t num_entries, bool is_swizzle, ++ ArchOpcode* opcode) { ++ uint8_t mask = is_swizzle ? kSimd128Size - 1 : 2 * kSimd128Size - 1; ++ for (size_t i = 0; i < num_entries; ++i) { ++ const ShuffleEntry& entry = table[i]; ++ int j = 0; ++ for (; j < kSimd128Size; ++j) { ++ if ((entry.shuffle[j] & mask) != (shuffle[j] & mask)) { ++ break; ++ } ++ } ++ if (j == kSimd128Size) { ++ *opcode = entry.opcode; ++ return true; ++ } ++ } ++ return false; ++} ++ ++} // namespace ++ ++void InstructionSelector::VisitI8x16Shuffle(Node* node) { ++ uint8_t shuffle[kSimd128Size]; ++ bool is_swizzle; ++ CanonicalizeShuffle(node, shuffle, &is_swizzle); ++ uint8_t shuffle32x4[4]; ++ ArchOpcode opcode; ++ if (TryMatchArchShuffle(shuffle, arch_shuffles, arraysize(arch_shuffles), ++ is_swizzle, &opcode)) { ++ VisitRRR(this, opcode, node); ++ return; ++ } ++ Node* input0 = node->InputAt(0); ++ Node* input1 = node->InputAt(1); ++ uint8_t offset; ++ Sw64OperandGenerator g(this); ++ if (wasm::SimdShuffle::TryMatchConcat(shuffle, &offset)) { ++ Emit(kSw64S8x16Concat, g.DefineSameAsFirst(node), g.UseRegister(input1), ++ g.UseRegister(input0), g.UseImmediate(offset)); ++ return; ++ } ++ if (wasm::SimdShuffle::TryMatch32x4Shuffle(shuffle, shuffle32x4)) { ++ Emit(kSw64S32x4Shuffle, g.DefineAsRegister(node), g.UseRegister(input0), ++ g.UseRegister(input1), ++ g.UseImmediate(wasm::SimdShuffle::Pack4Lanes(shuffle32x4))); ++ return; ++ } ++ Emit(kSw64I8x16Shuffle, g.DefineAsRegister(node), g.UseRegister(input0), ++ g.UseRegister(input1), ++ g.UseImmediate(wasm::SimdShuffle::Pack4Lanes(shuffle)), ++ g.UseImmediate(wasm::SimdShuffle::Pack4Lanes(shuffle + 4)), ++ g.UseImmediate(wasm::SimdShuffle::Pack4Lanes(shuffle + 8)), ++ g.UseImmediate(wasm::SimdShuffle::Pack4Lanes(shuffle + 12))); ++} ++#else ++void InstructionSelector::VisitI8x16Shuffle(Node* node) { UNREACHABLE(); } ++#endif // V8_ENABLE_WEBASSEMBLY ++ ++void InstructionSelector::VisitI8x16Swizzle(Node* node) { ++ Sw64OperandGenerator g(this); ++ InstructionOperand temps[] = {g.TempSimd128Register()}; ++ // We don't want input 0 or input 1 to be the same as output, since we will ++ // modify output before do the calculation. ++ Emit(kSw64I8x16Swizzle, g.DefineAsRegister(node), ++ g.UseUniqueRegister(node->InputAt(0)), ++ g.UseUniqueRegister(node->InputAt(1)), arraysize(temps), temps); ++} ++ ++void InstructionSelector::VisitSignExtendWord8ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sextb, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitSignExtendWord16ToInt32(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sexth, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitSignExtendWord8ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sextb, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitSignExtendWord16ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sexth, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0))); ++} ++ ++void InstructionSelector::VisitSignExtendWord32ToInt64(Node* node) { ++ Sw64OperandGenerator g(this); ++ Emit(kSw64Sllw, g.DefineAsRegister(node), g.UseRegister(node->InputAt(0)), ++ g.TempImmediate(0)); ++} ++ ++void InstructionSelector::VisitF32x4Pmin(Node* node) { ++ UNREACHABLE(); ++ // VisitUniqueRRR(this, kSw64F32x4Pmin, node); ++} ++ ++void InstructionSelector::VisitF32x4Pmax(Node* node) { ++ UNREACHABLE(); ++ // VisitUniqueRRR(this, kSw64F32x4Pmax, node); ++} ++ ++void InstructionSelector::VisitF64x2Pmin(Node* node) { ++ UNREACHABLE(); ++ // VisitUniqueRRR(this, kSw64F64x2Pmin, node); ++} ++ ++void InstructionSelector::VisitF64x2Pmax(Node* node) { ++ UNREACHABLE(); ++ // VisitUniqueRRR(this, kSw64F64x2Pmax, node); ++} ++ ++#define VISIT_EXT_MUL(OPCODE1, OPCODE2, TYPE) \ ++ void InstructionSelector::Visit##OPCODE1##ExtMulLow##OPCODE2(Node* node) {} \ ++ void InstructionSelector::Visit##OPCODE1##ExtMulHigh##OPCODE2(Node* node) {} ++ ++VISIT_EXT_MUL(I64x2, I32x4S, SWSAS32) ++VISIT_EXT_MUL(I64x2, I32x4U, SWSAU32) ++VISIT_EXT_MUL(I32x4, I16x8S, SWSAS16) ++VISIT_EXT_MUL(I32x4, I16x8U, SWSAU16) ++VISIT_EXT_MUL(I16x8, I8x16S, SWSAS8) ++VISIT_EXT_MUL(I16x8, I8x16U, SWSAU8) ++#undef VISIT_EXT_MUL ++ ++#define VISIT_EXTADD_PAIRWISE(OPCODE, TYPE) \ ++ void InstructionSelector::Visit##OPCODE(Node* node) { \ ++ Sw64OperandGenerator g(this); \ ++ Emit(kSw64ExtAddPairwise, g.DefineAsRegister(node), \ ++ g.UseRegister(node->InputAt(0))); \ ++ } ++VISIT_EXTADD_PAIRWISE(I16x8ExtAddPairwiseI8x16S, SWSAS8) ++VISIT_EXTADD_PAIRWISE(I16x8ExtAddPairwiseI8x16U, SWSAU8) ++VISIT_EXTADD_PAIRWISE(I32x4ExtAddPairwiseI16x8S, SWSAS16) ++VISIT_EXTADD_PAIRWISE(I32x4ExtAddPairwiseI16x8U, SWSAU16) ++#undef VISIT_EXTADD_PAIRWISE ++ ++void InstructionSelector::AddOutputToSelectContinuation(OperandGenerator* g, ++ int first_input_index, ++ Node* node) { ++ UNREACHABLE(); ++} ++ ++// static ++MachineOperatorBuilder::Flags ++InstructionSelector::SupportedMachineOperatorFlags() { ++ MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; ++ return flags | MachineOperatorBuilder::kWord32Ctz | ++ MachineOperatorBuilder::kWord64Ctz | ++ MachineOperatorBuilder::kWord32Popcnt | ++ MachineOperatorBuilder::kWord64Popcnt | ++ MachineOperatorBuilder::kWord32ShiftIsSafe | ++ MachineOperatorBuilder::kInt32DivIsSafe | ++ MachineOperatorBuilder::kUint32DivIsSafe | ++ MachineOperatorBuilder::kFloat64RoundDown | ++ MachineOperatorBuilder::kFloat32RoundDown | ++ MachineOperatorBuilder::kFloat64RoundUp | ++ MachineOperatorBuilder::kFloat32RoundUp | ++ MachineOperatorBuilder::kFloat64RoundTruncate | ++ MachineOperatorBuilder::kFloat32RoundTruncate | ++ MachineOperatorBuilder::kFloat64RoundTiesEven | ++ MachineOperatorBuilder::kFloat32RoundTiesEven; ++} ++ ++// static ++MachineOperatorBuilder::AlignmentRequirements ++InstructionSelector::AlignmentRequirements() { ++ return MachineOperatorBuilder::AlignmentRequirements:: ++ NoUnalignedAccessSupport(); ++} ++ ++#undef SIMD_BINOP_LIST ++#undef SIMD_SHIFT_OP_LIST ++#undef SIMD_RELAXED_OP_LIST ++#undef SIMD_UNOP_LIST ++#undef SIMD_TYPE_LIST ++#undef TRACE_UNIMPL ++#undef TRACE ++ ++} // namespace compiler ++} // namespace internal ++} // namespace v8 +diff --git a/deps/v8/src/compiler/c-linkage.cc b/deps/v8/src/compiler/c-linkage.cc +index 9742e41b..7c23bef7 100644 +--- a/deps/v8/src/compiler/c-linkage.cc ++++ b/deps/v8/src/compiler/c-linkage.cc +@@ -85,6 +85,14 @@ namespace { + #define CALLEE_SAVE_REGISTERS s0, s1, s2, s3, s4, s5, s6, s7, s8, fp + #define CALLEE_SAVE_FP_REGISTERS f24, f25, f26, f27, f28, f29, f30, f31 + ++#elif V8_TARGET_ARCH_SW64 ++// =========================================================================== ++// == sw64 =================================================================== ++// =========================================================================== ++#define PARAM_REGISTERS a0, a1, a2, a3, a4, a5 ++#define CALLEE_SAVE_REGISTERS s0, s1, s2, s3, s4, s5 ++#define CALLEE_SAVE_FP_REGISTERS f2, f3, f4, f5, f6, f7, f8, f9 ++ + #elif V8_TARGET_ARCH_PPC64 + // =========================================================================== + // == ppc & ppc64 ============================================================ +diff --git a/deps/v8/src/debug/debug-evaluate.cc b/deps/v8/src/debug/debug-evaluate.cc +index 48349f19..2384cd10 100644 +--- a/deps/v8/src/debug/debug-evaluate.cc ++++ b/deps/v8/src/debug/debug-evaluate.cc +@@ -1259,7 +1259,7 @@ void DebugEvaluate::VerifyTransitiveBuiltins(Isolate* isolate) { + CHECK(!failed); + #if defined(V8_TARGET_ARCH_PPC) || defined(V8_TARGET_ARCH_PPC64) || \ + defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_RISCV32) || \ +- defined(V8_TARGET_ARCH_RISCV64) ++ defined(V8_TARGET_ARCH_RISCV64) || defined(V8_TARGET_ARCH_SW64) + // Isolate-independent builtin calls and jumps do not emit reloc infos + // on PPC. We try to avoid using PC relative code due to performance + // issue with especially older hardwares. +diff --git a/deps/v8/src/deoptimizer/sw64/deoptimizer-sw64.cc b/deps/v8/src/deoptimizer/sw64/deoptimizer-sw64.cc +new file mode 100644 +index 00000000..98ca4306 +--- /dev/null ++++ b/deps/v8/src/deoptimizer/sw64/deoptimizer-sw64.cc +@@ -0,0 +1,34 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/deoptimizer/deoptimizer.h" ++ ++namespace v8 { ++namespace internal { ++ ++const int Deoptimizer::kEagerDeoptExitSize = 2 * kInstrSize; ++const int Deoptimizer::kLazyDeoptExitSize = 2 * kInstrSize; ++ ++Float32 RegisterValues::GetFloatRegister(unsigned n) const { ++ return Float32::FromBits( ++ static_cast(double_registers_[n].get_bits())); ++} ++ ++void FrameDescription::SetCallerPc(unsigned offset, intptr_t value) { ++ SetFrameSlot(offset, value); ++} ++ ++void FrameDescription::SetCallerFp(unsigned offset, intptr_t value) { ++ SetFrameSlot(offset, value); ++} ++ ++void FrameDescription::SetCallerConstantPool(unsigned offset, intptr_t value) { ++ // No embedded constant pool support. ++ UNREACHABLE(); ++} ++ ++void FrameDescription::SetPc(intptr_t pc) { pc_ = pc; } ++ ++} // namespace internal ++} // namespace v8 +diff --git a/deps/v8/src/diagnostics/gdb-jit.cc b/deps/v8/src/diagnostics/gdb-jit.cc +index 83d69ae7..04b030fb 100644 +--- a/deps/v8/src/diagnostics/gdb-jit.cc ++++ b/deps/v8/src/diagnostics/gdb-jit.cc +@@ -1096,6 +1096,8 @@ class DebugInfoSection : public DebugSection { + UNIMPLEMENTED(); + #elif V8_TARGET_ARCH_LOONG64 + UNIMPLEMENTED(); ++#elif V8_TARGET_ARCH_SW64 ++ UNIMPLEMENTED(); + #elif V8_TARGET_ARCH_PPC64 && V8_OS_LINUX + w->Write(DW_OP_reg31); // The frame pointer is here on PPC64. + #elif V8_TARGET_ARCH_S390 +diff --git a/deps/v8/src/diagnostics/perf-jit.h b/deps/v8/src/diagnostics/perf-jit.h +index 64161d07..400e9c39 100644 +--- a/deps/v8/src/diagnostics/perf-jit.h ++++ b/deps/v8/src/diagnostics/perf-jit.h +@@ -93,6 +93,7 @@ class LinuxPerfJitLogger : public CodeEventLogger { + static const uint32_t kElfMachARM64 = 183; + static const uint32_t kElfMachS390x = 22; + static const uint32_t kElfMachPPC64 = 21; ++ static const uint32_t kElfMachSW64 = 0x9916; + static const uint32_t kElfMachRISCV = 243; + + uint32_t GetElfMach() { +@@ -106,6 +107,8 @@ class LinuxPerfJitLogger : public CodeEventLogger { + return kElfMachMIPS64; + #elif V8_TARGET_ARCH_LOONG64 + return kElfMachLOONG64; ++#elif V8_TARGET_ARCH_SW64 ++ return kElfMachSW64; + #elif V8_TARGET_ARCH_ARM64 + return kElfMachARM64; + #elif V8_TARGET_ARCH_S390X +diff --git a/deps/v8/src/diagnostics/sw64/disasm-sw64.cc b/deps/v8/src/diagnostics/sw64/disasm-sw64.cc +new file mode 100644 +index 00000000..b458f5dc +--- /dev/null ++++ b/deps/v8/src/diagnostics/sw64/disasm-sw64.cc +@@ -0,0 +1,1598 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// A Disassembler object is used to disassemble a block of code instruction by ++// instruction. The default implementation of the NameConverter object can be ++// overriden to modify register names or to do symbol lookup on addresses. ++// ++// The example below will disassemble a block of code and print it to stdout. ++// ++// NameConverter converter; ++// Disassembler d(converter); ++// for (byte* pc = begin; pc < end;) { ++// v8::base::EmbeddedVector buffer; ++// byte* prev_pc = pc; ++// pc += d.InstructionDecode(buffer, pc); ++// printf("%p %08x %s\n", ++// prev_pc, *reinterpret_cast(prev_pc), buffer); ++// } ++// ++// The Disassembler class also has a convenience method to disassemble a block ++// of code into a FILE*, meaning that the above functionality could also be ++// achieved by just calling Disassembler::Disassemble(stdout, begin, end); ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/base/platform/platform.h" ++#include "src/base/strings.h" ++#include "src/base/vector.h" ++#include "src/codegen/macro-assembler.h" ++#include "src/codegen/sw64/constants-sw64.h" ++#include "src/diagnostics/disasm.h" ++ ++namespace v8 { ++namespace internal { ++ ++//------------------------------------------------------------------------------ ++ ++// Decoder decodes and disassembles instructions into an output buffer. ++// It uses the converter to convert register names and call destinations into ++// more informative description. ++class Decoder { ++ public: ++ Decoder(const disasm::NameConverter& converter, ++ v8::base::Vector out_buffer) ++ : converter_(converter), out_buffer_(out_buffer), out_buffer_pos_(0) { ++ out_buffer_[out_buffer_pos_] = '\0'; ++ } ++ ++ ~Decoder() {} ++ ++ Decoder(const Decoder&) = delete; ++ Decoder& operator=(const Decoder&) = delete; ++ ++ // Writes one disassembled instruction into 'buffer' (0-terminated). ++ // Returns the length of the disassembled machine instruction in bytes. ++ int InstructionDecode(byte* instruction); ++ // address decode_instructions(address start, address end); ++ byte* decode_instructions(byte* start, byte* end); ++ // tries to load library and return whether it succedded. ++ static bool load_library(); ++ ++ private: ++ // this is the type of the dll entry point: ++ typedef void* (*decode_func)(void* start, void* end, ++ void* (*event_callback)(void*, const char*, void*), ++ void* event_stream, ++ int (*printf_callback)(void*, const char*, ...), ++ void* printf_stream, ++ const char* options); ++ // points to the library. ++ static void* _library; ++ // bailout ++ static bool _tried_to_load_library; ++ // points to the decode function. ++ static decode_func _decode_instructions; ++ ++ private: ++ // Bottleneck functions to print into the out_buffer. ++ void PrintChar(const char ch); ++ void Print(const char* str); ++ ++ // Printing of common values. ++ void PrintRegister(int reg); ++ void PrintFPURegister(int freg); ++ ++ // Handle formatting of instructions and their options. ++ int FormatRegister(Instruction* instr, const char* option); ++ int FormatOption(Instruction* instr, const char* option); ++ void Format(Instruction* instr, const char* format); ++ void Unknown(Instruction* instr); ++ ++ void SwDecodeTypeSyscall(Instruction* instr); ++ void SwDecodeTypeTransferance(Instruction* instr); ++ void SwDecodeTypeStorage(Instruction* instr); ++ void SwDecodeTypeSimpleCalculation(Instruction* instr); ++ void SwDecodeTypeCompositeCalculation(Instruction* instr); ++ int SwGetInstructionRange(const char* format, int& hi, int& lo); ++ ++ void SwPrintRa(Instruction* instr); ++ void SwPrintRb(Instruction* instr); ++ int SwPrintRc(Instruction* instr, const char* format); ++ void SwPrintRd(Instruction* instr); ++ void SwPrintFa(Instruction* instr); ++ void SwPrintFb(Instruction* instr); ++ int SwPrintFc(Instruction* instr, const char* format); ++ void SwPrintFd(Instruction* instr); ++ ++ //Print unsigned immediate value ++ int SwPrintImm(Instruction* instr, const char* format); ++ ++ //Print signed immediate value ++ int SwPrintDisp(Instruction* instr, const char* format); ++ int SwPrintDispTransfer(Instruction* instr, const char* format);//ld 20150320 ++ ++ //Print int to hex ++ int SwPrintHex(Instruction* instr,const char* format);//cjq 20150319 ++ ++private: ++ void SwDecodeTypeCompositeCalculationInteger(Instruction* instr); ++ void SwDecodeTypeCompositeCalculationFloatintPoint(Instruction* instr); ++ ++ const disasm::NameConverter& converter_; ++ v8::base::Vector out_buffer_; ++ int out_buffer_pos_; ++ byte* instr_pc_; //ld 20150323; ++}; ++ ++// Support for assertions in the Decoder formatting functions. ++#define STRING_STARTS_WITH(string, compare_string) \ ++ (strncmp(string, compare_string, strlen(compare_string)) == 0) ++ ++// Append the ch to the output buffer. ++void Decoder::PrintChar(const char ch) { ++ out_buffer_[out_buffer_pos_++] = ch; ++} ++ ++// Append the str to the output buffer. ++void Decoder::Print(const char* str) { ++ char cur = *str++; ++ while (cur != '\0' && (out_buffer_pos_ < (out_buffer_.length() - 1))) { ++ PrintChar(cur); ++ cur = *str++; ++ } ++ out_buffer_[out_buffer_pos_] = 0; ++} ++ ++// Print the register name according to the active name converter. ++void Decoder::PrintRegister(int reg) { ++ Print(converter_.NameOfCPURegister(reg)); ++} ++ ++// Print the FPUregister name according to the active name converter. ++void Decoder::PrintFPURegister(int freg) { ++ Print(converter_.NameOfXMMRegister(freg)); ++} ++ ++ ++// Handle all register based formatting in this function to reduce the ++// complexity of FormatOption. ++int Decoder::FormatRegister(Instruction* instr, const char* format) { ++ DCHECK_EQ(format[0], 'r'); ++ if (format[1] == 's') { // 'rs: Rs register. ++ int reg = instr->RsValue(); ++ PrintRegister(reg); ++ return 2; ++ } else if (format[1] == 't') { // 'rt: rt register. ++ int reg = instr->RtValue(); ++ PrintRegister(reg); ++ return 2; ++ } else if (format[1] == 'd') { // 'rd: rd register. ++ int reg = instr->RdValue(); ++ PrintRegister(reg); ++ return 2; ++ } ++ UNREACHABLE(); ++} ++ ++// FormatOption takes a formatting string and interprets it based on ++// the current instructions. The format string points to the first ++// character of the option string (the option escape has already been ++// consumed by the caller.) FormatOption returns the number of ++// characters that were consumed from the formatting string. ++ ++int Decoder::FormatOption(Instruction* instr, const char* format) { ++ switch (format[0]) { ++ case 'r': { ++ switch (format[1]) { ++ case 'a' : ++ SwPrintRa(instr); ++ break; ++ case 'b': ++ SwPrintRb(instr); ++ break; ++ case 'c': ++ return SwPrintRc(instr, format); ++ case 'd': ++ SwPrintRd(instr); ++ break; ++ } ++ return 2; ++ } ++ ++ case 'f': { ++ switch (format[1]) { ++ case 'a' : ++ SwPrintFa(instr); ++ break; ++ case 'b': ++ SwPrintFb(instr); ++ break; ++ case 'c': ++ return SwPrintFc(instr, format); ++ case 'd': ++ SwPrintFd(instr); ++ break; ++ } ++ return 2; ++ } ++ ++ case 'i': ++ return SwPrintImm(instr, format); ++ case 'd': ++ return SwPrintDisp(instr, format); ++ case 't'://ld 20150323 ++ return SwPrintDispTransfer(instr,format); ++ //modified by cjq 20150318 ++ case '0': ++ return SwPrintHex(instr, format); ++ } ++ UNREACHABLE(); ++ } ++ ++// Format takes a formatting string for a whole instruction and prints it into ++// the output buffer. All escaped options are handed to FormatOption to be ++// parsed further. ++void Decoder::Format(Instruction* instr, const char* format) { ++ char cur = *format++; ++ while ((cur != 0) && (out_buffer_pos_ < (out_buffer_.length() - 1))) { ++ if (cur == '\'') { // Single quote is used as the formatting escape. ++ format += FormatOption(instr, format); ++ } else { ++ out_buffer_[out_buffer_pos_++] = cur; ++ } ++ cur = *format++; ++ } ++ out_buffer_[out_buffer_pos_] = '\0'; ++} ++ ++// For currently unimplemented decodings the disassembler calls Unknown(instr) ++// which will just print "unknown" of the instruction bits. ++void Decoder::Unknown(Instruction* instr) { Format(instr, "unknown"); } ++ ++#define OP(x) (((x) & 0x3F) << 26) ++#define OPR(oo,ff) (OP(oo) | (((ff) & 0xFF) << 5)) ++ ++void Decoder::SwPrintRa(Instruction* instr){ ++ int reg = instr->SwRaValue(); ++ PrintRegister(reg); ++} ++ ++void Decoder::SwPrintRb(Instruction* instr){ ++ int reg = instr->SwRbValue(); ++ PrintRegister(reg); ++} ++ ++int Decoder::SwPrintRc(Instruction* instr, const char* format) { ++ int len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ int reg = instr->SwRcValue(hi, lo); ++ PrintRegister(reg); ++ return len; ++} ++ ++void Decoder::SwPrintRd(Instruction* instr){ ++ int reg = instr->SwRdValue(); ++ PrintRegister(reg); ++} ++void Decoder::SwPrintFa(Instruction* instr){ ++ int reg = instr->SwFaValue(); ++ PrintFPURegister(reg); ++} ++void Decoder::SwPrintFb(Instruction* instr){ ++ int reg = instr->SwFbValue(); ++ PrintFPURegister(reg); ++} ++int Decoder::SwPrintFc(Instruction* instr, const char* format){ ++ int len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ int reg = instr->SwFcValue(hi, lo); ++ PrintFPURegister(reg); ++ return len; ++} ++void Decoder::SwPrintFd(Instruction* instr) { ++ int reg = instr->SwFdValue(); ++ PrintFPURegister(reg); ++} ++ ++int Decoder::SwPrintDisp(Instruction* instr, const char* format) { ++ int32_t len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ ++ int32_t imm = instr->SwImmOrDispFieldValue(hi, lo); ++ out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, "%d", imm); ++ ++ return len; ++} ++//for transfer ld 20150320 ++int Decoder::SwPrintDispTransfer(Instruction* instr, const char* format) { ++ int32_t len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ ++ int32_t imm = instr->SwImmOrDispFieldValue(hi, lo); ++ //int64_t imm_transfer = imm*4+Instruction::kInstrSize+(*reinterpret_cast(&instr_pc_)); ++ void* imm_transfer = imm + 1 + reinterpret_cast(instr_pc_); //ld 20150429 ++ out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, " %p", imm_transfer); ++ ++ return len; ++} ++ ++int Decoder::SwPrintImm(Instruction* instr, const char* format) { ++ int32_t len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ ++ int32_t imm = instr->SwImmOrDispFieldRaw(hi, lo) >> lo; ++ out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, "%u", imm); ++ ++ return len; ++} ++ ++//modified by cjq ++/**change int to hex ++ * return length of format string ++ */ ++int Decoder::SwPrintHex(Instruction* instr, const char* format){ ++ int32_t len, hi, lo; ++ len = SwGetInstructionRange(format, hi, lo); ++ ++ int32_t imm = instr->SwImmOrDispFieldRaw(hi, lo) >> lo; ++ out_buffer_pos_ += SNPrintF(out_buffer_ + out_buffer_pos_, "0x%x", imm); ++ ++ return len; ++} ++ ++//imm(15-12) disp(25-0) retrun length(format) ++int Decoder::SwGetInstructionRange(const char* format, int& hi, int& lo) { ++ const char* p = format; ++ p = strstr(format, "("); ++ DCHECK('(' == *p ); ++ hi = atoi(++p); ++ p = strstr(format, "-"); ++ DCHECK('-' == *p ); ++ lo = atoi(++p); ++ p = strstr(format, ")"); ++ DCHECK(')' == *p ); ++ return (int)(p-format+1); ++} ++ ++/** modified by cjq ++ * * add function to parse 'sys_call' ++ * */ ++void Decoder::SwDecodeTypeSyscall(Instruction* instr){ ++ if (instr->OpcodeFieldValue() == op_sys_call){ ++ return Format(instr, "sys_call '0x(25-0)"); ++ } ++} ++ ++void Decoder::SwDecodeTypeTransferance(Instruction* instr){//ld 20150319 ++ switch(instr->OpcodeFieldValue()){ ++ case op_br: ++ Format(instr,"br 'ra, 'tr_disp(20-0)");//ld 20150320 ++ break; ++ case op_bsr: ++ Format(instr,"bsr 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_beq: ++ Format(instr,"beq 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_bne: ++ Format(instr,"bne 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_blt: ++ Format(instr,"blt 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_ble: ++ Format(instr,"ble 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_bgt: ++ Format(instr,"bgt 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_bge: ++ Format(instr,"bge 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_blbc: ++ Format(instr,"blbc 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_blbs: ++ Format(instr,"blbs 'ra, 'tr_disp(20-0)"); ++ break; ++ case op_fbeq: ++ Format(instr,"fbeq 'fa, 'tr_disp(20-0)"); ++ break; ++ case op_fbne: ++ Format(instr,"fbne 'fa, 'tr_disp(20-0)"); ++ break; ++ case op_fblt: ++ Format(instr,"fblt 'fa, 'tr_disp(20-0)"); ++ break; ++ case op_fble: ++ Format(instr,"fble 'fa, 'tr_disp(20-0)"); ++ break; ++ case op_fbgt: ++ Format(instr,"fbgt 'fa, 'tr_disp(20-0)"); ++ break; ++ case op_fbge: ++ Format(instr,"fbge 'fa, 'tr_disp(20-0)"); ++ break; ++ default: ++ printf("a 0x%x \n", instr->OpcodeFieldRaw()); ++ UNREACHABLE(); ++ } ++} ++void Decoder::SwDecodeTypeStorage(Instruction* instr){ ++ int opcode_func_raw; ++ switch (instr->OpcodeFieldValue()) { ++ case op_call: ++ Format(instr, "call 'ra, ('rb)"); ++ break; ++ case op_ret: ++ Format(instr, "ret 'ra, ('rb)"); ++ break; ++ case op_jmp: ++ Format(instr, "jmp 'ra, ('rb)"); ++ break; ++ ++ case op_ldbu: ++ Format(instr, "ldbu 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldhu: ++ Format(instr, "ldhu 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldw: ++ Format(instr, "ldw 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldl: ++ Format(instr, "ldl 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldl_u: ++ Format(instr, "ldl_u 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_stb: ++ Format(instr, "stb 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_sth: ++ Format(instr, "sth 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_stw: ++ Format(instr, "stw 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_stl: ++ Format(instr, "stl 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_stl_u: ++ Format(instr, "stl_u 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldi: ++ Format(instr, "ldi 'ra, 'disp(15-0)('rb)"); ++ break; ++ case op_ldih: ++ Format(instr, "ldih 'ra, 'disp(15-0)('rb)"); ++ break; ++ ++ case op_flds: ++ Format(instr, "flds 'fa, 'disp(15-0)('rb)"); ++ break; ++ case op_fldd: ++ Format(instr, "fldd 'fa, 'disp(15-0)('rb)"); ++ break; ++ case op_fsts: ++ Format(instr, "fsts 'fa, 'disp(15-0)('rb)"); ++ break; ++ case op_fstd: ++ Format(instr, "fstd 'fa, 'disp(15-0)('rb)"); ++ break; ++ ++ case op_ldwe: ++ case op_ldse: ++ case op_ldde: ++ case op_vlds: ++ case op_vldd: ++ case op_vsts: ++ case op_vstd: ++ UNIMPLEMENTED_SW64(); ++ break; ++ ++ case OP(0x08): ++ case OP(0x06): ++ opcode_func_raw = instr->SwFunctionFieldRaw(15, 0) | instr->OpcodeFieldRaw(); ++ switch (opcode_func_raw) { ++ case op_lldw: ++ Format(instr, "lldw 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_lldl: ++ Format(instr, "lldl 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldw_inc: ++ Format(instr, "ldw_inc 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldl_inc: ++ Format(instr, "ldl_inc 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldw_dec: ++ Format(instr, "ldw_dec 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldl_dec: ++ Format(instr, "ldl_dec 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldw_set: ++ Format(instr, "ldw_set 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldl_set: ++ Format(instr, "ldl_set 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_lstw: ++ Format(instr, "lstw 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_lstl: ++ Format(instr, "lstl 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldbu_a: ++ Format(instr, "ldbu_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldhu_a: ++ Format(instr, "ldhu_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldw_a: ++ Format(instr, "ldw_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_ldl_a: ++ Format(instr, "ldl_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_flds_a: ++ Format(instr, "flds_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_fldd_a: ++ Format(instr, "fldd_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_stb_a: ++ Format(instr, "stb_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_sth_a: ++ Format(instr, "sth_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_stw_a: ++ Format(instr, "stw_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_stl_a: ++ Format(instr, "stl_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_fsts_a: ++ Format(instr, "fsts_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_fstd_a: ++ Format(instr, "fstd_a 'ra, 'disp(11-0)('rb)"); ++ break; ++ case op_memb: ++ Format(instr, "memb"); ++ break; ++ case op_imemb: ++ Format(instr, "imemb"); ++ break; ++ case op_wmemb: ++ Format(instr, "wmemb"); ++ break; ++ case op_rtc: ++ Format(instr, "rtc 'ra, 'rb"); ++ break; ++ case op_rcid: ++ Format(instr, "rcid 'ra"); ++ break; ++ case op_halt: ++ Format(instr, "halt"); ++ break; ++ case op_rd_f: ++ Format(instr, "rd_f 'ra"); ++ break; ++ case op_wr_f: ++ Format(instr, "wr_f, 'ra"); ++ break; ++ default: ++ UNIMPLEMENTED_SW64(); ++ } ++ break; ++ ++ default: ++ printf("a 0x%x \n", instr->OpcodeFieldRaw()); ++ UNREACHABLE(); ++ } ++} ++void Decoder::SwDecodeTypeSimpleCalculation(Instruction* instr){ ++ int simple_calculation_op = instr->SwFunctionFieldRaw(12, 5) | instr->OpcodeFieldValue(); ++ switch (simple_calculation_op) { ++ case op_addw: ++ Format(instr, "addw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_subw: ++ Format(instr, "subw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s4addw: ++ Format(instr, "s4addw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s4subw: ++ Format(instr, "s4subw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s8addw: ++ Format(instr, "s8addw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s8subw: ++ Format(instr, "s8subw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_addl: ++ Format(instr, "addl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_subl: ++ Format(instr, "subl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s4addl: ++ Format(instr, "s4addl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s4subl: ++ Format(instr, "s4subl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s8addl: ++ Format(instr, "s8addl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_s8subl: ++ Format(instr, "s8subl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_mulw: ++ Format(instr, "mulw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_mull: ++ Format(instr, "mull 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_divw: ++ Format(instr, "divw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_udivw: ++ Format(instr, "udivw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_remw: ++ Format(instr, "divw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_uremw: ++ Format(instr, "udivw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_divl: ++ Format(instr, "divw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_udivl: ++ Format(instr, "udivw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_reml: ++ Format(instr, "divw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_ureml: ++ Format(instr, "udivw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_addpi: ++ Format(instr, "addpi 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_addpis: ++ Format(instr, "addpis 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sbt: ++ Format(instr, "sbt 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cbt: ++ Format(instr, "cbt 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_umulh: ++ Format(instr, "umulh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cmpeq: ++ Format(instr, "cmpeq 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cmplt: ++ Format(instr, "cmplt 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cmple: ++ Format(instr, "cmple 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cmpult: ++ Format(instr, "cmpult 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_cmpule: ++ Format(instr, "cmpule 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_and: ++ Format(instr, "and 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_bic: ++ Format(instr, "bic 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_bis: //case op_or: ++ Format(instr, "or 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_ornot: ++ Format(instr, "ornot 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_xor: ++ Format(instr, "xor 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_eqv: ++ Format(instr, "eqv 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inslb: ++ Format(instr, "inslb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inslh: ++ Format(instr, "inslh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inslw: ++ Format(instr, "inslw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_insll: ++ Format(instr, "insll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inshb: ++ Format(instr, "inshb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inshh: ++ Format(instr, "inshh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inshw: ++ Format(instr, "inshw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_inshl: ++ Format(instr, "inshl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_slll: ++ Format(instr, "slll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_srll: ++ Format(instr, "srll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sral: ++ Format(instr, "sral 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_roll: ++ Format(instr, "roll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sllw: ++ Format(instr, "sllw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_srlw: ++ Format(instr, "srlw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sraw: ++ Format(instr, "sraw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_rolw: ++ Format(instr, "rolw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_extlb: ++ Format(instr, "extlb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_extlh: ++ Format(instr, "extlh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_extlw: ++ Format(instr, "extlw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_extll: ++ Format(instr, "extll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_exthb: ++ Format(instr, "exthb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_exthh: ++ Format(instr, "exthh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_exthw: ++ Format(instr, "exthw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_exthl: ++ Format(instr, "exthl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_ctpop: ++ Format(instr, "ctpop 'rb, 'rc(4-0)"); ++ break; ++ case op_ctlz: ++ Format(instr, "ctlz 'rb, 'rc(4-0)"); ++ break; ++ case op_cttz: ++ Format(instr, "cttz 'rb, 'rc(4-0)"); ++ break; ++ case op_revbh: ++ Format(instr, "revbh 'rb, 'rc(4-0)"); ++ break; ++ case op_revbw: ++ Format(instr, "revbw 'rb, 'rc(4-0)"); ++ break; ++ case op_revbl: ++ Format(instr, "revbl 'rb, 'rc(4-0)"); ++ break; ++ case op_casw: ++ Format(instr, "casw 'rb, 'rc(4-0)"); ++ break; ++ case op_casl: ++ Format(instr, "casl 'rb, 'rc(4-0)"); ++ break; ++ case op_masklb: ++ Format(instr, "masklb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_masklh: ++ Format(instr, "masklh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_masklw: ++ Format(instr, "masklw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_maskll: ++ Format(instr, "maskll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_maskhb: ++ Format(instr, "maskhb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_maskhh: ++ Format(instr, "maskhh 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_maskhw: ++ Format(instr, "maskhw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_maskhl: ++ Format(instr, "maskhl 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_zap: ++ Format(instr, "zap 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_zapnot: ++ Format(instr, "zapnot 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sextb: ++ Format(instr, "sextb 'rb, 'rc(4-0)"); ++ break; ++ case op_sexth: ++ Format(instr, "sexth 'rb, 'rc(4-0)"); ++ break; ++ case op_cmpgeb: ++ Format(instr, "cmpgeb 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_fimovs: ++ Format(instr, "fimovs 'fa, 'rc(4-0)"); ++ break; ++ case op_fimovd: ++ Format(instr, "fimovd 'fa, 'rc(4-0)"); ++ break; ++ ++ case op_addw_l: ++ Format(instr, "addw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_subw_l: ++ Format(instr, "subw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s4addw_l: ++ Format(instr, "s4addw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s4subw_l: ++ Format(instr, "s4subw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s8addw_l: ++ Format(instr, "s8addw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s8subw_l: ++ Format(instr, "s8subw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_addl_l: ++ Format(instr, "addl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_subl_l: ++ Format(instr, "subl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s4addl_l: ++ Format(instr, "s4addl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s4subl_l: ++ Format(instr, "s4subl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s8addl_l: ++ Format(instr, "s8addl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_s8subl_l: ++ Format(instr, "s8subl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_mulw_l: ++ Format(instr, "mulw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_mull_l: ++ Format(instr, "mull 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_umulh_l: ++ Format(instr, "umulh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmpeq_l: ++ Format(instr, "cmpeq 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmplt_l: ++ Format(instr, "cmplt 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmple_l: ++ Format(instr, "cmple 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmpult_l: ++ Format(instr, "cmpult 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmpule_l: ++ Format(instr, "cmpule 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_and_l: ++ Format(instr, "and 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_bic_l: ++ Format(instr, "bic 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_bis_l: //case op_or_l: ++ Format(instr, "or 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_ornot_l: ++ Format(instr, "ornot 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_xor_l: ++ Format(instr, "xor 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_eqv_l: ++ Format(instr, "eqv 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inslb_l: ++ Format(instr, "inslb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inslh_l: ++ Format(instr, "inslh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inslw_l: ++ Format(instr, "inslw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_insll_l: ++ Format(instr, "insll 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inshb_l: ++ Format(instr, "inshb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inshh_l: ++ Format(instr, "inshh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inshw_l: ++ Format(instr, "inshw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_inshl_l: ++ Format(instr, "inshl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_slll_l: ++ Format(instr, "slll 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_srll_l: ++ Format(instr, "srll 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_sral_l: ++ Format(instr, "sral 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_roll_l: ++ Format(instr, "roll 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sllw_l: ++ Format(instr, "sllw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_srlw_l: ++ Format(instr, "srlw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_sraw_l: ++ Format(instr, "sraw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_rolw_l: ++ Format(instr, "rolw 'ra, 'rb, 'rc(4-0)"); ++ break; ++ case op_extlb_l: ++ Format(instr, "extlb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_extlh_l: ++ Format(instr, "extlh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_extlw_l: ++ Format(instr, "extlw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_extll_l: ++ Format(instr, "extll 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_exthb_l: ++ Format(instr, "exthb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_exthh_l: ++ Format(instr, "exthh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_exthw_l: ++ Format(instr, "exthw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_exthl_l: ++ Format(instr, "exthl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_masklb_l: ++ Format(instr, "masklb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_masklh_l: ++ Format(instr, "masklh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_masklw_l: ++ Format(instr, "masklw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_maskll_l: ++ Format(instr, "maskll 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_maskhb_l: ++ Format(instr, "maskhb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_maskhh_l: ++ Format(instr, "maskhh 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_maskhw_l: ++ Format(instr, "maskhw 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_maskhl_l: ++ Format(instr, "maskhl 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_zap_l: ++ Format(instr, "zap 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_zapnot_l: ++ Format(instr, "zapnot 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_sextb_l: ++ Format(instr, "sextb 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_sexth_l: ++ Format(instr, "sexth 'imm(20-13), 'rc(4-0)"); ++ break; ++ case op_cmpgeb_l: ++ Format(instr, "cmpgeb 'ra, 'imm(20-13), 'rc(4-0)"); ++ break; ++ ++ case op_fadds: ++ Format(instr, "fadds 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_faddd: ++ Format(instr, "faddd 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fsubs: ++ Format(instr, "fsubs 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fsubd: ++ Format(instr, "fsubd 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fmuls: ++ Format(instr, "fmuls 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fmuld: ++ Format(instr, "fmuld 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fdivs: ++ Format(instr, "fdivs 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fdivd: ++ Format(instr, "fdivd 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fsqrts: ++ Format(instr, "fsqrts 'fb, 'fc(4-0)"); ++ break; ++ case op_fsqrtd: ++ Format(instr, "fsqrtd 'fb, 'fc(4-0)"); ++ break; ++ case op_fcmpeq: ++ Format(instr, "fcmpeq 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcmple: ++ Format(instr, "fcmple 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcmplt: ++ Format(instr, "fcmplt 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcmpun: ++ Format(instr, "fcmpun 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtsd: ++ Format(instr, "fcvtsd 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtds: ++ Format(instr, "fcvtds 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtdl_g: ++ Format(instr, "fcvtdl_g 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtdl_p: ++ Format(instr, "fcvtdl_p 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtdl_z: ++ Format(instr, "fcvtdl_z 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtdl_n: ++ Format(instr, "fcvtdl_n 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtdl: ++ Format(instr, "fcvtdl 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtwl: ++ Format(instr, "fcvtwl 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtlw: ++ Format(instr, "fcvtlw 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtls: ++ Format(instr, "fcvtls 'fb, 'fc(4-0)"); ++ break; ++ case op_fcvtld: ++ Format(instr, "fcvtld 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdl: ++ Format(instr, "cmovdl 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdl_g: ++ Format(instr, "cmovdl_g 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdl_p: ++ Format(instr, "cmovdl_p 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdl_z: ++ Format(instr, "cmovdl_z 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdl_n: ++ Format(instr, "cmovdl_n 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdlu: ++ Format(instr, "cmovdlu 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdlu_g: ++ Format(instr, "cmovdlu_g 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdlu_p: ++ Format(instr, "cmovdlu_p 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdlu_z: ++ Format(instr, "cmovdlu_z 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdlu_n: ++ Format(instr, "cmovdlu_n 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdw: ++ Format(instr, "cmovdw 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdw_g: ++ Format(instr, "cmovdw_g 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdw_p: ++ Format(instr, "cmovdw_p 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdw_z: ++ Format(instr, "cmovdw_z 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdw_n: ++ Format(instr, "cmovdw_n 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdwu: ++ Format(instr, "cmovdwu 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdwu_g: ++ Format(instr, "cmovdwu_g 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdwu_p: ++ Format(instr, "cmovdwu_p 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdwu_z: ++ Format(instr, "cmovdwu_z 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovdwu_n: ++ Format(instr, "cmovdwu_n 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovls: ++ Format(instr, "cmovls 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovws: ++ Format(instr, "cmovws 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovld: ++ Format(instr, "cmovld 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovwd: ++ Format(instr, "cmovwd 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovuls: ++ Format(instr, "cmovuls 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovuws: ++ Format(instr, "cmovuws 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovuld: ++ Format(instr, "cmovuld 'fb, 'fc(4-0)"); ++ break; ++ case op_cmovuwd: ++ Format(instr, "cmovuwd 'fb, 'fc(4-0)"); ++ break; ++ case op_fcpys: ++ Format(instr, "fcpys 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcpyse: ++ Format(instr, "fcpyse 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_fcpysn: ++ Format(instr, "fcpysn 'fa, 'fb, 'fc(4-0)"); ++ break; ++ case op_ifmovs: ++ Format(instr, "ifmovs 'ra, 'fc(4-0)"); ++ break; ++ case op_ifmovd: ++ Format(instr, "ifmovd 'ra, 'fc(4-0)"); ++ break; ++ case op_rfpcr: ++ Format(instr, "rfpcr 'fa, FPCR"); ++ break; ++ case op_wfpcr: ++ Format(instr, "wfpcr 'fa, FPCR"); ++ break; ++ case op_setfpec0: ++ Format(instr, "setfpec0"); ++ break; ++ case op_setfpec1: ++ Format(instr, "setfpec1"); ++ break; ++ case op_setfpec2: ++ Format(instr, "setfpec2"); ++ break; ++ case op_setfpec3: ++ Format(instr, "setfpec3"); ++ break; ++ case op_frecs: ++ Format(instr, "frecs 'ra, 'fc(4-0)"); ++ break; ++ case op_frecd: ++ Format(instr, "frecd 'ra, 'fc(4-0)"); ++ break; ++ case op_fris: ++ Format(instr, "fris 'ra, 'fc(4-0)"); ++ break; ++ case op_fris_g: ++ Format(instr, "fris_g 'ra, 'fc(4-0)"); ++ break; ++ case op_fris_p: ++ Format(instr, "fris_p 'ra, 'fc(4-0)"); ++ break; ++ case op_fris_z: ++ Format(instr, "fris_z 'ra, 'fc(4-0)"); ++ break; ++ case op_fris_n: ++ Format(instr, "fris_n 'ra, 'fc(4-0)"); ++ break; ++ case op_frid: ++ Format(instr, "frid 'ra, 'fc(4-0)"); ++ break; ++ case op_frid_g: ++ Format(instr, "fris_g 'ra, 'fc(4-0)"); ++ break; ++ case op_frid_p: ++ Format(instr, "fris_p 'ra, 'fc(4-0)"); ++ break; ++ case op_frid_z: ++ Format(instr, "fris_z 'ra, 'fc(4-0)"); ++ break; ++ case op_frid_n: ++ Format(instr, "fris_n 'ra, 'fc(4-0)"); ++ break; ++ default: ++ printf("a 0x%x \n", instr->OpcodeFieldRaw()); ++ UNREACHABLE(); ++ } ++} ++void Decoder::SwDecodeTypeCompositeCalculation(Instruction* instr){ ++ switch (instr->OpcodeFieldValue()) { ++ case OP(0x11): ++ case OP(0x13): ++ SwDecodeTypeCompositeCalculationInteger(instr); ++ break; ++ case OP(0x19): ++ SwDecodeTypeCompositeCalculationFloatintPoint(instr); ++ break; ++ } ++} ++ ++void Decoder::SwDecodeTypeCompositeCalculationInteger(Instruction* instr) { ++ int composite_calculation_op = instr->SwFunctionFieldRaw(12, 10) | instr->OpcodeFieldValue(); ++ switch (composite_calculation_op) { ++ case op_seleq: ++ Format(instr, "seleq 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_selge: ++ Format(instr, "selge 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_selgt: ++ Format(instr, "selgt 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_selle: ++ Format(instr, "selle 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_sellt: ++ Format(instr, "sellt 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_selne: ++ Format(instr, "selne 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_sellbc: ++ Format(instr, "sellbc 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_sellbs: ++ Format(instr, "sellbs 'ra, 'rb, 'rc(9-5), 'rd"); ++ break; ++ case op_seleq_l: ++ Format(instr, "seleq 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_selge_l: ++ Format(instr, "selge 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_selgt_l: ++ Format(instr, "selgt 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_selle_l: ++ Format(instr, "selle 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_sellt_l: ++ Format(instr, "sellt 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_selne_l: ++ Format(instr, "selne 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_sellbc_l: ++ Format(instr, "sellbc 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ case op_sellbs_l: ++ Format(instr, "sellbs 'ra, 'imm(20-13), 'rc(9-5), 'rd"); ++ break; ++ ++ default: ++ printf("a 0x%x \n", instr->OpcodeFieldRaw()); ++ UNREACHABLE(); ++ } ++} ++ ++void Decoder::SwDecodeTypeCompositeCalculationFloatintPoint(Instruction* instr) { ++ int composite_fp_calculation_op = instr->SwFunctionFieldRaw(15, 10) | instr->OpcodeFieldValue(); ++ switch (composite_fp_calculation_op) { ++ case op_fmas: ++ Format(instr, "fmas 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fmad: ++ Format(instr, "fmad 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fmss: ++ Format(instr, "fmss 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fmsd: ++ Format(instr, "fmsd 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fnmas: ++ Format(instr, "fnmas 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fnmad: ++ Format(instr, "fnmad 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fnmss: ++ Format(instr, "fnmss 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fnmsd: ++ Format(instr, "fnmsd 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fseleq: ++ Format(instr, "fseleq 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fselne: ++ Format(instr, "fselne 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fsellt: ++ Format(instr, "fsellt 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fselle: ++ Format(instr, "fselle 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fselgt: ++ Format(instr, "fselgt 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ case op_fselge: ++ Format(instr, "fselge 'fa, 'fb, 'fc(9-5), 'fd"); ++ break; ++ ++ default: ++ printf("a 0x%x \n", instr->OpcodeFieldRaw()); ++ UNREACHABLE(); ++ } ++} ++ ++#undef OP ++#undef OPR ++ ++// Disassemble the instruction at *instr_ptr into the output buffer. ++// All instructions are one word long, except for the simulator ++// pseudo-instruction stop(msg). For that one special case, we return ++// size larger than one kInstrSize. ++int Decoder::InstructionDecode(byte* instr_ptr) { ++ Instruction* instr = Instruction::At(instr_ptr); ++ instr_pc_ = instr_ptr; //ld 20150323 ++ // Print raw instruction bytes. ++ out_buffer_pos_ += base::SNPrintF(out_buffer_ + out_buffer_pos_, ++ "%08x ", instr->InstructionBits()); ++ switch (instr->InstructionType()) { ++ case Instruction::kSwStorageType: { ++ SwDecodeTypeStorage(instr); ++ break; ++ } ++ case Instruction::kSwSimpleCalculationType: { ++ SwDecodeTypeSimpleCalculation(instr); ++ break; ++ } ++ case Instruction::kSwTransferanceType:{ ++ SwDecodeTypeTransferance(instr);//ld 20150319 ++ break; ++ } ++ case Instruction::kSwCompositeCalculationType: { ++ SwDecodeTypeCompositeCalculation(instr); ++ break; ++ } ++//cjq 20150317:TODO ++ case Instruction::kSwSyscallType:{ ++ SwDecodeTypeSyscall(instr); ++ break; ++ } ++ case Instruction::kSwSimulatorTrap:{ ++ Format(instr, "op_trap '0x(25-0)"); ++ break; ++ } ++ default: { ++ Format(instr, "UNSUPPORTED"); ++ UNSUPPORTED_SW64(); ++ } ++ } ++ return kInstrSize; ++} ++ ++byte* Decoder::decode_instructions(byte* start, byte* end) { ++ // decode a series of instructions and return the end of the last instruction ++ ++ return (uint8_t*)(*Decoder::_decode_instructions)( ++ start, end, NULL, (void*)this, NULL, (void*)this, NULL /*options()*/); ++} ++ ++void* Decoder::_library = NULL; ++bool Decoder::_tried_to_load_library = false; ++ ++// This routine is in the shared library: ++Decoder::decode_func Decoder::_decode_instructions = NULL; ++ ++//static const char hsdis_library_name[] = "hsdis-sw64"; ++static const char decode_instructions_name[] = "decode_instructions"; ++ ++/* Used to protect dlsym() calls */ ++static pthread_mutex_t dl_mutex; ++ ++void* dll_load(const char *filename, char *ebuf, int ebuflen) { ++ void* result= dlopen(filename, RTLD_LAZY); ++ if (result != NULL) { ++ // Successful loading ++ return result; ++ } ++ ++ return NULL; ++} ++ ++void* dll_lookup(void* handle, const char* name) { ++ pthread_mutex_lock(&dl_mutex); ++ void* res = dlsym(handle, name); ++ pthread_mutex_unlock(&dl_mutex); ++ return res; ++} ++ ++bool Decoder::load_library() { ++ if (_decode_instructions != NULL) { ++ // Already succeeded. ++ return true; ++ } ++ ++ if (_tried_to_load_library) { ++ // Do not try twice. ++ // To force retry in debugger: assign _tried_to_load_library=0 ++ return false; ++ } ++ ++ // Try to load it. ++ // v8::internal::Decoder d(converter_, buffer); ++ char ebuf[1024]; ++ char buf[4096]; ++ // Find the disassembler shared library. ++ // 4. hsdis-.so (using LD_LIBRARY_PATH) ++ if (_library == NULL) { ++ // 4. hsdis-.so (using LD_LIBRARY_PATH) ++ strcpy(&buf[0], "./hsdis-sw64.so"); ++ _library = dll_load(buf, ebuf, sizeof ebuf); ++ } ++ if (_library != NULL) { ++ _decode_instructions = decode_func((byte*) (dll_lookup(_library, decode_instructions_name)) ); ++ } ++ _tried_to_load_library = true; ++ ++ if (_decode_instructions == NULL) { ++ v8::internal::PrintF("Could not load %s; %s\n", buf, ((_library != NULL) ? "entry point is missing" ++ : "library not loadable")); ++ return false; ++ } ++ ++ // Success. ++ v8::internal::PrintF("Loaded disassembler from %s\n", buf); ++ return true; ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++//------------------------------------------------------------------------------ ++ ++namespace disasm { ++ ++const char* NameConverter::NameOfAddress(byte* addr) const { ++ v8::base::SNPrintF(tmp_buffer_, "%p", static_cast(addr)); ++ return tmp_buffer_.begin(); ++} ++ ++const char* NameConverter::NameOfConstant(byte* addr) const { ++ return NameOfAddress(addr); ++} ++ ++const char* NameConverter::NameOfCPURegister(int reg) const { ++ return v8::internal::Registers::Name(reg); ++} ++ ++const char* NameConverter::NameOfXMMRegister(int reg) const { ++ return v8::internal::FPURegisters::Name(reg); ++} ++ ++const char* NameConverter::NameOfByteCPURegister(int reg) const { ++ UNREACHABLE(); // SW64 does not have the concept of a byte register. ++} ++ ++const char* NameConverter::NameInCode(byte* addr) const { ++ // The default name converter is called for unknown code. So we will not try ++ // to access any memory. ++ return ""; ++} ++ ++//------------------------------------------------------------------------------ ++ ++int Disassembler::InstructionDecode(v8::base::Vector buffer, ++ byte* instruction) { ++ v8::internal::Decoder d(converter_, buffer); ++ return d.InstructionDecode(instruction); ++} ++ ++// The SW64 assembler does not currently use constant pools. ++int Disassembler::ConstantPoolSizeAt(byte* instruction) { ++ return -1; ++} ++ ++void Disassembler::Disassemble(FILE* f, byte* begin, byte* end, ++ UnimplementedOpcodeAction unimplemented_action) { ++ NameConverter converter; ++ Disassembler d(converter, unimplemented_action); ++ for (byte* pc = begin; pc < end;) { ++ v8::base::EmbeddedVector buffer; ++ buffer[0] = '\0'; ++ byte* prev_pc = pc; ++ pc += d.InstructionDecode(buffer, pc); ++ v8::internal::PrintF(f, "%p %08x %s\n", static_cast(prev_pc), ++ *reinterpret_cast(prev_pc), buffer.begin()); ++ } ++} ++ ++#undef STRING_STARTS_WITH ++ ++} // namespace disasm ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/diagnostics/sw64/unwinder-sw64.cc b/deps/v8/src/diagnostics/sw64/unwinder-sw64.cc +new file mode 100644 +index 00000000..03144580 +--- /dev/null ++++ b/deps/v8/src/diagnostics/sw64/unwinder-sw64.cc +@@ -0,0 +1,14 @@ ++// Copyright 2020 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/diagnostics/unwinder.h" ++ ++namespace v8 { ++ ++struct RegisterState; ++ ++void GetCalleeSavedRegistersFromEntryFrame(void* fp, ++ RegisterState* register_state) {} ++ ++} // namespace v8 +diff --git a/deps/v8/src/execution/clobber-registers.cc b/deps/v8/src/execution/clobber-registers.cc +index f6e7e1e5..e9b617b4 100644 +--- a/deps/v8/src/execution/clobber-registers.cc ++++ b/deps/v8/src/execution/clobber-registers.cc +@@ -20,6 +20,8 @@ + #include "src/codegen/loong64/register-loong64.h" + #elif V8_HOST_ARCH_MIPS64 && V8_TARGET_ARCH_MIPS64 + #include "src/codegen/mips64/register-mips64.h" ++#elif V8_HOST_ARCH_SW64 ++#include "src/codegen/sw64/register-sw64.h" + #endif + + namespace v8 { +@@ -53,6 +55,9 @@ namespace internal { + #elif V8_HOST_ARCH_MIPS64 && V8_TARGET_ARCH_MIPS64 + #define CLOBBER_USE_REGISTER(R) __asm__ volatile("dmtc1 $zero,$" #R :::); + ++#elif V8_HOST_ARCH_SW64 ++#define CLOBBER_USE_REGISTER(R) __asm__ volatile("ifmovd $r31, $" #R :::); ++ + #endif // V8_HOST_ARCH_XXX && V8_TARGET_ARCH_XXX + + #endif // V8_CC_MSVC +diff --git a/deps/v8/src/execution/frame-constants.h b/deps/v8/src/execution/frame-constants.h +index 34291940..8d26c8f7 100644 +--- a/deps/v8/src/execution/frame-constants.h ++++ b/deps/v8/src/execution/frame-constants.h +@@ -420,6 +420,8 @@ inline static int FrameSlotToFPOffset(int slot) { + #include "src/execution/mips64/frame-constants-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/execution/loong64/frame-constants-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/execution/sw64/frame-constants-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/execution/s390/frame-constants-s390.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/execution/isolate-inl.h b/deps/v8/src/execution/isolate-inl.h +index 8edeb5df..c6aab29e 100644 +--- a/deps/v8/src/execution/isolate-inl.h ++++ b/deps/v8/src/execution/isolate-inl.h +@@ -142,8 +142,13 @@ Object Isolate::VerifyBuiltinsResult(Object result) { + + ObjectPair Isolate::VerifyBuiltinsResult(ObjectPair pair) { + #ifdef V8_HOST_ARCH_64_BIT ++#if defined(__sw_64__) //SKTODO ++ DCHECK_EQ(has_pending_exception(), ++ pair == ReadOnlyRoots(this).exception().ptr()); ++#else + DCHECK_EQ(has_pending_exception(), + pair.x == ReadOnlyRoots(this).exception().ptr()); ++#endif + #ifdef V8_COMPRESS_POINTERS + // Check that the returned pointer is actually part of the current isolate, + // because that's the assumption in generated code (which might call this +diff --git a/deps/v8/src/execution/simulator-base.h b/deps/v8/src/execution/simulator-base.h +index e974d515..669c86c3 100644 +--- a/deps/v8/src/execution/simulator-base.h ++++ b/deps/v8/src/execution/simulator-base.h +@@ -101,7 +101,7 @@ class SimulatorBase { + ConvertArg(T arg) { + static_assert(sizeof(T) <= sizeof(intptr_t), "type bigger than ptrsize"); + #if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_LOONG64 || \ +- V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 ++ V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_SW64 + // The MIPS64, LOONG64 and RISCV64 calling convention is to sign extend all + // values, even unsigned ones. + using signed_t = typename std::make_signed::type; +diff --git a/deps/v8/src/execution/simulator.h b/deps/v8/src/execution/simulator.h +index c685609e..70b82d2e 100644 +--- a/deps/v8/src/execution/simulator.h ++++ b/deps/v8/src/execution/simulator.h +@@ -24,6 +24,8 @@ + #include "src/execution/mips64/simulator-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/execution/loong64/simulator-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/execution/sw64/simulator-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/execution/s390/simulator-s390.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/execution/sw64/frame-constants-sw64.cc b/deps/v8/src/execution/sw64/frame-constants-sw64.cc +new file mode 100644 +index 00000000..74cc2e02 +--- /dev/null ++++ b/deps/v8/src/execution/sw64/frame-constants-sw64.cc +@@ -0,0 +1,38 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/execution/sw64/frame-constants-sw64.h" ++ ++#include "src/codegen/sw64/assembler-sw64-inl.h" ++#include "src/execution/frame-constants.h" ++#include "src/execution/frames.h" ++ ++namespace v8 { ++namespace internal { ++ ++Register JavaScriptFrame::fp_register() { return v8::internal::fp; } ++Register JavaScriptFrame::context_register() { return cp; } ++Register JavaScriptFrame::constant_pool_pointer_register() { UNREACHABLE(); } ++ ++int UnoptimizedFrameConstants::RegisterStackSlotCount(int register_count) { ++ return register_count; ++} ++ ++int BuiltinContinuationFrameConstants::PaddingSlotCount(int register_count) { ++ USE(register_count); ++ return 0; ++} ++ ++// static ++intptr_t MaglevFrame::StackGuardFrameSize(int register_input_count) { ++ USE(register_input_count); ++ UNREACHABLE(); ++} ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/execution/sw64/frame-constants-sw64.h b/deps/v8/src/execution/sw64/frame-constants-sw64.h +new file mode 100644 +index 00000000..fd6d892a +--- /dev/null ++++ b/deps/v8/src/execution/sw64/frame-constants-sw64.h +@@ -0,0 +1,89 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_EXECUTION_SW64_FRAME_CONSTANTS_SW64_H_ ++#define V8_EXECUTION_SW64_FRAME_CONSTANTS_SW64_H_ ++ ++#include "src/base/bits.h" ++#include "src/base/macros.h" ++#include "src/codegen/register.h" ++#include "src/execution/frame-constants.h" ++ ++namespace v8 { ++namespace internal { ++ ++class EntryFrameConstants : public AllStatic { ++ public: ++ // This is the offset to where JSEntry pushes the current value of ++ // Isolate::c_entry_fp onto the stack. ++ static constexpr int kNextExitFrameFPOffset = -3 * kSystemPointerSize; ++}; ++ ++class WasmLiftoffSetupFrameConstants : public TypedFrameConstants { ++ public: ++ static constexpr int kNumberOfSavedGpParamRegs = 5; ++ static constexpr int kNumberOfSavedFpParamRegs = 6; ++ static constexpr int kNumberOfSavedAllParamRegs = 11; ++ ++ // FP-relative. ++ // See Generate_WasmCompileLazy in builtins-sw64.cc. ++ // SKTODO ++ static constexpr int kInstanceSpillOffset = ++ TYPED_FRAME_PUSHED_VALUE_OFFSET(5); ++ ++ static constexpr int kParameterSpillsOffset[] = { ++ TYPED_FRAME_PUSHED_VALUE_OFFSET(4), TYPED_FRAME_PUSHED_VALUE_OFFSET(3), ++ TYPED_FRAME_PUSHED_VALUE_OFFSET(2), TYPED_FRAME_PUSHED_VALUE_OFFSET(1), ++ TYPED_FRAME_PUSHED_VALUE_OFFSET(0)}; ++ ++ // SP-relative. ++ static constexpr int kWasmInstanceOffset = 2 * kSystemPointerSize; ++ static constexpr int kDeclaredFunctionIndexOffset = 1 * kSystemPointerSize; ++ static constexpr int kNativeModuleOffset = 0; ++}; ++ ++// Frame constructed by the {WasmDebugBreak} builtin. ++// After pushing the frame type marker, the builtin pushes all Liftoff cache ++// registers (see liftoff-assembler-defs.h). ++class WasmDebugBreakFrameConstants : public TypedFrameConstants { ++ public: ++ // {a0, a1, a2, a3, a4, a5, t0, t1, t2, t3, t4, t9, t10, s5, v0} ++ static constexpr RegList kPushedGpRegs = {a0, a1, a2, a3, a4, a5, t0, t1, ++ t2, t3, t4, t9, t10, s5, v0}; ++ // {f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, ++ // f17, f18, f19, f20, f21, f22, f23, f24, f25, f26} ++ static constexpr DoubleRegList kPushedFpRegs = { ++ f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, ++ f14, f15, f16, f17, f18, f19, f20, f21, f22, f23, f24, f25, f26}; ++ ++ static constexpr int kNumPushedGpRegisters = kPushedGpRegs.Count(); ++ static constexpr int kNumPushedFpRegisters = kPushedFpRegs.Count(); ++ ++ static constexpr int kLastPushedGpRegisterOffset = ++ -kFixedFrameSizeFromFp - kNumPushedGpRegisters * kSystemPointerSize; ++ static constexpr int kLastPushedFpRegisterOffset = ++ kLastPushedGpRegisterOffset - kNumPushedFpRegisters * kDoubleSize; ++ ++ // Offsets are fp-relative. ++ static int GetPushedGpRegisterOffset(int reg_code) { ++ DCHECK_NE(0, kPushedGpRegs.bits() & (1 << reg_code)); ++ uint32_t lower_regs = ++ kPushedGpRegs.bits() & ((uint32_t{1} << reg_code) - 1); ++ return kLastPushedGpRegisterOffset + ++ base::bits::CountPopulation(lower_regs) * kSystemPointerSize; ++ } ++ ++ static int GetPushedFpRegisterOffset(int reg_code) { ++ DCHECK_NE(0, kPushedFpRegs.bits() & (1 << reg_code)); ++ uint32_t lower_regs = ++ kPushedFpRegs.bits() & ((uint32_t{1} << reg_code) - 1); ++ return kLastPushedFpRegisterOffset + ++ base::bits::CountPopulation(lower_regs) * kDoubleSize; ++ } ++}; ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_SW64_FRAME_CONSTANTS_SW64_H_ +diff --git a/deps/v8/src/execution/sw64/simulator-sw64.cc b/deps/v8/src/execution/sw64/simulator-sw64.cc +new file mode 100644 +index 00000000..f9d93f99 +--- /dev/null ++++ b/deps/v8/src/execution/sw64/simulator-sw64.cc +@@ -0,0 +1,11 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "src/execution/sw64/simulator-sw64.h" ++ ++// Only build the simulator if not compiling for real SW64 hardware. ++#if defined(USE_SIMULATOR) ++// TODO ++ ++#endif // USE_SIMULATOR +diff --git a/deps/v8/src/execution/sw64/simulator-sw64.h b/deps/v8/src/execution/sw64/simulator-sw64.h +new file mode 100644 +index 00000000..dbb44075 +--- /dev/null ++++ b/deps/v8/src/execution/sw64/simulator-sw64.h +@@ -0,0 +1,39 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// Declares a Simulator for SW64 instructions if we are not generating a native ++// SW64 binary. This Simulator allows us to run and debug SW64 code generation ++// on regular desktop machines. ++// V8 calls into generated code via the GeneratedCode wrapper, ++// which will start execution in the Simulator or forwards to the real entry ++// on a SW64 HW platform. ++ ++#ifndef V8_EXECUTION_SW64_SIMULATOR_SW64_H_ ++#define V8_EXECUTION_SW64_SIMULATOR_SW64_H_ ++ ++// globals.h defines USE_SIMULATOR. ++#include "src/common/globals.h" ++ ++template ++int Compare(const T& a, const T& b) { ++ if (a == b) ++ return 0; ++ else if (a < b) ++ return -1; ++ else ++ return 1; ++} ++ ++// Returns the negative absolute value of its argument. ++template ::value>::type> ++T Nabs(T a) { ++ return a < 0 ? a : -a; ++} ++ ++#if defined(USE_SIMULATOR) ++// TODO ++ ++#endif // defined(USE_SIMULATOR) ++#endif // V8_EXECUTION_SW64_SIMULATOR_SW64_H_ +diff --git a/deps/v8/src/flags/flag-definitions.h b/deps/v8/src/flags/flag-definitions.h +index e64c71cb..5b9a85a3 100644 +--- a/deps/v8/src/flags/flag-definitions.h ++++ b/deps/v8/src/flags/flag-definitions.h +@@ -922,6 +922,41 @@ DEFINE_BOOL(verify_csa, DEBUG_BOOL, + DEFINE_BOOL_READONLY(verify_csa, false, + "verify TurboFan machine graph of code stubs") + #endif // ENABLE_VERIFY_CSA ++#define SW64_ARCH_DEFAULT "native" ++ ++DEFINE_STRING(sw64_arch, SW64_ARCH_DEFAULT, ++ "generate instructions for the selected SW64 architecture if " ++ "available: sw6b, sw8a or native") ++DEFINE_BOOL(sw8a_structure, false, "use 8a_structure in sw8a: the same reg in f-intructions; unaligned access...") ++DEFINE_BOOL(use_sw8a, false, "use intructions in sw8a") ++ ++DEFINE_BOOL(use_cmovx, false, "use cmovx intructions in sw8a") ++DEFINE_BOOL(use_cmovdw, false, "use cmovdw intructions in sw8a") ++DEFINE_BOOL(use_cmovdwu, false, "use cmovdwu intructions in sw8a") ++DEFINE_BOOL(use_cmovdl, false, "use cmovdl intructions in sw8a") ++DEFINE_BOOL(use_cmovdlu, false, "use cmovdlu intructions in sw8a") ++DEFINE_BOOL(use_cmovls, false, "use cmovls intructions in sw8a") ++DEFINE_BOOL(use_cmovuls, false, "use cmovuls intructions in sw8a") ++DEFINE_BOOL(use_cmovld, false, "use cmovld intructions in sw8a") ++DEFINE_BOOL(use_cmovuld, false, "use cmovuld intructions in sw8a") ++DEFINE_BOOL(use_cmovws, false, "use cmovws intructions in sw8a") ++DEFINE_BOOL(use_cmovuws, false, "use cmovuws intructions in sw8a") ++DEFINE_BOOL(use_cmovwd, false, "use cmovwd intructions in sw8a") ++DEFINE_BOOL(use_cmovuwd, false, "use cmovuwd intructions in sw8a") ++ ++DEFINE_BOOL(use_frecx, false, "use frecx intructions in sw8a") ++DEFINE_BOOL(use_frisx, false, "use frisx intructions in sw8a") ++DEFINE_BOOL(use_fridx, false, "use fridx intructions in sw8a") ++DEFINE_BOOL(use_revbx, false, "use revbx intructions in sw8a") ++DEFINE_BOOL(use_sllx, false, "use sllx intructions in sw8a") ++DEFINE_BOOL(use_divx, false, "use divx intructions in sw8a") ++ ++DEFINE_BOOL(use_ldx_a, false, "use ldx_a intructions in sw8a") ++DEFINE_BOOL(use_lldx, false, "use lldx stlx intructions in sw8a") ++DEFINE_BOOL(use_csax, false, "use csax intructions in sw8a") ++DEFINE_BOOL(use_addpi, false, "use addpi/addpis intructions in sw8a") ++ ++DEFINE_BOOL(octane_test, false, "some optimizes when run octane") + DEFINE_BOOL(trace_verify_csa, false, "trace code stubs verification") + DEFINE_STRING(csa_trap_on_node, nullptr, + "trigger break point when a node with given id is created in " +@@ -1921,7 +1956,7 @@ DEFINE_BOOL(check_icache, false, + DEFINE_INT(stop_sim_at, 0, "Simulator stop after x number of instructions") + #if defined(V8_TARGET_ARCH_ARM64) || defined(V8_TARGET_ARCH_MIPS64) || \ + defined(V8_TARGET_ARCH_PPC64) || defined(V8_TARGET_ARCH_RISCV64) || \ +- defined(V8_TARGET_ARCH_LOONG64) ++ defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_SW64) + DEFINE_INT(sim_stack_alignment, 16, + "Stack alignment in bytes in simulator. This must be a power of two " + "and it must be at least 16. 16 is default.") +diff --git a/deps/v8/src/heap/base/asm/sw64/push_registers_asm.cc b/deps/v8/src/heap/base/asm/sw64/push_registers_asm.cc +new file mode 100644 +index 00000000..54f05541 +--- /dev/null ++++ b/deps/v8/src/heap/base/asm/sw64/push_registers_asm.cc +@@ -0,0 +1,47 @@ ++// Copyright 2020 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// Push all callee-saved registers to get them on the stack for conservative ++// stack scanning. ++// ++// See asm/x64/push_registers_clang.cc for why the function is not generated ++// using clang. ++// ++// Do not depend on V8_TARGET_OS_* defines as some embedders may override the ++// GN toolchain (e.g. ChromeOS) and not provide them. ++asm(".text \n" ++ ".set noreorder \n" ++ ".global PushAllRegistersAndIterateStack \n" ++ ".type PushAllRegistersAndIterateStack, %function \n" ++ ".hidden PushAllRegistersAndIterateStack \n" ++ "PushAllRegistersAndIterateStack: \n" ++ // Push all callee-saved registers and save return address. ++ " subl $30, 80, $30 \n" ++ " stl $26, 72($30) \n" ++ " stl $15, 64($30) \n" ++ " stl $30, 56($30) \n" ++ " stl $29, 48($30) \n" ++ " stl $14, 40($30) \n" ++ " stl $13, 32($30) \n" ++ " stl $12, 24($30) \n" ++ " stl $11, 16($30) \n" ++ " stl $10, 8($30) \n" ++ " stl $9, 0($30) \n" ++ // Maintain frame pointer. ++ " bis $31, $30, $15 \n" ++ // Pass 1st parameter (a0) unchanged (Stack*). ++ // Pass 2nd parameter (a1) unchanged (StackVisitor*). ++ // Save 3rd parameter (a2; IterateStackCallback). ++ " bis $31, $18, $27 \n" ++ // Pass 3rd parameter as sp (stack pointer). ++ " bis $31, $30, $18 \n" ++ // Call the callback. ++ " call $26, ($27), 0 \n" ++ // Load return address. ++ " ldl $26, 72($30) \n" ++ // Restore frame pointer. ++ " ldl $15, 64($30) \n" ++ // Discard all callee-saved registers. ++ " addl $30, 80, $30 \n" ++ " ret $31, ($26), 0 \n"); +diff --git a/deps/v8/src/init/v8.cc b/deps/v8/src/init/v8.cc +index 9dad3911..08988293 100644 +--- a/deps/v8/src/init/v8.cc ++++ b/deps/v8/src/init/v8.cc +@@ -186,6 +186,35 @@ void V8::Initialize() { + std::ios_base::trunc); + } + ++ if (v8_flags.use_sw8a) { ++ v8_flags.use_cmovdw = true; ++ v8_flags.use_cmovdwu = true; ++ v8_flags.use_cmovdl = true; ++ v8_flags.use_cmovdlu = true; ++ v8_flags.use_cmovls = true; ++ v8_flags.use_cmovuls = true; ++ v8_flags.use_cmovld = true; ++ v8_flags.use_cmovuld = true; ++ v8_flags.use_cmovws = true; ++ v8_flags.use_cmovuws = true; ++ v8_flags.use_cmovwd = true; ++ v8_flags.use_cmovuwd = true; ++ ++ v8_flags.use_frecx = true; ++ v8_flags.use_frisx = true; ++ v8_flags.use_fridx = true; ++ v8_flags.use_revbx = true; ++ v8_flags.use_sllx = true; ++ v8_flags.use_divx = true; ++ ++ v8_flags.use_ldx_a = true; ++ v8_flags.use_lldx = true; ++ v8_flags.use_csax = true; ++ v8_flags.use_addpi = true; ++ ++ ++ } ++ + // Do not expose wasm in jitless mode. + // + // Even in interpreter-only mode, wasm currently still creates executable +diff --git a/deps/v8/src/interpreter/interpreter-assembler.cc b/deps/v8/src/interpreter/interpreter-assembler.cc +index ef4f781b..cb5134cc 100644 +--- a/deps/v8/src/interpreter/interpreter-assembler.cc ++++ b/deps/v8/src/interpreter/interpreter-assembler.cc +@@ -1472,7 +1472,18 @@ void InterpreterAssembler::TraceBytecodeDispatch(TNode target_bytecode) { + + // static + bool InterpreterAssembler::TargetSupportsUnalignedAccess() { +-#if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_RISCV32 ++ if (v8_flags.sw8a_structure){ ++ #if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_RISCV32 ++ return false; ++ #elif V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_S390 || \ ++ V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_PPC || \ ++ V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_SW64 ++ return true; ++ #else ++ #error "Unknown Architecture" ++ #endif ++ }else { ++#if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_RISCV64 || V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_SW64 + return false; + #elif V8_TARGET_ARCH_IA32 || V8_TARGET_ARCH_X64 || V8_TARGET_ARCH_S390 || \ + V8_TARGET_ARCH_ARM || V8_TARGET_ARCH_ARM64 || V8_TARGET_ARCH_PPC || \ +@@ -1482,6 +1493,7 @@ bool InterpreterAssembler::TargetSupportsUnalignedAccess() { + #error "Unknown Architecture" + #endif + } ++} + + void InterpreterAssembler::AbortIfRegisterCountInvalid( + TNode parameters_and_registers, +diff --git a/deps/v8/src/libsampler/sampler.cc b/deps/v8/src/libsampler/sampler.cc +index 83028c9e..dd749bdc 100644 +--- a/deps/v8/src/libsampler/sampler.cc ++++ b/deps/v8/src/libsampler/sampler.cc +@@ -433,6 +433,10 @@ void SignalHandler::FillRegisterState(void* context, RegisterState* state) { + state->pc = reinterpret_cast(mcontext.__pc); + state->sp = reinterpret_cast(mcontext.__gregs[3]); + state->fp = reinterpret_cast(mcontext.__gregs[22]); ++#elif V8_HOST_ARCH_SW64 ++ state->pc = reinterpret_cast(mcontext.sc_pc); ++ state->sp = reinterpret_cast(mcontext.sc_regs[30]); ++ state->fp = reinterpret_cast(mcontext.sc_regs[15]); + #elif V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64 + #if V8_LIBC_GLIBC + state->pc = reinterpret_cast(ucontext->uc_mcontext.regs->nip); +diff --git a/deps/v8/src/logging/log.cc b/deps/v8/src/logging/log.cc +index b4903db1..afe0dd57 100644 +--- a/deps/v8/src/logging/log.cc ++++ b/deps/v8/src/logging/log.cc +@@ -728,6 +728,8 @@ void LowLevelLogger::LogCodeInfo() { + const char arch[] = "ppc64"; + #elif V8_TARGET_ARCH_LOONG64 + const char arch[] = "loong64"; ++#elif V8_TARGET_ARCH_SW64 ++ const char arch[] = "sw_64"; + #elif V8_TARGET_ARCH_ARM64 + const char arch[] = "arm64"; + #elif V8_TARGET_ARCH_S390 +diff --git a/deps/v8/src/objects/code.cc b/deps/v8/src/objects/code.cc +index 1ca28beb..4c59912f 100644 +--- a/deps/v8/src/objects/code.cc ++++ b/deps/v8/src/objects/code.cc +@@ -355,7 +355,7 @@ bool Code::IsIsolateIndependent(Isolate* isolate) { + RelocInfo::ModeMask(RelocInfo::WASM_STUB_CALL))); + + #if defined(V8_TARGET_ARCH_PPC) || defined(V8_TARGET_ARCH_PPC64) || \ +- defined(V8_TARGET_ARCH_MIPS64) ++ defined(V8_TARGET_ARCH_MIPS64)|| defined(V8_TARGET_ARCH_SW64) + return RelocIterator(*this, kModeMask).done(); + #elif defined(V8_TARGET_ARCH_X64) || defined(V8_TARGET_ARCH_ARM64) || \ + defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_S390) || \ +diff --git a/deps/v8/src/regexp/regexp-macro-assembler-arch.h b/deps/v8/src/regexp/regexp-macro-assembler-arch.h +index 7e816ee8..fa914918 100644 +--- a/deps/v8/src/regexp/regexp-macro-assembler-arch.h ++++ b/deps/v8/src/regexp/regexp-macro-assembler-arch.h +@@ -21,6 +21,8 @@ + #include "src/regexp/mips64/regexp-macro-assembler-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/regexp/loong64/regexp-macro-assembler-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/regexp/sw64/regexp-macro-assembler-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/regexp/s390/regexp-macro-assembler-s390.h" + #elif V8_TARGET_ARCH_RISCV32 || V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/regexp/regexp-macro-assembler.h b/deps/v8/src/regexp/regexp-macro-assembler.h +index 2ba9e2d2..34590319 100644 +--- a/deps/v8/src/regexp/regexp-macro-assembler.h ++++ b/deps/v8/src/regexp/regexp-macro-assembler.h +@@ -174,6 +174,7 @@ class RegExpMacroAssembler { + V(S390) \ + V(PPC) \ + V(X64) \ ++ V(SW64) \ + V(Bytecode) + + enum IrregexpImplementation { +diff --git a/deps/v8/src/regexp/regexp.cc b/deps/v8/src/regexp/regexp.cc +index e6e7d140..353d378e 100644 +--- a/deps/v8/src/regexp/regexp.cc ++++ b/deps/v8/src/regexp/regexp.cc +@@ -956,6 +956,9 @@ bool RegExpImpl::Compile(Isolate* isolate, Zone* zone, RegExpCompileData* data, + #elif V8_TARGET_ARCH_LOONG64 + macro_assembler.reset(new RegExpMacroAssemblerLOONG64( + isolate, zone, mode, output_register_count)); ++#elif V8_TARGET_ARCH_SW64 ++ macro_assembler.reset(new RegExpMacroAssemblerSW64(isolate, zone, mode, ++ output_register_count)); + #else + #error "Unsupported architecture" + #endif +diff --git a/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.cc b/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.cc +new file mode 100644 +index 00000000..217af4ea +--- /dev/null ++++ b/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.cc +@@ -0,0 +1,1383 @@ ++// Copyright 2012 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#if V8_TARGET_ARCH_SW64 ++ ++#include "src/regexp/sw64/regexp-macro-assembler-sw64.h" ++ ++#include "src/codegen/macro-assembler.h" ++#include "src/codegen/sw64/assembler-sw64-inl.h" ++#include "src/heap/factory.h" ++#include "src/logging/log.h" ++#include "src/objects/code-inl.h" ++#include "src/regexp/regexp-stack.h" ++#include "src/snapshot/embedded/embedded-data-inl.h" ++ ++namespace v8 { ++namespace internal { ++ ++/* clang-format off ++ * ++ * This assembler uses the following register assignment convention ++ * - s0 : Unused. ++ * - s1 : Pointer to current Code object including heap object tag. ++ * - s2 : Current position in input, as negative offset from end of string. ++ * Please notice that this is the byte offset, not the character offset! ++ * - s3 : Currently loaded character. Must be loaded using ++ * LoadCurrentCharacter before using any of the dispatch methods. ++ * - s4 : Points to tip of backtrack stack ++ * - s5 : End of input (points to byte after last character in input). ++ * - fp : Frame pointer. Used to access arguments, local variables and ++ * RegExp registers. ++ * - sp : Points to tip of C stack. ++ * ++ * The remaining registers are free for computations. ++ * Each call to a public method should retain this convention. ++ * ++ * TODO(plind): O32 documented here with intent of having single 32/64 codebase ++ * in the future. ++ * ++ * The O32 stack will have the following structure: ++ * ++ * - fp[72] Isolate* isolate (address of the current isolate) ++ * - fp[68] direct_call (if 1, direct call from JavaScript code, ++ * if 0, call through the runtime system). ++ * - fp[64] stack_area_base (High end of the memory area to use as ++ * backtracking stack). ++ * - fp[60] capture array size (may fit multiple sets of matches) ++ * - fp[44..59] SW64 O32 four argument slots ++ * - fp[40] int* capture_array (int[num_saved_registers_], for output). ++ * --- sp when called --- ++ * - fp[36] return address (lr). ++ * - fp[32] old frame pointer (r11). ++ * - fp[0..31] backup of registers s0..s7. ++ * --- frame pointer ---- ++ * - fp[-4] end of input (address of end of string). ++ * - fp[-8] start of input (address of first character in string). ++ * - fp[-12] start index (character index of start). ++ * - fp[-16] void* input_string (location of a handle containing the string). ++ * - fp[-20] success counter (only for global regexps to count matches). ++ * - fp[-24] Offset of location before start of input (effectively character ++ * string start - 1). Used to initialize capture registers to a ++ * non-position. ++ * - fp[-28] At start (if 1, we are starting at the start of the ++ * string, otherwise 0) ++ * - fp[-32] register 0 (Only positions must be stored in the first ++ * - register 1 num_saved_registers_ registers) ++ * - ... ++ * - register num_registers-1 ++ * --- sp --- ++ * ++ * ++ * The N64 stack will have the following structure: ++ * ++ * - fp[80] Isolate* isolate (address of the current isolate) kIsolate ++ * kStackFrameHeader ++ * --- sp when called --- ++ * - fp[72] ra Return from RegExp code (ra). kReturnAddress ++ * - fp[64] s9, old-fp Old fp, callee saved(s9). ++ * - fp[0..63] s0..s7 Callee-saved registers s0..s7. ++ * --- frame pointer ---- ++ * - fp[-8] direct_call (1 = direct call from JS, 0 = from runtime) kDirectCall ++ * - fp[-16] capture array size (may fit multiple sets of matches) kNumOutputRegisters ++ * - fp[-24] int* capture_array (int[num_saved_registers_], for output). kRegisterOutput ++ * - fp[-32] end of input (address of end of string). kInputEnd ++ * - fp[-40] start of input (address of first character in string). kInputStart ++ * - fp[-48] start index (character index of start). kStartIndex ++ * - fp[-56] void* input_string (location of a handle containing the string). kInputString ++ * - fp[-64] success counter (only for global regexps to count matches). kSuccessfulCaptures ++ * - fp[-72] Offset of location before start of input (effectively character kStringStartMinusOne ++ * position -1). Used to initialize capture registers to a ++ * non-position. ++ * --------- The following output registers are 32-bit values. --------- ++ * - fp[-80] register 0 (Only positions must be stored in the first kRegisterZero ++ * - register 1 num_saved_registers_ registers) ++ * - ... ++ * - register num_registers-1 ++ * --- sp --- ++ * ++ * ++ * The sw64 stack will have the following structure: ++ * ++ * - fp[72] Isolate* isolate (address of the current isolate) kIsolate ++ * - fp[64] direct_call (1 = direct call from JS, 0 = from runtime) kDirectCall ++ * kStackFrameHeader ++ * --- sp when called --- ++ * - fp[56] ra Return from RegExp code (ra). kReturnAddress ++ * - fp[48] fp fp, callee saved(s6). ++ * - fp[0..47] s0..s5 Callee-saved registers s0..s5. ++ * --- frame pointer ---- ++ * - fp[-8] capture array size (may fit multiple sets of matches) kNumOutputRegisters ++ * - fp[-16] int* capture_array (int[num_saved_registers_], for output). kRegisterOutput ++ * - fp[-24] end of input (address of end of string). kInputEnd ++ * - fp[-32] start of input (address of first character in string). kInputStart ++ * - fp[-40] start index (character index of start). kStartIndex ++ * - fp[-48] void* input_string (location of a handle containing the string). kInputString ++ * - fp[-56] success counter (only for global regexps to count matches). kSuccessfulCaptures ++ * - fp[-64] Offset of location before start of input (effectively character kInputStartMinusOne ++ * position -1). Used to initialize capture registers to a ++ * non-position. ++ * --------- The following output registers are 32-bit values. --------- ++ * - fp[-72] register 0 (Only positions must be stored in the first kRegisterZero ++ * - register 1 num_saved_registers_ registers) ++ * - ... ++ * - register num_registers-1 ++ * --- sp --- ++ * ++ * The first num_saved_registers_ registers are initialized to point to ++ * "character -1" in the string (i.e., char_size() bytes before the first ++ * character of the string). The remaining registers start out as garbage. ++ * ++ * The data up to the return address must be placed there by the calling ++ * code and the remaining arguments are passed in registers, e.g. by calling the ++ * code entry as cast to a function with the signature: ++ * int (*match)(String input_string, ++ * int start_index, ++ * Address start, ++ * Address end, ++ * int* capture_output_array, ++ * int num_capture_registers, ++ * bool direct_call = false, ++ * Isolate* isolate); ++ * The call is performed by NativeRegExpMacroAssembler::Execute() ++ * (in regexp-macro-assembler.cc) via the GeneratedCode wrapper. ++ * ++ * clang-format on ++ */ ++ ++#define __ ACCESS_MASM(masm_) ++ ++const int RegExpMacroAssemblerSW64::kRegExpCodeSize; ++ ++RegExpMacroAssemblerSW64::RegExpMacroAssemblerSW64(Isolate* isolate, Zone* zone, ++ Mode mode, ++ int registers_to_save) ++ : NativeRegExpMacroAssembler(isolate, zone), ++ masm_(std::make_unique( ++ isolate, CodeObjectRequired::kYes, ++ NewAssemblerBuffer(kRegExpCodeSize))), ++ no_root_array_scope_(masm_.get()), ++ mode_(mode), ++ num_registers_(registers_to_save), ++ num_saved_registers_(registers_to_save), ++ entry_label_(), ++ start_label_(), ++ success_label_(), ++ backtrack_label_(), ++ exit_label_(), ++ internal_failure_label_() { ++ DCHECK_EQ(0, registers_to_save % 2); ++ __ jmp(&entry_label_); // We'll write the entry code later. ++ // If the code gets too big or corrupted, an internal exception will be ++ // raised, and we will exit right away. ++ __ bind(&internal_failure_label_); ++ __ li(v0, Operand(FAILURE)); ++ __ Ret(); ++ __ bind(&start_label_); // And then continue from here. ++} ++ ++RegExpMacroAssemblerSW64::~RegExpMacroAssemblerSW64() { ++ // Unuse labels in case we throw away the assembler without calling GetCode. ++ entry_label_.Unuse(); ++ start_label_.Unuse(); ++ success_label_.Unuse(); ++ backtrack_label_.Unuse(); ++ exit_label_.Unuse(); ++ check_preempt_label_.Unuse(); ++ stack_overflow_label_.Unuse(); ++ internal_failure_label_.Unuse(); ++ fallback_label_.Unuse(); ++} ++ ++int RegExpMacroAssemblerSW64::stack_limit_slack() { ++ return RegExpStack::kStackLimitSlack; ++} ++ ++void RegExpMacroAssemblerSW64::AdvanceCurrentPosition(int by) { ++ if (by != 0) { ++ __ Addl(current_input_offset(), current_input_offset(), ++ Operand(by * char_size())); ++ } ++} ++ ++void RegExpMacroAssemblerSW64::AdvanceRegister(int reg, int by) { ++ DCHECK_LE(0, reg); ++ DCHECK_GT(num_registers_, reg); ++ if (by != 0) { ++ __ Ldl(a0, register_location(reg)); ++ __ Addl(a0, a0, Operand(by)); ++ __ Stl(a0, register_location(reg)); ++ } ++} ++ ++void RegExpMacroAssemblerSW64::Backtrack() { ++ CheckPreemption(); ++ if (has_backtrack_limit()) { ++ Label next; ++ __ Ldl(a0, MemOperand(frame_pointer(), kBacktrackCount)); ++ __ Addl(a0, a0, Operand(1)); ++ __ Stl(a0, MemOperand(frame_pointer(), kBacktrackCount)); ++ __ Branch(&next, ne, a0, Operand(backtrack_limit())); ++ ++ // Backtrack limit exceeded. ++ if (can_fallback()) { ++ __ jmp(&fallback_label_); ++ } else { ++ // Can't fallback, so we treat it as a failed match. ++ Fail(); ++ } ++ ++ __ bind(&next); ++ } ++ // Pop Code offset from backtrack stack, add Code and jump to location. ++ Pop(a0); ++ __ Addl(a0, a0, code_pointer()); ++ __ Jump(a0); ++} ++ ++void RegExpMacroAssemblerSW64::Bind(Label* label) { ++ __ bind(label); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacter(uint32_t c, Label* on_equal) { ++ BranchOrBacktrack(on_equal, eq, current_character(), Operand(c)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacterGT(base::uc16 limit, ++ Label* on_greater) { ++ BranchOrBacktrack(on_greater, gt, current_character(), Operand(limit)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckAtStart(int cp_offset, Label* on_at_start) { ++ __ Ldl(a1, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ __ Addl(a0, current_input_offset(), ++ Operand(-char_size() + cp_offset * char_size())); ++ BranchOrBacktrack(on_at_start, eq, a0, Operand(a1)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotAtStart(int cp_offset, ++ Label* on_not_at_start) { ++ __ Ldl(a1, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ __ Addl(a0, current_input_offset(), ++ Operand(-char_size() + cp_offset * char_size())); ++ BranchOrBacktrack(on_not_at_start, ne, a0, Operand(a1)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacterLT(base::uc16 limit, ++ Label* on_less) { ++ BranchOrBacktrack(on_less, lt, current_character(), Operand(limit)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckGreedyLoop(Label* on_equal) { ++ Label backtrack_non_equal; ++ __ Ldw(a0, MemOperand(backtrack_stackpointer(), 0)); ++ __ Branch(&backtrack_non_equal, ne, current_input_offset(), Operand(a0)); ++ __ Addl(backtrack_stackpointer(), backtrack_stackpointer(), ++ Operand(kIntSize)); ++ __ bind(&backtrack_non_equal); ++ BranchOrBacktrack(on_equal, eq, current_input_offset(), Operand(a0)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotBackReferenceIgnoreCase( ++ int start_reg, bool read_backward, bool unicode, Label* on_no_match) { ++ Label fallthrough; ++ __ Ldl(a0, register_location(start_reg)); // Index of start of capture. ++ __ Ldl(a1, register_location(start_reg + 1)); // Index of end of capture. ++ __ Subl(a1, a1, a0); // Length of capture. ++ ++ // At this point, the capture registers are either both set or both cleared. ++ // If the capture length is zero, then the capture is either empty or cleared. ++ // Fall through in both cases. ++ __ Branch(&fallthrough, eq, a1, Operand(zero_reg)); ++ ++ if (read_backward) { ++ __ Ldl(t1, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ __ Addl(t1, t1, a1); ++ BranchOrBacktrack(on_no_match, le, current_input_offset(), Operand(t1)); ++ } else { ++ __ Addl(t1, a1, current_input_offset()); ++ // Check that there are enough characters left in the input. ++ BranchOrBacktrack(on_no_match, gt, t1, Operand(zero_reg)); ++ } ++ ++ if (mode_ == LATIN1) { ++ Label success; ++ Label fail; ++ Label loop_check; ++ ++ // a0 - offset of start of capture. ++ // a1 - length of capture. ++ __ Addl(a0, a0, Operand(end_of_input_address())); ++ __ Addl(a2, end_of_input_address(), Operand(current_input_offset())); ++ if (read_backward) { ++ __ Subl(a2, a2, Operand(a1)); ++ } ++ __ Addl(a1, a0, Operand(a1)); ++ ++ // a0 - Address of start of capture. ++ // a1 - Address of end of capture. ++ // a2 - Address of current input position. ++ ++ Label loop; ++ __ bind(&loop); ++ __ Ldbu(a3, MemOperand(a0, 0)); ++ __ addl(a0, char_size(), a0); ++ __ Ldbu(a4, MemOperand(a2, 0)); ++ __ addl(a2, char_size(), a2); ++ ++ __ Branch(&loop_check, eq, a4, Operand(a3)); ++ ++ // Mismatch, try case-insensitive match (converting letters to lower-case). ++ __ Or(a3, a3, Operand(0x20)); // Convert capture character to lower-case. ++ __ Or(a4, a4, Operand(0x20)); // Also convert input character. ++ __ Branch(&fail, ne, a4, Operand(a3)); ++ __ Subl(a3, a3, Operand('a')); ++ __ Branch(&loop_check, ls, a3, Operand('z' - 'a')); ++ // Latin-1: Check for values in range [224,254] but not 247. ++ __ Subl(a3, a3, Operand(224 - 'a')); ++ // Weren't Latin-1 letters. ++ __ Branch(&fail, hi, a3, Operand(254 - 224)); ++ // Check for 247. ++ __ Branch(&fail, eq, a3, Operand(247 - 224)); ++ ++ __ bind(&loop_check); ++ __ Branch(&loop, lt, a0, Operand(a1)); ++ __ jmp(&success); ++ ++ __ bind(&fail); ++ GoTo(on_no_match); ++ ++ __ bind(&success); ++ // Compute new value of character position after the matched part. ++ __ Subl(current_input_offset(), a2, end_of_input_address()); ++ if (read_backward) { ++ __ Ldl(t1, register_location(start_reg)); // Index of start of capture. ++ __ Ldl(a2, register_location(start_reg + 1)); // Index of end of capture. ++ __ Addl(current_input_offset(), current_input_offset(), Operand(t1)); ++ __ Subl(current_input_offset(), current_input_offset(), Operand(a2)); ++ } ++ } else { ++ DCHECK(mode_ == UC16); ++ ++ int argument_count = 4; ++ __ PrepareCallCFunction(argument_count, a2); ++ ++ // a0 - offset of start of capture. ++ // a1 - length of capture. ++ ++ // Put arguments into arguments registers. ++ // Parameters are ++ // a0: Address byte_offset1 - Address captured substring's start. ++ // a1: Address byte_offset2 - Address of current character position. ++ // a2: size_t byte_length - length of capture in bytes(!). ++ // a3: Isolate* isolate. ++ ++ // Address of start of capture. ++ __ Addl(a0, a0, Operand(end_of_input_address())); ++ // Length of capture. ++ __ mov(a2, a1); ++ // Save length in callee-save register for use on return. ++ __ mov(s3, a1); // Can we use s3 here? ++ // Address of current input position. ++ __ Addl(a1, current_input_offset(), Operand(end_of_input_address())); ++ if (read_backward) { ++ __ Subl(a1, a1, Operand(s3)); ++ } ++ // Isolate. ++ __ li(a3, Operand(ExternalReference::isolate_address(masm_->isolate()))); ++ ++ { ++ AllowExternalCallThatCantCauseGC scope(masm_.get()); ++ ExternalReference function = ++ unicode ++ ? ExternalReference::re_case_insensitive_compare_unicode() ++ : ExternalReference::re_case_insensitive_compare_non_unicode(); ++ __ CallCFunction(function, argument_count); ++ } ++ ++ // Check if function returned non-zero for success or zero for failure. ++ BranchOrBacktrack(on_no_match, eq, v0, Operand(zero_reg)); ++ // On success, increment position by length of capture. ++ if (read_backward) { ++ __ Subl(current_input_offset(), current_input_offset(), Operand(s3)); ++ } else { ++ __ Addl(current_input_offset(), current_input_offset(), Operand(s3)); ++ } ++ } ++ ++ __ bind(&fallthrough); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotBackReference(int start_reg, ++ bool read_backward, ++ Label* on_no_match) { ++ Label fallthrough; ++ ++ // Find length of back-referenced capture. ++ __ Ldl(a0, register_location(start_reg)); ++ __ Ldl(a1, register_location(start_reg + 1)); ++ __ Subl(a1, a1, a0); // Length to check. ++ ++ // At this point, the capture registers are either both set or both cleared. ++ // If the capture length is zero, then the capture is either empty or cleared. ++ // Fall through in both cases. ++ __ Branch(&fallthrough, eq, a1, Operand(zero_reg)); ++ ++ if (read_backward) { ++ __ Ldl(t1, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ __ Addl(t1, t1, a1); ++ BranchOrBacktrack(on_no_match, le, current_input_offset(), Operand(t1)); ++ } else { ++ __ Addl(t1, a1, current_input_offset()); ++ // Check that there are enough characters left in the input. ++ BranchOrBacktrack(on_no_match, gt, t1, Operand(zero_reg)); ++ } ++ ++ // Compute pointers to match string and capture string. ++ __ Addl(a0, a0, Operand(end_of_input_address())); ++ __ Addl(a2, end_of_input_address(), Operand(current_input_offset())); ++ if (read_backward) { ++ __ Subl(a2, a2, Operand(a1)); ++ } ++ __ Addl(a1, a1, Operand(a0)); ++ ++ Label loop; ++ __ bind(&loop); ++ if (mode_ == LATIN1) { ++ __ Ldbu(a3, MemOperand(a0, 0)); ++ __ addl(a0, char_size(), a0); ++ __ Ldbu(a4, MemOperand(a2, 0)); ++ __ addl(a2, char_size(), a2); ++ } else { ++ DCHECK(mode_ == UC16); ++ __ Ldhu(a3, MemOperand(a0, 0)); ++ __ addl(a0, char_size(), a0); ++ __ Ldhu(a4, MemOperand(a2, 0)); ++ __ addl(a2, char_size(), a2); ++ } ++ BranchOrBacktrack(on_no_match, ne, a3, Operand(a4)); ++ __ Branch(&loop, lt, a0, Operand(a1)); ++ ++ // Move current character position to position after match. ++ __ Subl(current_input_offset(), a2, end_of_input_address()); ++ if (read_backward) { ++ __ Ldl(t1, register_location(start_reg)); // Index of start of capture. ++ __ Ldl(a2, register_location(start_reg + 1)); // Index of end of capture. ++ __ Addl(current_input_offset(), current_input_offset(), Operand(t1)); ++ __ Subl(current_input_offset(), current_input_offset(), Operand(a2)); ++ } ++ __ bind(&fallthrough); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotCharacter(uint32_t c, ++ Label* on_not_equal) { ++ BranchOrBacktrack(on_not_equal, ne, current_character(), Operand(c)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacterAfterAnd(uint32_t c, ++ uint32_t mask, ++ Label* on_equal) { ++ __ And(a0, current_character(), Operand(mask)); ++ Operand rhs = (c == 0) ? Operand(zero_reg) : Operand(c); ++ BranchOrBacktrack(on_equal, eq, a0, rhs); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotCharacterAfterAnd(uint32_t c, ++ uint32_t mask, ++ Label* on_not_equal) { ++ __ And(a0, current_character(), Operand(mask)); ++ Operand rhs = (c == 0) ? Operand(zero_reg) : Operand(c); ++ BranchOrBacktrack(on_not_equal, ne, a0, rhs); ++} ++ ++void RegExpMacroAssemblerSW64::CheckNotCharacterAfterMinusAnd( ++ base::uc16 c, base::uc16 minus, base::uc16 mask, Label* on_not_equal) { ++ DCHECK_GT(String::kMaxUtf16CodeUnit, minus); ++ __ Subl(a0, current_character(), Operand(minus)); ++ __ And(a0, a0, Operand(mask)); ++ BranchOrBacktrack(on_not_equal, ne, a0, Operand(c)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacterInRange(base::uc16 from, ++ base::uc16 to, ++ Label* on_in_range) { ++ __ Subl(a0, current_character(), Operand(from)); ++ // Unsigned lower-or-same condition. ++ BranchOrBacktrack(on_in_range, ls, a0, Operand(to - from)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckCharacterNotInRange( ++ base::uc16 from, base::uc16 to, Label* on_not_in_range) { ++ __ Subl(a0, current_character(), Operand(from)); ++ // Unsigned higher condition. ++ BranchOrBacktrack(on_not_in_range, hi, a0, Operand(to - from)); ++} ++ ++void RegExpMacroAssemblerSW64::CallIsCharacterInRangeArray( ++ const ZoneList* ranges) { ++ static const int kNumArguments = 3; ++ __ PrepareCallCFunction(kNumArguments, a0); ++ ++ __ mov(a0, current_character()); ++ __ li(a1, Operand(GetOrAddRangeArray(ranges))); ++ __ li(a2, Operand(ExternalReference::isolate_address(isolate()))); ++ ++ { ++ // We have a frame (set up in GetCode), but the assembler doesn't know. ++ FrameScope scope(masm_.get(), StackFrame::MANUAL); ++ __ CallCFunction(ExternalReference::re_is_character_in_range_array(), ++ kNumArguments); ++ } ++ ++ __ li(code_pointer(), Operand(masm_->CodeObject())); ++} ++ ++bool RegExpMacroAssemblerSW64::CheckCharacterInRangeArray( ++ const ZoneList* ranges, Label* on_in_range) { ++ CallIsCharacterInRangeArray(ranges); ++ BranchOrBacktrack(on_in_range, ne, v0, Operand(zero_reg)); ++ return true; ++} ++ ++bool RegExpMacroAssemblerSW64::CheckCharacterNotInRangeArray( ++ const ZoneList* ranges, Label* on_not_in_range) { ++ CallIsCharacterInRangeArray(ranges); ++ BranchOrBacktrack(on_not_in_range, eq, v0, Operand(zero_reg)); ++ return true; ++} ++ ++void RegExpMacroAssemblerSW64::CheckBitInTable(Handle table, ++ Label* on_bit_set) { ++ __ li(a0, Operand(table)); ++ if (mode_ != LATIN1 || kTableMask != String::kMaxOneByteCharCode) { ++ __ And(a1, current_character(), Operand(kTableSize - 1)); ++ __ Addl(a0, a0, a1); ++ } else { ++ __ Addl(a0, a0, current_character()); ++ } ++ ++ __ Ldbu(a0, FieldMemOperand(a0, ByteArray::kHeaderSize)); ++ BranchOrBacktrack(on_bit_set, ne, a0, Operand(zero_reg)); ++} ++ ++bool RegExpMacroAssemblerSW64::CheckSpecialClassRanges( ++ StandardCharacterSet type, Label* on_no_match) { ++ // Range checks (c in min..max) are generally implemented by an unsigned ++ // (c - min) <= (max - min) check. ++ // TODO(jgruber): No custom implementation (yet): s(UC16), S(UC16). ++ switch (type) { ++ case StandardCharacterSet::kWhitespace: ++ // Match space-characters. ++ if (mode_ == LATIN1) { ++ // One byte space characters are '\t'..'\r', ' ' and \u00a0. ++ Label success; ++ __ Branch(&success, eq, current_character(), Operand(' ')); ++ // Check range 0x09..0x0D. ++ __ Subl(a0, current_character(), Operand('\t')); ++ __ Branch(&success, ls, a0, Operand('\r' - '\t')); ++ // \u00a0 (NBSP). ++ BranchOrBacktrack(on_no_match, ne, a0, Operand(0x00A0 - '\t')); ++ __ bind(&success); ++ return true; ++ } ++ return false; ++ case StandardCharacterSet::kNotWhitespace: ++ // The emitted code for generic character classes is good enough. ++ return false; ++ case StandardCharacterSet::kDigit: ++ // Match Latin1 digits ('0'..'9'). ++ __ Subl(a0, current_character(), Operand('0')); ++ BranchOrBacktrack(on_no_match, hi, a0, Operand('9' - '0')); ++ return true; ++ case StandardCharacterSet::kNotDigit: ++ // Match non Latin1-digits. ++ __ Subl(a0, current_character(), Operand('0')); ++ BranchOrBacktrack(on_no_match, ls, a0, Operand('9' - '0')); ++ return true; ++ case StandardCharacterSet::kNotLineTerminator: { ++ // Match non-newlines (not 0x0A('\n'), 0x0D('\r'), 0x2028 and 0x2029). ++ __ Xor(a0, current_character(), Operand(0x01)); ++ // See if current character is '\n'^1 or '\r'^1, i.e., 0x0B or 0x0C. ++ __ Subl(a0, a0, Operand(0x0B)); ++ BranchOrBacktrack(on_no_match, ls, a0, Operand(0x0C - 0x0B)); ++ if (mode_ == UC16) { ++ // Compare original value to 0x2028 and 0x2029, using the already ++ // computed (current_char ^ 0x01 - 0x0B). I.e., check for ++ // 0x201D (0x2028 - 0x0B) or 0x201E. ++ __ Subl(a0, a0, Operand(0x2028 - 0x0B)); ++ BranchOrBacktrack(on_no_match, ls, a0, Operand(1)); ++ } ++ return true; ++ } ++ case StandardCharacterSet::kLineTerminator: { ++ // Match newlines (0x0A('\n'), 0x0D('\r'), 0x2028 and 0x2029). ++ __ Xor(a0, current_character(), Operand(0x01)); ++ // See if current character is '\n'^1 or '\r'^1, i.e., 0x0B or 0x0C. ++ __ Subl(a0, a0, Operand(0x0B)); ++ if (mode_ == LATIN1) { ++ BranchOrBacktrack(on_no_match, hi, a0, Operand(0x0C - 0x0B)); ++ } else { ++ Label done; ++ BranchOrBacktrack(&done, ls, a0, Operand(0x0C - 0x0B)); ++ // Compare original value to 0x2028 and 0x2029, using the already ++ // computed (current_char ^ 0x01 - 0x0B). I.e., check for ++ // 0x201D (0x2028 - 0x0B) or 0x201E. ++ __ Subl(a0, a0, Operand(0x2028 - 0x0B)); ++ BranchOrBacktrack(on_no_match, hi, a0, Operand(1)); ++ __ bind(&done); ++ } ++ return true; ++ } ++ case StandardCharacterSet::kWord: { ++ if (mode_ != LATIN1) { ++ // Table is 256 entries, so all Latin1 characters can be tested. ++ BranchOrBacktrack(on_no_match, hi, current_character(), Operand('z')); ++ } ++ ExternalReference map = ExternalReference::re_word_character_map(); ++ __ li(a0, Operand(map)); ++ __ Addl(a0, a0, current_character()); ++ __ Ldbu(a0, MemOperand(a0, 0)); ++ BranchOrBacktrack(on_no_match, eq, a0, Operand(zero_reg)); ++ return true; ++ } ++ case StandardCharacterSet::kNotWord: { ++ Label done; ++ if (mode_ != LATIN1) { ++ // Table is 256 entries, so all Latin1 characters can be tested. ++ __ Branch(&done, hi, current_character(), Operand('z')); ++ } ++ ExternalReference map = ExternalReference::re_word_character_map(); ++ __ li(a0, Operand(map)); ++ __ Addl(a0, a0, current_character()); ++ __ Ldbu(a0, MemOperand(a0, 0)); ++ BranchOrBacktrack(on_no_match, ne, a0, Operand(zero_reg)); ++ if (mode_ != LATIN1) { ++ __ bind(&done); ++ } ++ return true; ++ } ++ case StandardCharacterSet::kEverything: ++ // Match any character. ++ return true; ++ } ++} ++ ++void RegExpMacroAssemblerSW64::Fail() { ++ __ li(v0, Operand(FAILURE)); ++ __ jmp(&exit_label_); ++} ++ ++void RegExpMacroAssemblerSW64::LoadRegExpStackPointerFromMemory(Register dst) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); ++ __ li(dst, Operand(ref)); ++ __ Ldl(dst, MemOperand(dst)); ++} ++ ++void RegExpMacroAssemblerSW64::StoreRegExpStackPointerToMemory( ++ Register src, Register scratch) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); ++ __ li(scratch, Operand(ref)); ++ __ Stl(src, MemOperand(scratch)); ++} ++ ++void RegExpMacroAssemblerSW64::PushRegExpBasePointer(Register stack_pointer, ++ Register scratch) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); ++ __ li(scratch, Operand(ref)); ++ __ Ldl(scratch, MemOperand(scratch)); ++ __ Subl(scratch, stack_pointer, scratch); ++ __ Stl(scratch, MemOperand(frame_pointer(), kRegExpStackBasePointer)); ++} ++ ++void RegExpMacroAssemblerSW64::PopRegExpBasePointer(Register stack_pointer_out, ++ Register scratch) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); ++ __ Ldl(stack_pointer_out, ++ MemOperand(frame_pointer(), kRegExpStackBasePointer)); ++ __ li(scratch, Operand(ref)); ++ __ Ldl(scratch, MemOperand(scratch)); ++ __ Addl(stack_pointer_out, stack_pointer_out, scratch); ++ StoreRegExpStackPointerToMemory(stack_pointer_out, scratch); ++} ++ ++Handle RegExpMacroAssemblerSW64::GetCode(Handle source) { ++ Label return_v0; ++ if (masm_->has_exception()) { ++ // If the code gets corrupted due to long regular expressions and lack of ++ // space on trampolines, an internal exception flag is set. If this case ++ // is detected, we will jump into exit sequence right away. ++ __ bind_to(&entry_label_, internal_failure_label_.pos()); ++ } else { ++ // Finalize code - write the entry point code now we know how many ++ // registers we need. ++ ++ // Entry code: ++ __ bind(&entry_label_); ++ ++ // Tell the system that we have a stack frame. Because the type is MANUAL, ++ // no is generated. ++ FrameScope scope(masm_.get(), StackFrame::MANUAL); ++ ++ // Actually emit code to start a new stack frame. ++ // Push arguments ++ // Save callee-save registers. ++ // Start new stack frame. ++ // Store link register in existing stack-cell. ++ // Order here should correspond to order of offset constants in header file. ++ // TODO(plind): we save s0..s5, but ONLY use s3 here - use the regs ++ // or dont save. ++ RegList registers_to_retain = {s0, s1, s2, s3, s4, s5, fp}; ++ RegList argument_registers = {a0, a1, a2, a3, a4, a5}; ++ ++ __ MultiPush(registers_to_retain | ra); ++ __ MultiPush(argument_registers); ++ // Set frame pointer in space for it if this is not a direct call ++ // from generated code. ++ __ Addl(frame_pointer(), sp, Operand(6 * kPointerSize)); // 6 argument regs ++ static_assert(kSuccessfulCaptures == kInputString - kSystemPointerSize); ++ __ mov(a0, zero_reg); ++ __ Push(a0); // Make room for success counter and initialize it to 0. ++ static_assert(kStringStartMinusOne == ++ kSuccessfulCaptures - kSystemPointerSize); ++ __ Push(a0); // Make room for "string start - 1" constant. ++ static_assert(kBacktrackCount == kStringStartMinusOne - kSystemPointerSize); ++ __ Push(a0); // The backtrack counter ++ static_assert(kRegExpStackBasePointer == ++ kBacktrackCount - kSystemPointerSize); ++ __ Push(a0); // The regexp stack base ptr. ++ ++ // Initialize backtrack stack pointer. It must not be clobbered from here ++ // on. Note the backtrack_stackpointer is callee-saved. ++//SKTODO ++ static_assert(backtrack_stackpointer() == s5); ++ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); ++ ++ // Store the regexp base pointer - we'll later restore it / write it to ++ // memory when returning from this irregexp code object. ++ PushRegExpBasePointer(backtrack_stackpointer(), a1); ++ ++ { ++ // Check if we have space on the stack for registers. ++ Label stack_limit_hit, stack_ok; ++ ++ ExternalReference stack_limit = ++ ExternalReference::address_of_jslimit(masm_->isolate()); ++ __ li(a0, Operand(stack_limit)); ++ __ Ldl(a0, MemOperand(a0)); ++ __ Subl(a0, sp, a0); ++ // Handle it if the stack pointer is already below the stack limit. ++ __ Branch(&stack_limit_hit, le, a0, Operand(zero_reg)); ++ // Check if there is room for the variable number of registers above ++ // the stack limit. ++ __ Branch(&stack_ok, hs, a0, Operand(num_registers_ * kPointerSize)); ++ // Exit with OutOfMemory exception. There is not enough space on the stack ++ // for our working registers. ++ __ li(v0, Operand(EXCEPTION)); ++ __ jmp(&return_v0); ++ ++ __ bind(&stack_limit_hit); ++ CallCheckStackGuardState(a0); ++ // If returned value is non-zero, we exit with the returned value as ++ // result. ++ __ Branch(&return_v0, ne, v0, Operand(zero_reg)); ++ ++ __ bind(&stack_ok); ++ } ++ ++ // Allocate space on stack for registers. ++ __ Subl(sp, sp, Operand(num_registers_ * kPointerSize)); ++ // Load string end. ++ __ Ldl(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd)); ++ // Load input start. ++ __ Ldl(a0, MemOperand(frame_pointer(), kInputStart)); ++ // Find negative length (offset of start relative to end). ++ __ Subl(current_input_offset(), a0, end_of_input_address()); ++ // Set a0 to address of char before start of the input string ++ // (effectively string position -1). ++ __ Ldl(a1, MemOperand(frame_pointer(), kStartIndex)); ++ __ Subl(a0, current_input_offset(), Operand(char_size())); ++ __ slll(a1, (mode_ == UC16) ? 1 : 0, t1); ++ __ Subl(a0, a0, t1); ++ // Store this value in a local variable, for use when clearing ++ // position registers. ++ __ Stl(a0, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ ++ // Initialize code pointer register ++ __ li(code_pointer(), Operand(masm_->CodeObject()), CONSTANT_SIZE); ++ ++ Label load_char_start_regexp; ++ { ++ Label start_regexp; ++ // Load newline if index is at start, previous character otherwise. ++ __ Branch(&load_char_start_regexp, ne, a1, Operand(zero_reg)); ++ __ li(current_character(), Operand('\n')); ++ __ jmp(&start_regexp); ++ ++ // Global regexp restarts matching here. ++ __ bind(&load_char_start_regexp); ++ // Load previous char as initial value of current character register. ++ LoadCurrentCharacterUnchecked(-1, 1); ++ __ bind(&start_regexp); ++ } ++ ++ // Initialize on-stack registers. ++ if (num_saved_registers_ > 0) { // Always is, if generated from a regexp. ++ // Fill saved registers with initial value = start offset - 1. ++ if (num_saved_registers_ > 8) { ++ // Address of register 0. ++ __ Addl(a1, frame_pointer(), Operand(kRegisterZero)); ++ __ li(a2, Operand(num_saved_registers_)); ++ Label init_loop; ++ __ bind(&init_loop); ++ __ Stl(a0, MemOperand(a1)); ++ __ Addl(a1, a1, Operand(-kPointerSize)); ++ __ Subl(a2, a2, Operand(1)); ++ __ Branch(&init_loop, ne, a2, Operand(zero_reg)); ++ } else { ++ for (int i = 0; i < num_saved_registers_; i++) { ++ __ Stl(a0, register_location(i)); ++ } ++ } ++ } ++ ++ __ jmp(&start_label_); ++ ++ // Exit code: ++ if (success_label_.is_linked()) { ++ // Save captures when successful. ++ __ bind(&success_label_); ++ if (num_saved_registers_ > 0) { ++ // Copy captures to output. ++ __ Ldl(a1, MemOperand(frame_pointer(), kInputStart)); ++ __ Ldl(a0, MemOperand(frame_pointer(), kRegisterOutput)); ++ __ Ldl(a2, MemOperand(frame_pointer(), kStartIndex)); ++ __ Subl(a1, end_of_input_address(), a1); ++ // a1 is length of input in bytes. ++ if (mode_ == UC16) { ++ __ srll(a1, 1, a1); ++ } ++ // a1 is length of input in characters. ++ __ Addl(a1, a1, Operand(a2)); ++ // a1 is length of string in characters. ++ ++ DCHECK_EQ(0, num_saved_registers_ % 2); ++ // Always an even number of capture registers. This allows us to ++ // unroll the loop once to add an operation between a load of a register ++ // and the following use of that register. ++ for (int i = 0; i < num_saved_registers_; i += 2) { ++ __ Ldl(a2, register_location(i)); ++ __ Ldl(a3, register_location(i + 1)); ++ if (i == 0 && global_with_zero_length_check()) { ++ // Keep capture start in a4 for the zero-length check later. ++ __ mov(t3, a2); ++ } ++ if (mode_ == UC16) { ++ __ sral(a2, 1, a2); ++ __ Addl(a2, a2, a1); ++ __ sral(a3, 1, a3); ++ __ Addl(a3, a3, a1); ++ } else { ++ __ Addl(a2, a1, Operand(a2)); ++ __ Addl(a3, a1, Operand(a3)); ++ } ++ // V8 expects the output to be an int32_t array. ++ __ Stw(a2, MemOperand(a0)); ++ __ Addl(a0, a0, kIntSize); ++ __ Stw(a3, MemOperand(a0)); ++ __ Addl(a0, a0, kIntSize); ++ } ++ } ++ ++ if (global()) { ++ // Restart matching if the regular expression is flagged as global. ++ __ Ldl(a0, MemOperand(frame_pointer(), kSuccessfulCaptures)); ++ __ Ldl(a1, MemOperand(frame_pointer(), kNumOutputRegisters)); ++ __ Ldl(a2, MemOperand(frame_pointer(), kRegisterOutput)); ++ // Increment success counter. ++ __ Addl(a0, a0, 1); ++ __ Stl(a0, MemOperand(frame_pointer(), kSuccessfulCaptures)); ++ // Capture results have been stored, so the number of remaining global ++ // output registers is reduced by the number of stored captures. ++ __ Subl(a1, a1, num_saved_registers_); ++ // Check whether we have enough room for another set of capture results. ++ __ mov(v0, a0); ++ __ Branch(&return_v0, lt, a1, Operand(num_saved_registers_)); ++ ++ __ Stl(a1, MemOperand(frame_pointer(), kNumOutputRegisters)); ++ // Advance the location for output. ++ __ Addl(a2, a2, num_saved_registers_ * kIntSize); ++ __ Stl(a2, MemOperand(frame_pointer(), kRegisterOutput)); ++ ++ // Prepare a0 to initialize registers with its value in the next run. ++ __ Ldl(a0, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ ++ // Restore the original regexp stack pointer value (effectively, pop the ++ // stored base pointer). ++ PopRegExpBasePointer(backtrack_stackpointer(), a2); ++ ++ if (global_with_zero_length_check()) { ++ // Special case for zero-length matches. ++ // t3: capture start index ++ // Not a zero-length match, restart. ++ __ Branch( ++ &load_char_start_regexp, ne, current_input_offset(), Operand(t3)); ++ // Offset from the end is zero if we already reached the end. ++ __ Branch(&exit_label_, eq, current_input_offset(), ++ Operand(zero_reg)); ++ // Advance current position after a zero-length match. ++ Label advance; ++ __ bind(&advance); ++ __ Addl(current_input_offset(), current_input_offset(), ++ Operand((mode_ == UC16) ? 2 : 1)); ++ if (global_unicode()) CheckNotInSurrogatePair(0, &advance); ++ } ++ ++ __ Branch(&load_char_start_regexp); ++ } else { ++ __ li(v0, Operand(SUCCESS)); ++ } ++ } ++ // Exit and return v0. ++ __ bind(&exit_label_); ++ if (global()) { ++ __ Ldl(v0, MemOperand(frame_pointer(), kSuccessfulCaptures)); ++ } ++ ++ __ bind(&return_v0); ++ // Restore the original regexp stack pointer value (effectively, pop the ++ // stored base pointer). ++ PopRegExpBasePointer(backtrack_stackpointer(), a1); ++ ++ // Skip sp past regexp registers and local variables.. ++ __ mov(sp, frame_pointer()); ++ // Restore registers s0..s7 and return (restoring ra to pc). ++ __ MultiPop(registers_to_retain | ra); ++ __ Ret(); ++ ++ // Backtrack code (branch target for conditional backtracks). ++ if (backtrack_label_.is_linked()) { ++ __ bind(&backtrack_label_); ++ Backtrack(); ++ } ++ ++ Label exit_with_exception; ++ ++ // Preempt-code. ++ if (check_preempt_label_.is_linked()) { ++ SafeCallTarget(&check_preempt_label_); ++ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), a0); ++ ++ CallCheckStackGuardState(a0); ++ // If returning non-zero, we should end execution with the given ++ // result as return value. ++ __ Branch(&return_v0, ne, v0, Operand(zero_reg)); ++ ++ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); ++ ++ // String might have moved: Reload end of string from frame. ++ __ Ldl(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd)); ++ SafeReturn(); ++ } ++ ++ // Backtrack stack overflow code. ++ if (stack_overflow_label_.is_linked()) { ++ SafeCallTarget(&stack_overflow_label_); ++ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), a0); ++ // Reached if the backtrack-stack limit has been hit. ++ ++ // Call GrowStack(isolate) ++ static constexpr int kNumArguments = 1; ++ __ PrepareCallCFunction(kNumArguments, a0); ++ __ li(a0, Operand(ExternalReference::isolate_address(masm_->isolate()))); ++ ExternalReference grow_stack = ExternalReference::re_grow_stack(); ++ __ CallCFunction(grow_stack, kNumArguments); ++ // If nullptr is returned, we have failed to grow the stack, and must exit ++ // with a stack-overflow exception. ++ __ Branch(&exit_with_exception, eq, v0, Operand(zero_reg)); ++ // Otherwise use return value as new stack pointer. ++ __ mov(backtrack_stackpointer(), v0); ++ SafeReturn(); ++ } ++ ++ if (exit_with_exception.is_linked()) { ++ // If any of the code above needed to exit with an exception. ++ __ bind(&exit_with_exception); ++ // Exit with Result EXCEPTION(-1) to signal thrown exception. ++ __ li(v0, Operand(EXCEPTION)); ++ __ jmp(&return_v0); ++ } ++ ++ if (fallback_label_.is_linked()) { ++ __ bind(&fallback_label_); ++ __ li(v0, Operand(FALLBACK_TO_EXPERIMENTAL)); ++ __ jmp(&return_v0); ++ } ++ } ++ ++ CodeDesc code_desc; ++ masm_->GetCode(isolate(), &code_desc); ++ Handle code = ++ Factory::CodeBuilder(isolate(), code_desc, CodeKind::REGEXP) ++ .set_self_reference(masm_->CodeObject()) ++ .Build(); ++ LOG(masm_->isolate(), ++ RegExpCodeCreateEvent(Handle::cast(code), source)); ++ return Handle::cast(code); ++} ++ ++void RegExpMacroAssemblerSW64::GoTo(Label* to) { ++ if (to == nullptr) { ++ Backtrack(); ++ return; ++ } ++ __ jmp(to); ++ return; ++} ++ ++void RegExpMacroAssemblerSW64::IfRegisterGE(int reg, ++ int comparand, ++ Label* if_ge) { ++ __ Ldl(a0, register_location(reg)); ++ BranchOrBacktrack(if_ge, ge, a0, Operand(comparand)); ++} ++ ++void RegExpMacroAssemblerSW64::IfRegisterLT(int reg, ++ int comparand, ++ Label* if_lt) { ++ __ Ldl(a0, register_location(reg)); ++ BranchOrBacktrack(if_lt, lt, a0, Operand(comparand)); ++} ++ ++void RegExpMacroAssemblerSW64::IfRegisterEqPos(int reg, ++ Label* if_eq) { ++ __ Ldl(a0, register_location(reg)); ++ BranchOrBacktrack(if_eq, eq, a0, Operand(current_input_offset())); ++} ++ ++RegExpMacroAssembler::IrregexpImplementation ++ RegExpMacroAssemblerSW64::Implementation() { ++ return kSW64Implementation; ++} ++ ++void RegExpMacroAssemblerSW64::PopCurrentPosition() { ++ Pop(current_input_offset()); ++} ++ ++void RegExpMacroAssemblerSW64::PopRegister(int register_index) { ++ Pop(a0); ++ __ Stl(a0, register_location(register_index)); ++} ++ ++void RegExpMacroAssemblerSW64::PushBacktrack(Label* label) { ++ if (label->is_bound()) { ++ int target = label->pos(); ++ __ li(a0, Operand(target + InstructionStream::kHeaderSize - kHeapObjectTag)); ++ } else { ++ Assembler::BlockTrampolinePoolScope block_trampoline_pool(masm_.get()); ++ Label after_constant; ++ __ Branch(&after_constant); ++ int offset = masm_->pc_offset(); ++ int cp_offset = offset + InstructionStream::kHeaderSize - kHeapObjectTag; ++ __ emit(0); ++ masm_->label_at_put(label, offset); ++ __ bind(&after_constant); ++ if (is_int16(cp_offset)) { ++ __ Ldwu(a0, MemOperand(code_pointer(), cp_offset)); ++ } else { ++ __ Addl(a0, code_pointer(), cp_offset); ++ __ Ldwu(a0, MemOperand(a0, 0)); ++ } ++ } ++ Push(a0); ++ CheckStackLimit(); ++} ++ ++void RegExpMacroAssemblerSW64::PushCurrentPosition() { ++ Push(current_input_offset()); ++} ++ ++void RegExpMacroAssemblerSW64::PushRegister(int register_index, ++ StackCheckFlag check_stack_limit) { ++ __ Ldl(a0, register_location(register_index)); ++ Push(a0); ++ if (check_stack_limit) CheckStackLimit(); ++} ++ ++void RegExpMacroAssemblerSW64::ReadCurrentPositionFromRegister(int reg) { ++ __ Ldl(current_input_offset(), register_location(reg)); ++} ++ ++void RegExpMacroAssemblerSW64::WriteStackPointerToRegister(int reg) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); ++ __ li(a0, Operand(ref)); ++ __ Ldl(a0, MemOperand(a0)); ++ __ Subl(a0, backtrack_stackpointer(), a0); ++ __ Stl(a0, register_location(reg)); ++} ++ ++void RegExpMacroAssemblerSW64::ReadStackPointerFromRegister(int reg) { ++ ExternalReference ref = ++ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); ++ __ li(a0, Operand(ref)); ++ __ Ldl(a0, MemOperand(a0)); ++ __ Ldl(backtrack_stackpointer(), register_location(reg)); ++ __ Addl(backtrack_stackpointer(), backtrack_stackpointer(), Operand(a0)); ++} ++ ++void RegExpMacroAssemblerSW64::SetCurrentPositionFromEnd(int by) { ++ Label after_position; ++ __ Branch(&after_position, ge, current_input_offset(), ++ Operand(-by * char_size())); ++ __ li(current_input_offset(), -by * char_size()); ++ // On RegExp code entry (where this operation is used), the character before ++ // the current position is expected to be already loaded. ++ // We have advanced the position, so it's safe to read backwards. ++ LoadCurrentCharacterUnchecked(-1, 1); ++ __ bind(&after_position); ++} ++ ++void RegExpMacroAssemblerSW64::SetRegister(int register_index, int to) { ++ DCHECK(register_index >= num_saved_registers_); // Reserved for positions! ++ __ li(a0, Operand(to)); ++ __ Stl(a0, register_location(register_index)); ++} ++ ++bool RegExpMacroAssemblerSW64::Succeed() { ++ __ jmp(&success_label_); ++ return global(); ++} ++ ++void RegExpMacroAssemblerSW64::WriteCurrentPositionToRegister(int reg, ++ int cp_offset) { ++ if (cp_offset == 0) { ++ __ Stl(current_input_offset(), register_location(reg)); ++ } else { ++ __ Addl(a0, current_input_offset(), Operand(cp_offset * char_size())); ++ __ Stl(a0, register_location(reg)); ++ } ++} ++ ++void RegExpMacroAssemblerSW64::ClearRegisters(int reg_from, int reg_to) { ++ DCHECK(reg_from <= reg_to); ++ __ Ldl(a0, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ for (int reg = reg_from; reg <= reg_to; reg++) { ++ __ Stl(a0, register_location(reg)); ++ } ++} ++ ++bool RegExpMacroAssemblerSW64::CanReadUnaligned() const { ++ return false; ++} ++ ++// Private methods: ++ ++void RegExpMacroAssemblerSW64::CallCheckStackGuardState(Register scratch) { ++ DCHECK(!isolate()->IsGeneratingEmbeddedBuiltins()); ++ DCHECK(!masm_->options().isolate_independent_code); ++ ++ int stack_alignment = base::OS::ActivationFrameAlignment(); ++ ++ // Align the stack pointer and save the original sp value on the stack. ++ __ mov(scratch, sp); ++ __ Subl(sp, sp, Operand(kPointerSize)); ++ DCHECK(base::bits::IsPowerOfTwo(stack_alignment)); ++ __ And(sp, sp, Operand(-stack_alignment)); ++ __ Stl(scratch, MemOperand(sp)); ++ ++ __ mov(a2, frame_pointer()); ++ // Code of self. ++ __ li(a1, Operand(masm_->CodeObject()), CONSTANT_SIZE); ++ ++ // We need to make room for the return address on the stack. ++ DCHECK(IsAligned(stack_alignment, kPointerSize)); ++ __ Subl(sp, sp, Operand(stack_alignment)); ++ ++ // The stack pointer now points to cell where the return address will be ++ // written. Arguments are in registers, meaning we treat the return address as ++ // argument 5. Since DirectCEntry will handle allocating space for the C ++ // argument slots, we don't need to care about that here. This is how the ++ // stack will look (sp meaning the value of sp at this moment): ++ // [sp + 3] - empty slot if needed for alignment. ++ // [sp + 2] - saved sp. ++ // [sp + 1] - second word reserved for return value. ++ // [sp + 0] - first word reserved for return value. ++ ++ // a0 will point to the return address, placed by DirectCEntry. ++ __ mov(a0, sp); ++ ++ ExternalReference stack_guard_check = ++ ExternalReference::re_check_stack_guard_state(); ++ __ li(t12, Operand(stack_guard_check)); ++ ++ EmbeddedData d = EmbeddedData::FromBlob(); ++ CHECK(Builtins::IsIsolateIndependent(Builtin::kDirectCEntry)); ++ Address entry = d.InstructionStartOfBuiltin(Builtin::kDirectCEntry); ++ __ li(kScratchReg, Operand(entry, RelocInfo::OFF_HEAP_TARGET)); ++ __ Call(kScratchReg); ++ ++ // DirectCEntryStub allocated space for the C argument slots so we have to ++ // drop them with the return address from the stack with loading saved sp. ++ // At this point stack must look: ++ // [sp + 7] - empty slot if needed for alignment. ++ // [sp + 6] - saved sp. ++ // [sp + 5] - second word reserved for return value. ++ // [sp + 4] - first word reserved for return value. ++ // [sp + 3] - C argument slot. ++ // [sp + 2] - C argument slot. ++ // [sp + 1] - C argument slot. ++ // [sp + 0] - C argument slot. ++ __ Ldl(sp, MemOperand(sp, stack_alignment + kCArgsSlotsSize)); ++ ++ __ li(code_pointer(), Operand(masm_->CodeObject())); ++} ++ ++// Helper function for reading a value out of a stack frame. ++template ++static T& frame_entry(Address re_frame, int frame_offset) { ++ return reinterpret_cast(Memory(re_frame + frame_offset)); ++} ++ ++template ++static T* frame_entry_address(Address re_frame, int frame_offset) { ++ return reinterpret_cast(re_frame + frame_offset); ++} ++ ++int64_t RegExpMacroAssemblerSW64::CheckStackGuardState(Address* return_address, ++ Address raw_code, ++ Address re_frame) { ++ InstructionStream re_code = InstructionStream::cast(Object(raw_code)); ++ return NativeRegExpMacroAssembler::CheckStackGuardState( ++ frame_entry(re_frame, kIsolate), ++ static_cast(frame_entry(re_frame, kStartIndex)), ++ static_cast( ++ frame_entry(re_frame, kDirectCall)), ++ return_address, re_code, ++ frame_entry_address
(re_frame, kInputString), ++ frame_entry_address(re_frame, kInputStart), ++ frame_entry_address(re_frame, kInputEnd)); ++} ++ ++MemOperand RegExpMacroAssemblerSW64::register_location(int register_index) { ++ DCHECK(register_index < (1<<30)); ++ if (num_registers_ <= register_index) { ++ num_registers_ = register_index + 1; ++ } ++ return MemOperand(frame_pointer(), ++ kRegisterZero - register_index * kPointerSize); ++} ++ ++void RegExpMacroAssemblerSW64::CheckPosition(int cp_offset, ++ Label* on_outside_input) { ++ if (cp_offset >= 0) { ++ BranchOrBacktrack(on_outside_input, ge, current_input_offset(), ++ Operand(-cp_offset * char_size())); ++ } else { ++ __ Ldl(a1, MemOperand(frame_pointer(), kStringStartMinusOne)); ++ __ Addl(a0, current_input_offset(), Operand(cp_offset * char_size())); ++ BranchOrBacktrack(on_outside_input, le, a0, Operand(a1)); ++ } ++} ++ ++void RegExpMacroAssemblerSW64::BranchOrBacktrack(Label* to, ++ Condition condition, ++ Register rs, ++ const Operand& rt) { ++ if (condition == al) { // Unconditional. ++ if (to == nullptr) { ++ Backtrack(); ++ return; ++ } ++ __ jmp(to); ++ return; ++ } ++ if (to == nullptr) { ++ __ Branch(&backtrack_label_, condition, rs, rt); ++ return; ++ } ++ __ Branch(to, condition, rs, rt); ++} ++ ++void RegExpMacroAssemblerSW64::SafeCall(Label* to, ++ Condition cond, ++ Register rs, ++ const Operand& rt) { ++ __ BranchAndLink(to, cond, rs, rt); ++} ++ ++void RegExpMacroAssemblerSW64::SafeReturn() { ++ __ pop(ra); ++ __ Addl(t1, ra, Operand(masm_->CodeObject())); ++ __ Jump(t1); ++} ++ ++void RegExpMacroAssemblerSW64::SafeCallTarget(Label* name) { ++ __ bind(name); ++ __ Subl(ra, ra, Operand(masm_->CodeObject())); ++ __ Push(ra); ++} ++ ++void RegExpMacroAssemblerSW64::Push(Register source) { ++ DCHECK(source != backtrack_stackpointer()); ++ __ Addl(backtrack_stackpointer(), backtrack_stackpointer(), ++ Operand(-kIntSize)); ++ __ Stw(source, MemOperand(backtrack_stackpointer())); ++} ++ ++void RegExpMacroAssemblerSW64::Pop(Register target) { ++ DCHECK(target != backtrack_stackpointer()); ++ __ Ldw(target, MemOperand(backtrack_stackpointer())); ++ __ Addl(backtrack_stackpointer(), backtrack_stackpointer(), kIntSize); ++} ++ ++ ++void RegExpMacroAssemblerSW64::CheckPreemption() { ++ // Check for preemption. ++ ExternalReference stack_limit = ++ ExternalReference::address_of_jslimit(masm_->isolate()); ++ __ li(a0, Operand(stack_limit)); ++ __ Ldl(a0, MemOperand(a0)); ++ SafeCall(&check_preempt_label_, ls, sp, Operand(a0)); ++} ++ ++void RegExpMacroAssemblerSW64::CheckStackLimit() { ++ ExternalReference stack_limit = ++ ExternalReference::address_of_regexp_stack_limit_address( ++ masm_->isolate()); ++ ++ __ li(a0, Operand(stack_limit)); ++ __ Ldl(a0, MemOperand(a0)); ++ SafeCall(&stack_overflow_label_, ls, backtrack_stackpointer(), Operand(a0)); ++} ++ ++void RegExpMacroAssemblerSW64::LoadCurrentCharacterUnchecked(int cp_offset, ++ int characters) { ++ Register offset = current_input_offset(); ++ if (cp_offset != 0) { ++ // t3 is not being used to store the capture start index at this point. ++ __ Addl(t3, current_input_offset(), Operand(cp_offset * char_size())); ++ offset = t3; ++ } ++ // We assume that we cannot do unaligned loads on SW64, so this function ++ // must only be used to load a single character at a time. ++ DCHECK_EQ(1, characters); ++ __ Addl(t1, end_of_input_address(), Operand(offset)); ++ if (mode_ == LATIN1) { ++ __ Ldbu(current_character(), MemOperand(t1, 0)); ++ } else { ++ DCHECK(mode_ == UC16); ++ __ Ldhu(current_character(), MemOperand(t1, 0)); ++ } ++} ++ ++#undef __ ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_TARGET_ARCH_SW64 +diff --git a/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.h b/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.h +new file mode 100644 +index 00000000..5b5a7c6c +--- /dev/null ++++ b/deps/v8/src/regexp/sw64/regexp-macro-assembler-sw64.h +@@ -0,0 +1,233 @@ ++// Copyright 2011 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_REGEXP_SW64_REGEXP_MACRO_ASSEMBLER_SW64_H_ ++#define V8_REGEXP_SW64_REGEXP_MACRO_ASSEMBLER_SW64_H_ ++ ++#include "src/codegen/macro-assembler.h" ++#include "src/regexp/regexp-macro-assembler.h" ++ ++namespace v8 { ++namespace internal { ++ ++class V8_EXPORT_PRIVATE RegExpMacroAssemblerSW64 ++ : public NativeRegExpMacroAssembler { ++ public: ++ RegExpMacroAssemblerSW64(Isolate* isolate, Zone* zone, Mode mode, ++ int registers_to_save); ++ ~RegExpMacroAssemblerSW64() override; ++ int stack_limit_slack() override; ++ void AdvanceCurrentPosition(int by) override; ++ void AdvanceRegister(int reg, int by) override; ++ void Backtrack() override; ++ void Bind(Label* label) override; ++ void CheckAtStart(int cp_offset, Label* on_at_start) override; ++ void CheckCharacter(uint32_t c, Label* on_equal) override; ++ void CheckCharacterAfterAnd(uint32_t c, uint32_t mask, ++ Label* on_equal) override; ++ void CheckCharacterGT(base::uc16 limit, Label* on_greater) override; ++ void CheckCharacterLT(base::uc16 limit, Label* on_less) override; ++ // A "greedy loop" is a loop that is both greedy and with a simple ++ // body. It has a particularly simple implementation. ++ void CheckGreedyLoop(Label* on_tos_equals_current_position) override; ++ void CheckNotAtStart(int cp_offset, Label* on_not_at_start) override; ++ void CheckNotBackReference(int start_reg, bool read_backward, ++ Label* on_no_match) override; ++ void CheckNotBackReferenceIgnoreCase(int start_reg, bool read_backward, ++ bool unicode, ++ Label* on_no_match) override; ++ void CheckNotCharacter(uint32_t c, Label* on_not_equal) override; ++ void CheckNotCharacterAfterAnd(uint32_t c, uint32_t mask, ++ Label* on_not_equal) override; ++ void CheckNotCharacterAfterMinusAnd(base::uc16 c, base::uc16 minus, ++ base::uc16 mask, ++ Label* on_not_equal) override; ++ void CheckCharacterInRange(base::uc16 from, base::uc16 to, ++ Label* on_in_range) override; ++ void CheckCharacterNotInRange(base::uc16 from, base::uc16 to, ++ Label* on_not_in_range) override; ++ bool CheckCharacterInRangeArray(const ZoneList* ranges, ++ Label* on_in_range) override; ++ bool CheckCharacterNotInRangeArray(const ZoneList* ranges, ++ Label* on_not_in_range) override; ++ void CheckBitInTable(Handle table, Label* on_bit_set) override; ++ ++ // Checks whether the given offset from the current position is before ++ // the end of the string. ++ void CheckPosition(int cp_offset, Label* on_outside_input) override; ++ bool CheckSpecialClassRanges(StandardCharacterSet type, ++ Label* on_no_match) override; ++ void Fail() override; ++ Handle GetCode(Handle source) override; ++ void GoTo(Label* label) override; ++ void IfRegisterGE(int reg, int comparand, Label* if_ge) override; ++ void IfRegisterLT(int reg, int comparand, Label* if_lt) override; ++ void IfRegisterEqPos(int reg, Label* if_eq) override; ++ IrregexpImplementation Implementation() override; ++ void LoadCurrentCharacterUnchecked(int cp_offset, ++ int character_count) override; ++ void PopCurrentPosition() override; ++ void PopRegister(int register_index) override; ++ void PushBacktrack(Label* label) override; ++ void PushCurrentPosition() override; ++ void PushRegister(int register_index, ++ StackCheckFlag check_stack_limit) override; ++ void ReadCurrentPositionFromRegister(int reg) override; ++ void ReadStackPointerFromRegister(int reg) override; ++ void SetCurrentPositionFromEnd(int by) override; ++ void SetRegister(int register_index, int to) override; ++ bool Succeed() override; ++ void WriteCurrentPositionToRegister(int reg, int cp_offset) override; ++ void ClearRegisters(int reg_from, int reg_to) override; ++ void WriteStackPointerToRegister(int reg) override; ++ bool CanReadUnaligned() const override; ++ ++ // Called from RegExp if the stack-guard is triggered. ++ // If the code object is relocated, the return address is fixed before ++ // returning. ++ // {raw_code} is an Address because this is called via ExternalReference. ++ static int64_t CheckStackGuardState(Address* return_address, Address raw_code, ++ Address re_frame); ++ ++ void print_regexp_frame_constants(); ++ ++ private: ++ // Offsets from frame_pointer() of function parameters and stored registers. ++ static const int kFramePointer = 0; ++ ++ // Above the frame pointer - Stored registers and stack passed parameters. ++ static const int kStoredRegisters = kFramePointer; ++ // Return address (stored from link register, read into pc on return). ++ ++ // TODO(plind): This 7 - is 6 s-regs (s0..s5) plus fp. ++ static const int kReturnAddress = kStoredRegisters + 7 * kSystemPointerSize; ++ ++ // Stack frame header. ++ static const int kStackFrameHeader = kReturnAddress; ++ // Stack parameters placed by caller. ++ static const int kDirectCall = kStackFrameHeader + kSystemPointerSize; ++ static const int kIsolate = kDirectCall + kSystemPointerSize; ++ ++ // Below the frame pointer. ++ // Register parameters stored by setup code. ++ static const int kNumOutputRegisters = kFramePointer - kSystemPointerSize; ++ static const int kRegisterOutput = kNumOutputRegisters - kSystemPointerSize; ++ static const int kInputEnd = kRegisterOutput - kSystemPointerSize; ++ static const int kInputStart = kInputEnd - kSystemPointerSize; ++ static const int kStartIndex = kInputStart - kSystemPointerSize; ++ static const int kInputString = kStartIndex - kSystemPointerSize; ++ // When adding local variables remember to push space for them in ++ // the frame in GetCode. ++ static const int kSuccessfulCaptures = kInputString - kSystemPointerSize; ++ static const int kStringStartMinusOne = ++ kSuccessfulCaptures - kSystemPointerSize; ++ static const int kBacktrackCount = kStringStartMinusOne - kSystemPointerSize; ++ // Stores the initial value of the regexp stack pointer in a ++ // position-independent representation (in case the regexp stack grows and ++ // thus moves). ++ static const int kRegExpStackBasePointer = ++ kBacktrackCount - kSystemPointerSize; ++ ++ // First register address. Following registers are below it on the stack. ++ static const int kRegisterZero = kRegExpStackBasePointer - kSystemPointerSize; ++ ++ // Initial size of code buffer. ++ static const int kRegExpCodeSize = 1024; ++ ++ void PushCallerSavedRegisters(); ++ void PopCallerSavedRegisters(); ++ ++ // Check whether preemption has been requested. ++ void CheckPreemption(); ++ ++ // Check whether we are exceeding the stack limit on the backtrack stack. ++ void CheckStackLimit(); ++ ++ // Generate a call to CheckStackGuardState. ++ void CallCheckStackGuardState(Register scratch); ++ void CallIsCharacterInRangeArray(const ZoneList* ranges); ++ ++ // The ebp-relative location of a regexp register. ++ MemOperand register_location(int register_index); ++ ++ // Register holding the current input position as negative offset from ++ // the end of the string. ++ static constexpr Register current_input_offset() { return s2; } ++ ++ // The register containing the current character after LoadCurrentCharacter. ++ static constexpr Register current_character() { return s3; } ++ ++ // Register holding address of the end of the input string. ++ static constexpr Register end_of_input_address() { return s4; } ++ ++ // Register holding the frame address. Local variables, parameters and ++ // regexp registers are addressed relative to this. ++ static constexpr Register frame_pointer() { return fp; } ++ ++ // The register containing the backtrack stack top. Provides a meaningful ++ // name to the register. ++ static constexpr Register backtrack_stackpointer() { return s5; } ++ ++ // Register holding pointer to the current code object. ++ static constexpr Register code_pointer() { return s1; } ++ ++ // Byte size of chars in the string to match (decided by the Mode argument). ++ inline int char_size() const { return static_cast(mode_); } ++ ++ // Equivalent to a conditional branch to the label, unless the label ++ // is nullptr, in which case it is a conditional Backtrack. ++ void BranchOrBacktrack(Label* to, Condition condition, Register rs, ++ const Operand& rt); ++ ++ // Call and return internally in the generated code in a way that ++ // is GC-safe (i.e., doesn't leave absolute code addresses on the stack) ++ inline void SafeCall(Label* to, Condition cond, Register rs, ++ const Operand& rt); ++ inline void SafeReturn(); ++ inline void SafeCallTarget(Label* name); ++ ++ // Pushes the value of a register on the backtrack stack. Decrements the ++ // stack pointer by a word size and stores the register's value there. ++ inline void Push(Register source); ++ ++ // Pops a value from the backtrack stack. Reads the word at the stack pointer ++ // and increments it by a word size. ++ inline void Pop(Register target); ++ ++ void LoadRegExpStackPointerFromMemory(Register dst); ++ void StoreRegExpStackPointerToMemory(Register src, Register scratch); ++ void PushRegExpBasePointer(Register stack_pointer, Register scratch); ++ void PopRegExpBasePointer(Register stack_pointer_out, Register scratch); ++ ++ Isolate* isolate() const { return masm_->isolate(); } ++ ++ const std::unique_ptr masm_; ++ const NoRootArrayScope no_root_array_scope_; ++ ++ // Which mode to generate code for (Latin1 or UC16). ++ const Mode mode_; ++ ++ // One greater than maximal register index actually used. ++ int num_registers_; ++ ++ // Number of registers to output at the end (the saved registers ++ // are always 0..num_saved_registers_-1). ++ const int num_saved_registers_; ++ ++ // Labels used internally. ++ Label entry_label_; ++ Label start_label_; ++ Label success_label_; ++ Label backtrack_label_; ++ Label exit_label_; ++ Label check_preempt_label_; ++ Label stack_overflow_label_; ++ Label internal_failure_label_; ++ Label fallback_label_; ++}; ++ ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_REGEXP_SW64_REGEXP_MACRO_ASSEMBLER_SW64_H_ +diff --git a/deps/v8/src/runtime/runtime-atomics.cc b/deps/v8/src/runtime/runtime-atomics.cc +index d2b371ef..fa1b898b 100644 +--- a/deps/v8/src/runtime/runtime-atomics.cc ++++ b/deps/v8/src/runtime/runtime-atomics.cc +@@ -21,7 +21,7 @@ namespace internal { + + // Other platforms have CSA support, see builtins-sharedarraybuffer-gen.h. + #if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_PPC || \ +- V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_S390X || V8_TARGET_ARCH_LOONG64 ++ V8_TARGET_ARCH_S390 || V8_TARGET_ARCH_S390X || V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_SW64 + + namespace { + +diff --git a/deps/v8/src/runtime/runtime-utils.h b/deps/v8/src/runtime/runtime-utils.h +index 1b8526c6..04659d30 100644 +--- a/deps/v8/src/runtime/runtime-utils.h ++++ b/deps/v8/src/runtime/runtime-utils.h +@@ -19,17 +19,30 @@ namespace internal { + // In Win64 calling convention, a struct of two pointers is returned in memory, + // allocated by the caller, and passed as a pointer in a hidden first parameter. + #ifdef V8_HOST_ARCH_64_BIT ++#if defined(SW64) && defined(__sw_64__) ++typedef Address ObjectPair; ++#else + struct ObjectPair { + Address x; + Address y; + }; ++#endif + ++#if defined(SW64) && defined(__sw_64__) ++static inline ObjectPair MakePair(Object x, Object y) { ++ // mov a1 to a5 ++ __asm__ __volatile__ ("bis %0,$31,$21\n\t"::"r"(y.ptr())); ++ return x.ptr(); ++} ++#else + static inline ObjectPair MakePair(Object x, Object y) { + ObjectPair result = {x.ptr(), y.ptr()}; + // Pointers x and y returned in rax and rdx, in AMD-x64-abi. + // In Win64 they are assigned to a hidden first argument. + return result; + } ++#endif ++ + #else + using ObjectPair = uint64_t; + static inline ObjectPair MakePair(Object x, Object y) { +diff --git a/deps/v8/src/snapshot/deserializer.h b/deps/v8/src/snapshot/deserializer.h +index c2e8c58f..3693cd14 100644 +--- a/deps/v8/src/snapshot/deserializer.h ++++ b/deps/v8/src/snapshot/deserializer.h +@@ -33,7 +33,7 @@ class Object; + #if defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_PPC) || \ + defined(V8_TARGET_ARCH_S390) || defined(V8_TARGET_ARCH_PPC64) || \ + defined(V8_TARGET_ARCH_RISCV32) || defined(V8_TARGET_ARCH_RISCV64) || \ +- V8_EMBEDDED_CONSTANT_POOL_BOOL ++ defined(V8_TARGET_ARCH_SW64) || V8_EMBEDDED_CONSTANT_POOL_BOOL + #define V8_CODE_EMBEDS_OBJECT_POINTER 1 + #else + #define V8_CODE_EMBEDS_OBJECT_POINTER 0 +diff --git a/deps/v8/src/snapshot/embedded/embedded-data.cc b/deps/v8/src/snapshot/embedded/embedded-data.cc +index d7193d02..94fdbdd9 100644 +--- a/deps/v8/src/snapshot/embedded/embedded-data.cc ++++ b/deps/v8/src/snapshot/embedded/embedded-data.cc +@@ -194,7 +194,7 @@ void FinalizeEmbeddedCodeTargets(Isolate* isolate, EmbeddedData* blob) { + #if defined(V8_TARGET_ARCH_X64) || defined(V8_TARGET_ARCH_ARM64) || \ + defined(V8_TARGET_ARCH_ARM) || defined(V8_TARGET_ARCH_IA32) || \ + defined(V8_TARGET_ARCH_S390) || defined(V8_TARGET_ARCH_RISCV64) || \ +- defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_RISCV32) ++ defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_RISCV32) || defined(V8_TARGET_ARCH_SW64) + // On these platforms we emit relative builtin-to-builtin + // jumps for isolate independent builtins in the snapshot. This fixes up the + // relative jumps to the right offsets in the snapshot. +diff --git a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc +index 4ec29473..03f0a2d3 100644 +--- a/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc ++++ b/deps/v8/src/snapshot/embedded/platform-embedded-file-writer-generic.cc +@@ -163,7 +163,7 @@ int PlatformEmbeddedFileWriterGeneric::IndentedDataDirective( + + DataDirective PlatformEmbeddedFileWriterGeneric::ByteChunkDataDirective() + const { +-#if defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_LOONG64) ++#if defined(V8_TARGET_ARCH_MIPS64) || defined(V8_TARGET_ARCH_LOONG64) || defined(V8_TARGET_ARCH_SW64) + // MIPS and LOONG64 uses a fixed 4 byte instruction set, using .long + // to prevent any unnecessary padding. + return kLong; +diff --git a/deps/v8/src/wasm/baseline/liftoff-assembler-defs.h b/deps/v8/src/wasm/baseline/liftoff-assembler-defs.h +index d7329e28..70f864c0 100644 +--- a/deps/v8/src/wasm/baseline/liftoff-assembler-defs.h ++++ b/deps/v8/src/wasm/baseline/liftoff-assembler-defs.h +@@ -74,6 +74,23 @@ constexpr DoubleRegList kLiftoffAssemblerFpCacheRegs = { + // For the "WasmLiftoffFrameSetup" builtin. + constexpr Register kLiftoffFrameSetupFunctionReg = t0; + ++#elif V8_TARGET_ARCH_SW64 ++ ++// t7, t8 used as two scratch regs instead of s3, s4, so delete t7, t8; ++// t5, t6 same to at, t4 used as v1. ++constexpr RegList kLiftoffAssemblerGpCacheRegs = {a0, a1, a2, a3, a4, a5, ++ t0, t1, t2, t3, t4, t9, t10, s5, v0}; ++ ++// f30 used as kDoubleCompareReg; ++// f27, f28, f29 used as kScratchDoubleReg*; ++constexpr DoubleRegList kLiftoffAssemblerFpCacheRegs = {f0, f1, f2, f3, f4, f5, f6, f7, ++ f8, f9, f10, f11, f12, f13, f14, f15, ++ f16, f17, f18, f19, f20, f21, ++ f22, f23, f24, f25, f26}; ++ ++// For the "WasmLiftoffFrameSetup" builtin. ++constexpr Register kLiftoffFrameSetupFunctionReg = t0; ++ + #elif V8_TARGET_ARCH_ARM + + // r10: root, r11: fp, r12: ip, r13: sp, r14: lr, r15: pc. +diff --git a/deps/v8/src/wasm/baseline/liftoff-assembler.h b/deps/v8/src/wasm/baseline/liftoff-assembler.h +index aef63c64..a771ba58 100644 +--- a/deps/v8/src/wasm/baseline/liftoff-assembler.h ++++ b/deps/v8/src/wasm/baseline/liftoff-assembler.h +@@ -1895,6 +1895,8 @@ bool CompatibleStackSlotTypes(ValueKind a, ValueKind b); + #include "src/wasm/baseline/mips64/liftoff-assembler-mips64.h" + #elif V8_TARGET_ARCH_LOONG64 + #include "src/wasm/baseline/loong64/liftoff-assembler-loong64.h" ++#elif V8_TARGET_ARCH_SW64 ++#include "src/wasm/baseline/sw64/liftoff-assembler-sw64.h" + #elif V8_TARGET_ARCH_S390 + #include "src/wasm/baseline/s390/liftoff-assembler-s390.h" + #elif V8_TARGET_ARCH_RISCV64 +diff --git a/deps/v8/src/wasm/baseline/liftoff-compiler.cc b/deps/v8/src/wasm/baseline/liftoff-compiler.cc +index f0887de7..d2141e4b 100644 +--- a/deps/v8/src/wasm/baseline/liftoff-compiler.cc ++++ b/deps/v8/src/wasm/baseline/liftoff-compiler.cc +@@ -313,7 +313,7 @@ void CheckBailoutAllowed(LiftoffBailoutReason reason, const char* detail, + + // Some externally maintained architectures don't fully implement Liftoff yet. + #if V8_TARGET_ARCH_MIPS64 || V8_TARGET_ARCH_S390X || V8_TARGET_ARCH_PPC || \ +- V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_LOONG64 ++ V8_TARGET_ARCH_PPC64 || V8_TARGET_ARCH_LOONG64 || V8_TARGET_ARCH_SW64 + return; + #endif + +diff --git a/deps/v8/src/wasm/baseline/sw64/liftoff-assembler-sw64.h b/deps/v8/src/wasm/baseline/sw64/liftoff-assembler-sw64.h +new file mode 100644 +index 00000000..3871a10a +--- /dev/null ++++ b/deps/v8/src/wasm/baseline/sw64/liftoff-assembler-sw64.h +@@ -0,0 +1,3716 @@ ++// Copyright 2017 the V8 project authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef V8_WASM_BASELINE_SW64_LIFTOFF_ASSEMBLER_SW64_H_ ++#define V8_WASM_BASELINE_SW64_LIFTOFF_ASSEMBLER_SW64_H_ ++ ++#include "src/codegen/machine-type.h" ++#include "src/heap/memory-chunk.h" ++#include "src/wasm/baseline/liftoff-assembler.h" ++#include "src/wasm/wasm-objects.h" ++ ++namespace v8 { ++namespace internal { ++namespace wasm { ++ ++namespace liftoff { ++ ++// Liftoff Frames. ++// ++// slot Frame ++// +--------------------+--------------------------- ++// n+4 | optional padding slot to keep the stack 16 byte aligned. ++// n+3 | parameter n | ++// ... | ... | ++// 4 | parameter 1 | or parameter 2 ++// 3 | parameter 0 | or parameter 1 ++// 2 | (result address) | or parameter 0 ++// -----+--------------------+--------------------------- ++// 1 | return addr (ra) | ++// 0 | previous frame (fp)| ++// -----+--------------------+ <-- frame ptr (fp) ++// -1 | StackFrame::WASM | ++// -2 | instance | ++// -3 | feedback vector| ++// -----+--------------------+--------------------------- ++// -4 | slot 0 | ^ ++// -5 | slot 1 | | ++// | | Frame slots ++// | | | ++// | | v ++// | optional padding slot to keep the stack 16 byte aligned. ++// -----+--------------------+ <-- stack ptr (sp) ++// ++ ++constexpr int kInstanceOffset = 2 * kSystemPointerSize; ++constexpr int kFeedbackVectorOffset = 3 * kSystemPointerSize; ++ ++inline MemOperand GetStackSlot(int offset) { return MemOperand(fp, -offset); } ++ ++inline MemOperand GetInstanceOperand() { return GetStackSlot(kInstanceOffset); } ++ ++template ++inline MemOperand GetMemOp(LiftoffAssembler* assm, Register addr, ++ Register offset, T offset_imm, ++ bool i64_offset = false, unsigned shift_amount = 0) { ++ if (offset != no_reg) { ++ if (!i64_offset) { ++ assm->zapnot(offset, 0xf, kScratchReg); ++ offset = kScratchReg; ++ } ++ if (shift_amount != 0) { ++ assm->Lsal(kScratchReg, addr, offset, shift_amount); ++ } else { ++ assm->addl(offset, addr, kScratchReg); ++ } ++ addr = kScratchReg; ++ } ++ if (is_int31(offset_imm)) { ++ int32_t offset_imm32 = static_cast(offset_imm); ++ return MemOperand(addr, offset_imm32); ++ } else { ++ assm->li(kScratchReg2, Operand(offset_imm)); ++ assm->addl(addr, kScratchReg2, kScratchReg2); ++ return MemOperand(kScratchReg2, 0); ++ } ++} ++ ++inline void Load(LiftoffAssembler* assm, LiftoffRegister dst, MemOperand src, ++ ValueKind kind) { ++ switch (kind) { ++ case kI32: ++ assm->Ldw(dst.gp(), src); ++ break; ++ case kI64: ++ case kRef: ++ case kRefNull: ++ case kRtt: ++ assm->Ldl(dst.gp(), src); ++ break; ++ case kF32: ++ assm->Flds(dst.fp(), src); ++ break; ++ case kF64: ++ assm->Fldd(dst.fp(), src); ++ break; ++ // case ValueType::kS128: ++ // assm->ld_b(dst.fp().toW(), src); ++ // break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++inline void Store(LiftoffAssembler* assm, Register base, int32_t offset, ++ LiftoffRegister src, ValueKind kind) { ++ MemOperand dst(base, offset); ++ switch (kind) { ++ case kI32: ++ assm->Stw_u(src.gp(), dst); ++ break; ++ case kI64: ++ case kRefNull: ++ case kRef: ++ case kRtt: ++ assm->Stl_u(src.gp(), dst); ++ break; ++ case kF32: ++ assm->Fsts_u(src.fp(), dst, t11); ++ break; ++ case kF64: ++ assm->Fstd_u(src.fp(), dst, t11); ++ break; ++ // case ValueType::kS128: ++ // assm->st_b(src.fp().toW(), dst); ++ // break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++inline void push(LiftoffAssembler* assm, LiftoffRegister reg, ValueKind kind) { ++ switch (kind) { ++ case kI32: ++ assm->subl(sp, kSystemPointerSize, sp); ++ assm->Stw(reg.gp(), MemOperand(sp, 0)); ++ break; ++ case kI64: ++ case kRefNull: ++ case kRef: ++ case kRtt: ++ assm->Push(reg.gp()); ++ break; ++ case kF32: ++ assm->subl(sp, kSystemPointerSize, sp); ++ assm->Fsts(reg.fp(), MemOperand(sp, 0)); ++ break; ++ case kF64: ++ assm->subl(sp, kSystemPointerSize, sp); ++ assm->Fstd(reg.fp(), MemOperand(sp, 0)); ++ break; ++ // case ValueType::kS128: ++ // assm->daddiu(sp, sp, -kSystemPointerSize * 2); ++ // assm->st_b(reg.fp().toW(), MemOperand(sp, 0)); ++ // break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++} // namespace liftoff ++ ++int LiftoffAssembler::PrepareStackFrame() { ++ int offset = pc_offset(); ++ // When the frame size is bigger than 4KB, we need five instructions for ++ // stack checking, so we reserve space for this case. ++ addl(sp, 0, sp); ++ nop(); ++ nop(); ++ nop(); ++ nop(); ++ return offset; ++} ++ ++void LiftoffAssembler::CallFrameSetupStub(int declared_function_index) { ++ // TODO(jkummerow): Enable this check when we have C++20. ++ // static_assert(std::find(std::begin(wasm::kGpParamRegisters), ++ // std::end(wasm::kGpParamRegisters), ++ // kLiftoffFrameSetupFunctionReg) == ++ // std::end(wasm::kGpParamRegisters)); ++ ++ // On SW64, we must push at least {ra} before calling the stub, otherwise ++ // it would get clobbered with no possibility to recover it. So just set ++ // up the frame here. ++ EnterFrame(StackFrame::WASM); ++ LoadConstant(LiftoffRegister(kLiftoffFrameSetupFunctionReg), ++ WasmValue(declared_function_index)); ++ CallRuntimeStub(WasmCode::kWasmLiftoffFrameSetup); ++} ++ ++void LiftoffAssembler::PrepareTailCall(int num_callee_stack_params, ++ int stack_param_delta) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ ++ // Push the return address and frame pointer to complete the stack frame. ++ Ldl(scratch, MemOperand(fp, 8)); ++ Push(scratch); ++ Ldl(scratch, MemOperand(fp, 0)); ++ Push(scratch); ++ ++ // Shift the whole frame upwards. ++ int slot_count = num_callee_stack_params + 2; ++ for (int i = slot_count - 1; i >= 0; --i) { ++ Ldl(scratch, MemOperand(sp, i * 8)); ++ Stl(scratch, MemOperand(fp, (i - stack_param_delta) * 8)); ++ } ++ ++ // Set the new stack and frame pointer. ++ subl(fp, stack_param_delta * 8, sp); ++ Pop(ra, fp); ++} ++ ++void LiftoffAssembler::AlignFrameSize() {} ++ ++void LiftoffAssembler::PatchPrepareStackFrame( ++ int offset, SafepointTableBuilder* safepoint_table_builder, ++ bool feedback_vector_slot) { ++ // The frame_size includes the frame marker and the instance slot. Both are ++ // pushed as part of frame construction, so we don't need to allocate memory ++ // for them anymore. ++ int frame_size = GetTotalFrameSize() - 2 * kSystemPointerSize; ++ // The frame setup builtin also pushes the feedback vector. ++ if (feedback_vector_slot) { ++ frame_size -= kSystemPointerSize; ++ } ++ ++ // We can't run out of space, just pass anything big enough to not cause the ++ // assembler to try to grow the buffer. ++ constexpr int kAvailableSpace = 256; ++ MacroAssembler patching_assembler( ++ nullptr, AssemblerOptions{}, CodeObjectRequired::kNo, ++ ExternalAssemblerBuffer(buffer_start_ + offset, kAvailableSpace)); ++ ++ if (V8_LIKELY(frame_size < 4 * KB)) { ++ // This is the standard case for small frames: just subtract from SP and be ++ // done with it. ++ patching_assembler.Addl(sp, sp, Operand(-frame_size)); ++ return; ++ } ++ ++ // The frame size is bigger than 4KB, so we might overflow the available stack ++ // space if we first allocate the frame and then do the stack check (we will ++ // need some remaining stack space for throwing the exception). That's why we ++ // check the available stack space before we allocate the frame. To do this we ++ // replace the {__ Addl(sp, sp, -frame_size)} with a jump to OOL code that ++ // does this "extended stack check". ++ // ++ // The OOL code can simply be generated here with the normal assembler, ++ // because all other code generation, including OOL code, has already finished ++ // when {PatchPrepareStackFrame} is called. The function prologue then jumps ++ // to the current {pc_offset()} to execute the OOL code for allocating the ++ // large frame. ++ // Emit the unconditional branch in the function prologue (from {offset} to ++ // {pc_offset()}). ++ ++ int imm32 = pc_offset() - offset - 3 * kInstrSize; ++ patching_assembler.BranchLong(imm32); ++ ++ // If the frame is bigger than the stack, we throw the stack overflow ++ // exception unconditionally. Thereby we can avoid the integer overflow ++ // check in the condition code. ++ RecordComment("OOL: stack check for large frame"); ++ Label continuation; ++ if (frame_size < v8_flags.stack_size * 1024) { ++ Register stack_limit = kScratchReg; ++ Ldl(stack_limit, ++ FieldMemOperand(kWasmInstanceRegister, ++ WasmInstanceObject::kRealStackLimitAddressOffset)); ++ Ldl(stack_limit, MemOperand(stack_limit)); ++ Addl(stack_limit, stack_limit, Operand(frame_size)); ++ Branch(&continuation, uge, sp, Operand(stack_limit)); ++ } ++ ++ Call(wasm::WasmCode::kWasmStackOverflow, RelocInfo::WASM_STUB_CALL); ++ // The call will not return; just define an empty safepoint. ++ safepoint_table_builder->DefineSafepoint(this); ++ if (v8_flags.debug_code) halt(); ++ ++ bind(&continuation); ++ ++ // Now allocate the stack space. Note that this might do more than just ++ // decrementing the SP; ++ Addl(sp, sp, Operand(-frame_size)); ++ ++ // Jump back to the start of the function, from {pc_offset()} to ++ // right after the reserved space for the {__ Addl(sp, sp, -framesize)} ++ // (which is a Branch now). ++ int func_start_offset = offset + 7 * kInstrSize; ++ imm32 = func_start_offset - pc_offset() - 3 * kInstrSize; ++ BranchLong(imm32); ++} ++ ++void LiftoffAssembler::FinishCode() {} ++ ++void LiftoffAssembler::AbortCompilation() {} ++ ++// static ++constexpr int LiftoffAssembler::StaticStackFrameSize() { ++ return liftoff::kFeedbackVectorOffset; ++} ++ ++int LiftoffAssembler::SlotSizeForType(ValueKind kind) { ++ switch (kind) { ++ case kS128: ++ return value_kind_size(kind); ++ default: ++ return kStackSlotSize; ++ } ++} ++ ++bool LiftoffAssembler::NeedsAlignment(ValueKind kind) { ++ return kind == kS128 || is_reference(kind); ++} ++ ++void LiftoffAssembler::LoadConstant(LiftoffRegister reg, WasmValue value) { ++ switch (value.type().kind()) { ++ case kI32: ++ MacroAssembler::li(reg.gp(), Operand(value.to_i32())); ++ break; ++ case kI64: ++ MacroAssembler::li(reg.gp(), Operand(value.to_i64())); ++ break; ++ case kF32: ++ MacroAssembler::Move(reg.fp(), value.to_f32_boxed().get_bits()); ++ break; ++ case kF64: ++ MacroAssembler::Move(reg.fp(), value.to_f64_boxed().get_bits()); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::LoadInstanceFromFrame(Register dst) { ++ Ldl(dst, liftoff::GetInstanceOperand()); ++} ++ ++void LiftoffAssembler::LoadFromInstance(Register dst, Register instance, ++ int offset, int size) { ++ DCHECK_LE(0, offset); ++ switch (size) { ++ case 1: ++ Ldb(dst, MemOperand(instance, offset)); ++ break; ++ case 4: ++ Ldw(dst, MemOperand(instance, offset)); ++ break; ++ case 8: ++ Ldl(dst, MemOperand(instance, offset)); ++ break; ++ default: ++ UNIMPLEMENTED(); ++ } ++} ++ ++void LiftoffAssembler::LoadTaggedPointerFromInstance(Register dst, ++ Register instance, ++ int32_t offset) { ++ static_assert(kTaggedSize == kSystemPointerSize); ++ Ldl(dst, MemOperand(instance, offset)); ++} ++ ++void LiftoffAssembler::SpillInstance(Register instance) { ++ Stl(instance, liftoff::GetInstanceOperand()); ++} ++ ++void LiftoffAssembler::ResetOSRTarget() {} ++ ++void LiftoffAssembler::LoadTaggedPointer(Register dst, Register src_addr, ++ Register offset_reg, ++ int32_t offset_imm, bool needs_shift) { ++ static_assert(kTaggedSize == kInt64Size); ++ unsigned shift_amount = !needs_shift ? 0 : 3; ++ MemOperand src_op = liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm, ++ false, shift_amount); ++ Ldl(dst, src_op); ++} ++ ++void LiftoffAssembler::LoadFullPointer(Register dst, Register src_addr, ++ int32_t offset_imm) { ++ MemOperand src_op = liftoff::GetMemOp(this, src_addr, no_reg, offset_imm); ++ Ldl(dst, src_op); ++} ++ ++void LiftoffAssembler::StoreTaggedPointer(Register dst_addr, ++ Register offset_reg, ++ int32_t offset_imm, ++ LiftoffRegister src, ++ LiftoffRegList pinned, ++ SkipWriteBarrier skip_write_barrier) { ++ static_assert(kTaggedSize == kInt64Size); ++ Register scratch = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ MemOperand dst_op = liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm); ++ Stl(src.gp(), dst_op); ++ ++ if (skip_write_barrier || v8_flags.disable_write_barriers) return; ++ ++ Label exit; ++ CheckPageFlag(dst_addr, scratch, ++ MemoryChunk::kPointersFromHereAreInterestingMask, kZero, &exit); ++ JumpIfSmi(src.gp(), &exit); ++ CheckPageFlag(src.gp(), scratch, ++ MemoryChunk::kPointersToHereAreInterestingMask, eq, &exit); ++ Addl(scratch, dst_op.rm(), dst_op.offset()); ++ CallRecordWriteStubSaveRegisters(dst_addr, scratch, SaveFPRegsMode::kSave, ++ StubCallMode::kCallWasmRuntimeStub); ++ bind(&exit); ++} ++ ++void LiftoffAssembler::Load(LiftoffRegister dst, Register src_addr, ++ Register offset_reg, uintptr_t offset_imm, ++ LoadType type, uint32_t* protected_load_pc, ++ bool is_load_mem, bool i64_offset, ++ bool needs_shift) { ++ unsigned shift_amount = needs_shift ? type.size_log_2() : 0; ++ MemOperand src_op = liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm, ++ i64_offset, shift_amount); ++ ++ if (protected_load_pc) *protected_load_pc = pc_offset(); ++ switch (type.value()) { ++ case LoadType::kI32Load8U: ++ case LoadType::kI64Load8U: ++ Ldbu(dst.gp(), src_op); ++ break; ++ case LoadType::kI32Load8S: ++ case LoadType::kI64Load8S: ++ Ldb(dst.gp(), src_op); ++ break; ++ case LoadType::kI32Load16U: ++ case LoadType::kI64Load16U: ++ MacroAssembler::Ldhu_u(dst.gp(), src_op); ++ break; ++ case LoadType::kI32Load16S: ++ case LoadType::kI64Load16S: ++ MacroAssembler::Ldh_u(dst.gp(), src_op); ++ break; ++ case LoadType::kI64Load32U: ++ MacroAssembler::Ldwu_u(dst.gp(), src_op); ++ break; ++ case LoadType::kI32Load: ++ case LoadType::kI64Load32S: ++ MacroAssembler::Ldw_u(dst.gp(), src_op); ++ break; ++ case LoadType::kI64Load: ++ MacroAssembler::Ldl_u(dst.gp(), src_op); ++ break; ++ case LoadType::kF32Load: ++ MacroAssembler::Flds_u(dst.fp(), src_op, t11); ++ break; ++ case LoadType::kF64Load: ++ MacroAssembler::Fldd_u(dst.fp(), src_op, t11); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::Store(Register dst_addr, Register offset_reg, ++ uintptr_t offset_imm, LiftoffRegister src, ++ StoreType type, LiftoffRegList pinned, ++ uint32_t* protected_store_pc, bool is_store_mem, ++ bool i64_offset) { ++ MemOperand dst_op = ++ liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm, i64_offset); ++ ++ if (protected_store_pc) *protected_store_pc = pc_offset(); ++ switch (type.value()) { ++ case StoreType::kI32Store8: ++ case StoreType::kI64Store8: ++ Stb(src.gp(), dst_op); ++ break; ++ case StoreType::kI32Store16: ++ case StoreType::kI64Store16: ++ MacroAssembler::Sth_u(src.gp(), dst_op, t11); ++ break; ++ case StoreType::kI32Store: ++ case StoreType::kI64Store32: ++ MacroAssembler::Stw_u(src.gp(), dst_op); ++ break; ++ case StoreType::kI64Store: ++ MacroAssembler::Stl_u(src.gp(), dst_op); ++ break; ++ case StoreType::kF32Store: ++ MacroAssembler::Fsts_u(src.fp(), dst_op, t11); ++ break; ++ case StoreType::kF64Store: ++ MacroAssembler::Fstd_u(src.fp(), dst_op, t11); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++// SKTODO ++void LiftoffAssembler::AtomicLoad(LiftoffRegister dst, Register src_addr, ++ Register offset_reg, uintptr_t offset_imm, ++ LoadType type, LiftoffRegList pinned, ++ bool i64_offset) { ++ UseScratchRegisterScope temps(this); ++ MemOperand src_op = ++ liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm, i64_offset); ++ switch (type.value()) { ++ case LoadType::kI32Load8U: ++ case LoadType::kI64Load8U: { ++ Ldbu(dst.gp(), src_op); ++ // memb(); ++ return; ++ } ++ case LoadType::kI32Load16U: ++ case LoadType::kI64Load16U: { ++ Ldhu(dst.gp(), src_op); ++ // memb(); ++ return; ++ } ++ case LoadType::kI32Load: { ++ Ldw(dst.gp(), src_op); ++ // memb(); ++ return; ++ } ++ case LoadType::kI64Load32U: { ++ Ldwu(dst.gp(), src_op); ++ // memb(); ++ return; ++ } ++ case LoadType::kI64Load: { ++ Ldl(dst.gp(), src_op); ++ // memb(); ++ return; ++ } ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::AtomicStore(Register dst_addr, Register offset_reg, ++ uintptr_t offset_imm, LiftoffRegister src, ++ StoreType type, LiftoffRegList pinned, ++ bool i64_offset) { ++ UseScratchRegisterScope temps(this); ++ MemOperand dst_op = ++ liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm, i64_offset); ++ switch (type.value()) { ++ case StoreType::kI64Store8: ++ case StoreType::kI32Store8: { ++ // memb(); ++ Stb(src.gp(), dst_op); ++ return; ++ } ++ case StoreType::kI64Store16: ++ case StoreType::kI32Store16: { ++ // memb(); ++ Sth(src.gp(), dst_op); ++ return; ++ } ++ case StoreType::kI64Store32: ++ case StoreType::kI32Store: { ++ // memb(); ++ Stw(src.gp(), dst_op); ++ return; ++ } ++ case StoreType::kI64Store: { ++ // memb(); ++ Stl(src.gp(), dst_op); ++ return; ++ } ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++#define ASSEMBLE_ATOMIC_BINOP(load_linked, store_conditional, bin_instr) \ ++ do { \ ++ Label binop; \ ++ bind(&binop); \ ++ load_linked(result.gp(), 0, temp0); \ ++ ldi(gp, 1, zero_reg); \ ++ wr_f(gp); \ ++ bin_instr(temp1, result.gp(), Operand(value.gp())); \ ++ Align(8); \ ++ store_conditional(temp1, 0, temp0); \ ++ rd_f(temp1); \ ++ BranchShort(&binop, eq, temp1, Operand(zero_reg)); \ ++ /*__ memb();*/ \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_BINOP_EXT(load_linked, store_conditional, size, \ ++ bin_instr, aligned) \ ++ do { \ ++ Label binop; \ ++ and_(temp0, aligned, temp3); \ ++ Subl(temp0, temp0, Operand(temp3)); \ ++ slll(temp3, 3, temp3); \ ++ bind(&binop); \ ++ load_linked(temp1, 0, temp0); \ ++ ldi(gp, 1, zero_reg); \ ++ wr_f(gp); \ ++ ExtractBits(result.gp(), temp1, temp3, size, false); \ ++ bin_instr(temp2, result.gp(), value.gp()); \ ++ InsertBits(temp1, temp2, temp3, size); \ ++ Align(8); \ ++ store_conditional(temp1, 0, temp0); \ ++ rd_f(temp1); \ ++ BranchShort(&binop, eq, temp1, Operand(zero_reg)); \ ++ } while (0) ++ ++#define ATOMIC_BINOP_CASE(name, inst32, inst64) \ ++ void LiftoffAssembler::Atomic##name( \ ++ Register dst_addr, Register offset_reg, uintptr_t offset_imm, \ ++ LiftoffRegister value, LiftoffRegister result, StoreType type, \ ++ bool i64_offset) { \ ++ LiftoffRegList pinned{dst_addr, offset_reg, value, result}; \ ++ Register temp0 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); \ ++ Register temp1 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); \ ++ Register temp2 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); \ ++ Register temp3 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); \ ++ MemOperand dst_op = \ ++ liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm, i64_offset); \ ++ Addl(temp0, dst_op.rm(), dst_op.offset()); \ ++ switch (type.value()) { \ ++ case StoreType::kI64Store8: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, 8, inst64, 7); \ ++ break; \ ++ case StoreType::kI32Store8: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, 8, inst32, 3); \ ++ break; \ ++ case StoreType::kI64Store16: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, 16, inst64, 7); \ ++ break; \ ++ case StoreType::kI32Store16: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldw, lstw, 16, inst32, 3); \ ++ break; \ ++ case StoreType::kI64Store32: \ ++ ASSEMBLE_ATOMIC_BINOP_EXT(lldl, lstl, 32, inst64, 7); \ ++ break; \ ++ case StoreType::kI32Store: \ ++ ASSEMBLE_ATOMIC_BINOP(lldw, lstw, inst32); \ ++ break; \ ++ case StoreType::kI64Store: \ ++ ASSEMBLE_ATOMIC_BINOP(lldl, lstl, inst64); \ ++ break; \ ++ default: \ ++ UNREACHABLE(); \ ++ } \ ++ } ++ ++ATOMIC_BINOP_CASE(Add, Addw, Addl) ++ATOMIC_BINOP_CASE(Sub, Subw, Subl) ++ATOMIC_BINOP_CASE(And, And, And) ++ATOMIC_BINOP_CASE(Or, Or, Or) ++ATOMIC_BINOP_CASE(Xor, Xor, Xor) ++#undef ASSEMBLE_ATOMIC_BINOP ++#undef ASSEMBLE_ATOMIC_BINOP_EXT ++#undef ATOMIC_BINOP_CASE ++ ++#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(load_linked, store_conditional) \ ++ do { \ ++ Label exchange; \ ++ bind(&exchange); \ ++ load_linked(result.gp(), 0, temp0); \ ++ ldi(gp, 1, zero_reg); \ ++ wr_f(gp); \ ++ mov(temp1, value.gp()); \ ++ Align(8); \ ++ store_conditional(temp1, 0, temp0); \ ++ rd_f(temp1); \ ++ BranchShort(&exchange, eq, temp1, Operand(zero_reg)); \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(load_linked, store_conditional, \ ++ size, aligned) \ ++ do { \ ++ Label exchange; \ ++ and_(temp0, aligned, temp1); \ ++ Subl(temp0, temp0, Operand(temp1)); \ ++ slll(temp1, 3, temp1); \ ++ bind(&exchange); \ ++ load_linked(temp2, 0, temp0); \ ++ ldi(gp, 1, zero_reg); \ ++ wr_f(gp); \ ++ ExtractBits(result.gp(), temp2, temp1, size, false); \ ++ InsertBits(temp2, value.gp(), temp1, size); \ ++ Align(8); \ ++ store_conditional(temp2, 0, temp0); \ ++ rd_f(temp2); \ ++ BranchShort(&exchange, eq, temp2, Operand(zero_reg)); \ ++ } while (0) ++ ++void LiftoffAssembler::AtomicExchange(Register dst_addr, Register offset_reg, ++ uintptr_t offset_imm, ++ LiftoffRegister value, ++ LiftoffRegister result, StoreType type, ++ bool i64_offset) { ++ LiftoffRegList pinned{dst_addr, offset_reg, value, result}; ++ Register temp0 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ Register temp1 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ Register temp2 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ MemOperand dst_op = ++ liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm, i64_offset); ++ Addl(temp0, dst_op.rm(), dst_op.offset()); ++ switch (type.value()) { ++ case StoreType::kI64Store8: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, 8, 7); ++ break; ++ case StoreType::kI32Store8: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, 8, 3); ++ break; ++ case StoreType::kI64Store16: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, 16, 7); ++ break; ++ case StoreType::kI32Store16: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldw, lstw, 16, 3); ++ break; ++ case StoreType::kI64Store32: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT(lldl, lstl, 32, 7); ++ break; ++ case StoreType::kI32Store: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lldw, lstw); ++ break; ++ case StoreType::kI64Store: ++ ASSEMBLE_ATOMIC_EXCHANGE_INTEGER(lldl, lstl); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++#undef ASSEMBLE_ATOMIC_EXCHANGE_INTEGER ++#undef ASSEMBLE_ATOMIC_EXCHANGE_INTEGER_EXT ++ ++#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(load_linked, \ ++ store_conditional) \ ++ do { \ ++ Label compareExchange; \ ++ Label exit; \ ++ bind(&compareExchange); \ ++ load_linked(result.gp(), 0, temp0); \ ++ cmpeq(result.gp(), expected.gp(), temp1); \ ++ wr_f(temp1); \ ++ mov(temp2, new_value.gp()); \ ++ Align(8); \ ++ store_conditional(temp2, 0, temp0); \ ++ rd_f(temp2); \ ++ beq(temp1, &exit); \ ++ beq(temp2, &compareExchange); \ ++ bind(&exit); \ ++ } while (0) ++ ++#define ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT( \ ++ load_linked, store_conditional, size, aligned) \ ++ do { \ ++ Label compareExchange; \ ++ Label exit; \ ++ and_(temp0, aligned, temp1); \ ++ Subl(temp0, temp0, Operand(temp1)); \ ++ slll(temp1, 3, temp1); \ ++ bind(&compareExchange); \ ++ load_linked(temp2, 0, temp0); \ ++ mov(result.gp(), temp2); \ ++ cmpeq(result.gp(), expected.gp(), gp); \ ++ ExtractBits(result.gp(), temp2, temp1, size, false); \ ++ ExtractBits(temp2, expected.gp(), zero_reg, size, false); \ ++ wr_f(gp); \ ++ InsertBits(temp2, new_value.gp(), temp1, size); \ ++ Align(8); \ ++ store_conditional(temp2, 0, temp0); \ ++ rd_f(temp2); \ ++ beq(gp, &exit); \ ++ beq(temp2, &compareExchange); \ ++ bind(&exit); \ ++ } while (0) ++ ++void LiftoffAssembler::AtomicCompareExchange( ++ Register dst_addr, Register offset_reg, uintptr_t offset_imm, ++ LiftoffRegister expected, LiftoffRegister new_value, LiftoffRegister result, ++ StoreType type, bool i64_offset) { ++ LiftoffRegList pinned{dst_addr, offset_reg, expected, new_value, result}; ++ Register temp0 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ Register temp1 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ Register temp2 = pinned.set(GetUnusedRegister(kGpReg, pinned)).gp(); ++ MemOperand dst_op = ++ liftoff::GetMemOp(this, dst_addr, offset_reg, offset_imm, i64_offset); ++ Addl(temp0, dst_op.rm(), dst_op.offset()); ++ switch (type.value()) { ++ case StoreType::kI64Store8: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, 8, 7); ++ break; ++ case StoreType::kI32Store8: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, 8, 3); ++ break; ++ case StoreType::kI64Store16: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, 16, 7); ++ break; ++ case StoreType::kI32Store16: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldw, lstw, 16, 3); ++ break; ++ case StoreType::kI64Store32: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT(lldl, lstl, 32, 7); ++ break; ++ case StoreType::kI32Store: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(lldw, lstw); ++ break; ++ case StoreType::kI64Store: ++ ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER(lldl, lstl); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++#undef ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER ++#undef ASSEMBLE_ATOMIC_COMPARE_EXCHANGE_INTEGER_EXT ++ ++// SKTODO ++void LiftoffAssembler::AtomicFence() { memb(); } ++ ++void LiftoffAssembler::LoadCallerFrameSlot(LiftoffRegister dst, ++ uint32_t caller_slot_idx, ++ ValueKind kind) { ++ MemOperand src(fp, kSystemPointerSize * (caller_slot_idx + 1)); ++ liftoff::Load(this, dst, src, kind); ++} ++ ++void LiftoffAssembler::StoreCallerFrameSlot(LiftoffRegister src, ++ uint32_t caller_slot_idx, ++ ValueKind kind) { ++ int32_t offset = kSystemPointerSize * (caller_slot_idx + 1); ++ liftoff::Store(this, fp, offset, src, kind); ++} ++ ++void LiftoffAssembler::LoadReturnStackSlot(LiftoffRegister dst, int offset, ++ ValueKind kind) { ++ liftoff::Load(this, dst, MemOperand(sp, offset), kind); ++} ++ ++void LiftoffAssembler::MoveStackValue(uint32_t dst_offset, uint32_t src_offset, ++ ValueKind kind) { ++ DCHECK_NE(dst_offset, src_offset); ++ Register scratch = kScratchReg; ++ ++ switch (kind) { ++ case kI32: ++ case kF32: ++ Ldw(scratch, liftoff::GetStackSlot(src_offset)); ++ Stw(scratch, liftoff::GetStackSlot(dst_offset)); ++ break; ++ case kI64: ++ case kRefNull: ++ case kRef: ++ case kRtt: ++ case kF64: ++ Ldl(scratch, liftoff::GetStackSlot(src_offset)); ++ Stl(scratch, liftoff::GetStackSlot(dst_offset)); ++ break; ++ case kS128: ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::Move(Register dst, Register src, ValueKind kind) { ++ DCHECK_NE(dst, src); ++ // TODO(ksreten): Handle different sizes here. ++ MacroAssembler::Move(dst, src); ++} ++ ++void LiftoffAssembler::Move(DoubleRegister dst, DoubleRegister src, ++ ValueKind kind) { ++ DCHECK_NE(dst, src); ++ MacroAssembler::Move(dst, src); ++} ++ ++void LiftoffAssembler::Spill(int offset, LiftoffRegister reg, ValueKind kind) { ++ RecordUsedSpillOffset(offset); ++ MemOperand dst = liftoff::GetStackSlot(offset); ++ switch (kind) { ++ case kI32: ++ Stw(reg.gp(), dst); ++ break; ++ case kI64: ++ case kRef: ++ case kRefNull: ++ case kRtt: ++ Stl(reg.gp(), dst); ++ break; ++ case kF32: ++ Fsts(reg.fp(), dst); ++ break; ++ case kF64: ++ MacroAssembler::Fstd(reg.fp(), dst); ++ break; ++ // case ValueType::kS128: ++ // MacroAssembler::st_b(reg.fp().toW(), dst); ++ // break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::Spill(int offset, WasmValue value) { ++ RecordUsedSpillOffset(offset); ++ MemOperand dst = liftoff::GetStackSlot(offset); ++ switch (value.type().kind()) { ++ case kI32: { ++ MacroAssembler::li(kScratchReg, Operand(value.to_i32())); ++ Stw(kScratchReg, dst); ++ break; ++ } ++ case kI64: ++ case kRef: ++ case kRefNull: { ++ MacroAssembler::li(kScratchReg, value.to_i64()); ++ Stl(kScratchReg, dst); ++ break; ++ } ++ default: ++ // kWasmF32 and kWasmF64 are unreachable, since those ++ // constants are not tracked. ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::Fill(LiftoffRegister reg, int offset, ValueKind kind) { ++ MemOperand src = liftoff::GetStackSlot(offset); ++ switch (kind) { ++ case kI32: ++ Ldw(reg.gp(), src); ++ break; ++ case kI64: ++ case kRef: ++ case kRefNull: ++ Ldl(reg.gp(), src); ++ break; ++ case kF32: ++ Flds(reg.fp(), src); ++ break; ++ case kF64: ++ MacroAssembler::Fldd(reg.fp(), src); ++ break; ++ default: ++ UNREACHABLE(); ++ } ++} ++ ++void LiftoffAssembler::FillI64Half(Register, int offset, RegPairHalf) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::FillStackSlotsWithZero(int start, int size) { ++ DCHECK_LT(0, size); ++ RecordUsedSpillOffset(start + size); ++ ++ if (size <= 12 * kStackSlotSize) { ++ // Special straight-line code for up to 12 slots. Generates one ++ // instruction per slot (<= 12 instructions total). ++ uint32_t remainder = size; ++ for (; remainder >= kStackSlotSize; remainder -= kStackSlotSize) { ++ Stl(zero_reg, liftoff::GetStackSlot(start + remainder)); ++ } ++ DCHECK(remainder == 4 || remainder == 0); ++ if (remainder) { ++ Stw(zero_reg, liftoff::GetStackSlot(start + remainder)); ++ } ++ } else { ++ // General case for bigger counts (12 instructions). ++ // Use a0 for start address (inclusive), a1 for end address (exclusive). ++ Push(a1, a0); ++ Addl(a0, fp, Operand(-start - size)); ++ Addl(a1, fp, Operand(-start)); ++ ++ Label loop; ++ bind(&loop); ++ Stl(zero_reg, MemOperand(a0)); ++ addl(a0, kSystemPointerSize, a0); ++ BranchShort(&loop, ne, a0, Operand(a1)); ++ ++ Pop(a1, a0); ++ } ++} ++ ++void LiftoffAssembler::LoadSpillAddress(Register dst, int offset, ++ ValueKind /* kind */) { ++ Subl(dst, fp, Operand(offset)); ++} ++ ++void LiftoffAssembler::emit_i64_clz(LiftoffRegister dst, LiftoffRegister src) { ++ MacroAssembler::Ctlzl(dst.gp(), src.gp()); ++} ++ ++void LiftoffAssembler::emit_i64_ctz(LiftoffRegister dst, LiftoffRegister src) { ++ MacroAssembler::Cttzl(dst.gp(), src.gp()); ++} ++ ++bool LiftoffAssembler::emit_i64_popcnt(LiftoffRegister dst, ++ LiftoffRegister src) { ++ MacroAssembler::Ctpopl(dst.gp(), src.gp()); ++ return true; ++} ++ ++void LiftoffAssembler::IncrementSmi(LiftoffRegister dst, int offset) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ SmiUntag(scratch, MemOperand(dst.gp(), offset)); ++ Addl(scratch, scratch, Operand(1)); ++ SmiTag(scratch); ++ Stl(scratch, MemOperand(dst.gp(), offset)); ++} ++ ++void LiftoffAssembler::emit_i32_mul(Register dst, Register lhs, Register rhs) { ++ MacroAssembler::Mulw(dst, lhs, rhs); ++} ++ ++void LiftoffAssembler::emit_i32_divs(Register dst, Register lhs, Register rhs, ++ Label* trap_div_by_zero, ++ Label* trap_div_unrepresentable) { ++ MacroAssembler::Branch(trap_div_by_zero, eq, rhs, Operand(zero_reg)); ++ ++ // Check if lhs == kMinInt and rhs == -1, since this case is unrepresentable. ++ MacroAssembler::li(kScratchReg, 1); ++ MacroAssembler::li(kScratchReg2, 1); ++ MacroAssembler::LoadZeroOnCondition(kScratchReg, lhs, Operand(kMinInt), eq); ++ MacroAssembler::LoadZeroOnCondition(kScratchReg2, rhs, Operand(-1), eq); ++ addl(kScratchReg, kScratchReg2, kScratchReg); ++ MacroAssembler::Branch(trap_div_unrepresentable, eq, kScratchReg, ++ Operand(zero_reg)); ++ ++ // addw(lhs, 0, lhs); ++ // addw(rhs, 0, rhs); ++ ifmovd(lhs, kScratchDoubleReg1); ++ ifmovd(rhs, kScratchDoubleReg2); ++ fcvtld(kScratchDoubleReg1, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg2, kScratchDoubleReg2); ++ fdivd(kScratchDoubleReg1, kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, kScratchDoubleReg2); ++ fimovd(kScratchDoubleReg2, dst); ++ // MacroAssembler::Div(dst, lhs, rhs); ++} ++ ++void LiftoffAssembler::emit_i32_divu(Register dst, Register lhs, Register rhs, ++ Label* trap_div_by_zero) { ++ MacroAssembler::Branch(trap_div_by_zero, eq, rhs, Operand(zero_reg)); ++ zapnot(lhs, 0xf, lhs); ++ zapnot(rhs, 0xf, rhs); ++ ifmovd(lhs, kScratchDoubleReg1); ++ ifmovd(rhs, kScratchDoubleReg2); ++ fcvtld(kScratchDoubleReg1, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg2, kScratchDoubleReg2); ++ fdivd(kScratchDoubleReg1, kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, kScratchDoubleReg2); ++ fimovd(kScratchDoubleReg2, dst); ++ // MacroAssembler::Divu(dst, lhs, rhs); ++} ++ ++void LiftoffAssembler::emit_i32_rems(Register dst, Register lhs, Register rhs, ++ Label* trap_div_by_zero) { ++ MacroAssembler::Branch(trap_div_by_zero, eq, rhs, Operand(zero_reg)); ++ // addw(lhs, 0, lhs); ++ // addw(rhs, 0, rhs); ++ ifmovd(lhs, kScratchDoubleReg1); ++ ifmovd(rhs, kScratchDoubleReg2); ++ fcvtld(kScratchDoubleReg1, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg2, kScratchDoubleReg2); ++ fdivd(kScratchDoubleReg1, kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, kScratchDoubleReg2); ++ fimovd(kScratchDoubleReg2, kScratchReg); ++ mulw(kScratchReg, rhs, kScratchReg); ++ subw(lhs, kScratchReg, dst); ++ // MacroAssembler::Mod(dst, lhs, rhs); ++} ++ ++void LiftoffAssembler::emit_i32_remu(Register dst, Register lhs, Register rhs, ++ Label* trap_div_by_zero) { ++ MacroAssembler::Branch(trap_div_by_zero, eq, rhs, Operand(zero_reg)); ++ zapnot(lhs, 0xf, lhs); ++ zapnot(rhs, 0xf, rhs); ++ ifmovd(lhs, kScratchDoubleReg1); ++ ifmovd(rhs, kScratchDoubleReg2); ++ fcvtld(kScratchDoubleReg1, kScratchDoubleReg1); ++ fcvtld(kScratchDoubleReg2, kScratchDoubleReg2); ++ fdivd(kScratchDoubleReg1, kScratchDoubleReg2, kScratchDoubleReg1); ++ fcvtdl_z(kScratchDoubleReg1, kScratchDoubleReg2); ++ fimovd(kScratchDoubleReg2, kScratchReg); ++ mulw(kScratchReg, rhs, kScratchReg); ++ subw(lhs, kScratchReg, dst); ++ // MacroAssembler::Modu(dst, lhs, rhs); ++} ++ ++#define I32_BINOP(name, instruction) \ ++ void LiftoffAssembler::emit_i32_##name(Register dst, Register lhs, \ ++ Register rhs) { \ ++ instruction(lhs, rhs, dst); \ ++ } ++ ++// clang-format off ++I32_BINOP(add, addw) ++I32_BINOP(sub, subw) ++I32_BINOP(and, and_) ++I32_BINOP(or, or_) ++I32_BINOP(xor, xor_) ++// clang-format on ++ ++#undef I32_BINOP ++ ++#define I32_BINOP_I(name, instruction) \ ++ void LiftoffAssembler::emit_i32_##name##i(Register dst, Register lhs, \ ++ int32_t imm) { \ ++ instruction(dst, lhs, Operand(imm)); \ ++ } ++ ++// clang-format off ++I32_BINOP_I(add, Addw) ++I32_BINOP_I(sub, Subw) ++I32_BINOP_I(and, And) ++I32_BINOP_I(or, Or) ++I32_BINOP_I(xor, Xor) ++// clang-format on ++ ++#undef I32_BINOP_I ++ ++void LiftoffAssembler::emit_i32_clz(Register dst, Register src) { ++ MacroAssembler::Ctlzw(dst, src); ++} ++ ++void LiftoffAssembler::emit_i32_ctz(Register dst, Register src) { ++ MacroAssembler::Cttzw(dst, src); ++} ++ ++bool LiftoffAssembler::emit_i32_popcnt(Register dst, Register src) { ++ MacroAssembler::Ctpopw(dst, src); ++ return true; ++} ++ ++#define I32_SHIFTOP(name, instruction) \ ++ void LiftoffAssembler::emit_i32_##name(Register dst, Register src, \ ++ Register amount) { \ ++ instruction(dst, src, amount); \ ++ } ++#define I32_SHIFTOP_I(name, instruction) \ ++ I32_SHIFTOP(name, instruction) \ ++ void LiftoffAssembler::emit_i32_##name##i(Register dst, Register src, \ ++ int amount) { \ ++ instruction(dst, src, (amount & 31)); \ ++ } ++ ++I32_SHIFTOP_I(shl, Sllw) ++I32_SHIFTOP_I(sar, Sraw) ++I32_SHIFTOP_I(shr, Srlw) ++ ++#undef I32_SHIFTOP ++#undef I32_SHIFTOP_I ++ ++void LiftoffAssembler::emit_i64_addi(LiftoffRegister dst, LiftoffRegister lhs, ++ int64_t imm) { ++ MacroAssembler::Addl(dst.gp(), lhs.gp(), Operand(imm)); ++} ++ ++void LiftoffAssembler::emit_i64_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ MacroAssembler::Mull(dst.gp(), lhs.gp(), rhs.gp()); ++} ++ ++bool LiftoffAssembler::emit_i64_divs(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ Label* trap_div_by_zero, ++ Label* trap_div_unrepresentable) { ++ // TODO ++ return false; ++} ++ ++bool LiftoffAssembler::emit_i64_divu(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ Label* trap_div_by_zero) { ++ // TODO ++ return false; ++ // MacroAssembler::Branch(trap_div_by_zero, eq, rhs.gp(), Operand(zero_reg)); ++ // MacroAssembler::Ddivu(dst.gp(), lhs.gp(), rhs.gp()); ++ // return true; ++} ++ ++bool LiftoffAssembler::emit_i64_rems(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ Label* trap_div_by_zero) { ++ // TODO ++ return false; ++ // MacroAssembler::Branch(trap_div_by_zero, eq, rhs.gp(), Operand(zero_reg)); ++ // MacroAssembler::Dmod(dst.gp(), lhs.gp(), rhs.gp()); ++ // return true; ++} ++ ++bool LiftoffAssembler::emit_i64_remu(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ Label* trap_div_by_zero) { ++ // TODO ++ return false; ++} ++ ++#define I64_BINOP(name, instruction) \ ++ void LiftoffAssembler::emit_i64_##name( \ ++ LiftoffRegister dst, LiftoffRegister lhs, LiftoffRegister rhs) { \ ++ instruction(lhs.gp(), rhs.gp(), dst.gp()); \ ++ } ++ ++// clang-format off ++I64_BINOP(add, addl) ++I64_BINOP(sub, subl) ++I64_BINOP(and, and_) ++I64_BINOP(or, or_) ++I64_BINOP(xor, xor_) ++// clang-format on ++ ++#undef I64_BINOP ++ ++#define I64_BINOP_I(name, instruction) \ ++ void LiftoffAssembler::emit_i64_##name##i( \ ++ LiftoffRegister dst, LiftoffRegister lhs, int32_t imm) { \ ++ instruction(dst.gp(), lhs.gp(), Operand(imm)); \ ++ } ++ ++// clang-format off ++I64_BINOP_I(and, And) ++I64_BINOP_I(or, Or) ++I64_BINOP_I(xor, Xor) ++// clang-format on ++ ++#undef I64_BINOP_I ++ ++#define I64_SHIFTOP(name, instruction) \ ++ void LiftoffAssembler::emit_i64_##name( \ ++ LiftoffRegister dst, LiftoffRegister src, Register amount) { \ ++ instruction(src.gp(), amount, dst.gp()); \ ++ } ++#define I64_SHIFTOP_I(name, instruction) \ ++ I64_SHIFTOP(name, instruction) \ ++ void LiftoffAssembler::emit_i64_##name##i(LiftoffRegister dst, \ ++ LiftoffRegister src, int amount) { \ ++ instruction(src.gp(), (amount & 63), dst.gp()); \ ++ } ++ ++I64_SHIFTOP_I(shl, slll) ++I64_SHIFTOP_I(sar, sral) ++I64_SHIFTOP_I(shr, srll) ++ ++#undef I64_SHIFTOP ++#undef I64_SHIFTOP_I ++ ++void LiftoffAssembler::emit_u32_to_uintptr(Register dst, Register src) { ++ zapnot(src, 0xf, dst); ++} ++ ++void LiftoffAssembler::emit_f32_min(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label ool, done; ++ MacroAssembler::Float32Min(dst, lhs, rhs, &ool); ++ Branch(&done); ++ ++ bind(&ool); ++ MacroAssembler::Float32MinOutOfLine(dst, lhs, rhs); ++ bind(&done); ++} ++ ++void LiftoffAssembler::emit_f32_max(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label ool, done; ++ MacroAssembler::Float32Max(dst, lhs, rhs, &ool); ++ Branch(&done); ++ ++ bind(&ool); ++ MacroAssembler::Float32MaxOutOfLine(dst, lhs, rhs); ++ bind(&done); ++} ++ ++// SKTODO ++void LiftoffAssembler::emit_f32_copysign(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ bailout(kComplexOperation, "f32_copysign"); ++} ++ ++void LiftoffAssembler::emit_f64_min(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label ool, done; ++ MacroAssembler::Float64Min(dst, lhs, rhs, &ool); ++ Branch(&done); ++ ++ bind(&ool); ++ MacroAssembler::Float64MinOutOfLine(dst, lhs, rhs); ++ bind(&done); ++} ++ ++void LiftoffAssembler::emit_f64_max(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label ool, done; ++ MacroAssembler::Float64Max(dst, lhs, rhs, &ool); ++ Branch(&done); ++ ++ bind(&ool); ++ MacroAssembler::Float64MaxOutOfLine(dst, lhs, rhs); ++ bind(&done); ++} ++ ++// SKTODO ++void LiftoffAssembler::emit_f64_copysign(DoubleRegister dst, DoubleRegister lhs, ++ DoubleRegister rhs) { ++ bailout(kComplexOperation, "f64_copysign"); ++} ++ ++#define FP_BINOP(name, instruction) \ ++ void LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister lhs, \ ++ DoubleRegister rhs) { \ ++ instruction(lhs, rhs, dst); \ ++ } ++#define FP_UNOP_X(name, instruction) \ ++ void LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister src) { \ ++ instruction(src, dst); \ ++ } ++ ++#define FP_UNOP(name, instruction) \ ++ void LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister src) { \ ++ MacroAssembler::instruction(dst, src); \ ++ } ++ ++#define FP_UNOP_RETURN_TRUE(name, instruction) \ ++ bool LiftoffAssembler::emit_##name(DoubleRegister dst, DoubleRegister src) { \ ++ instruction(dst, src); \ ++ return true; \ ++ } ++ ++FP_BINOP(f32_add, fadds) ++FP_BINOP(f32_sub, fsubs) ++FP_BINOP(f32_mul, fmuls) ++FP_BINOP(f32_div, fdivs) ++FP_UNOP(f32_abs, Fabs) ++FP_UNOP(f32_neg, Fneg) ++FP_UNOP_RETURN_TRUE(f32_ceil, Ceils) ++FP_UNOP_RETURN_TRUE(f32_floor, Floors) ++FP_UNOP_RETURN_TRUE(f32_trunc, Truncs) ++FP_UNOP_RETURN_TRUE(f32_nearest_int, Rounds) ++FP_UNOP_X(f32_sqrt, fsqrts) ++FP_BINOP(f64_add, faddd) ++FP_BINOP(f64_sub, fsubd) ++FP_BINOP(f64_mul, fmuld) ++FP_BINOP(f64_div, fdivd) ++FP_UNOP(f64_abs, Fabs) ++FP_UNOP(f64_neg, Fneg) ++FP_UNOP_RETURN_TRUE(f64_ceil, Ceild) ++FP_UNOP_RETURN_TRUE(f64_floor, Floord) ++FP_UNOP_RETURN_TRUE(f64_trunc, Truncd) ++FP_UNOP_RETURN_TRUE(f64_nearest_int, Roundd) ++FP_UNOP_X(f64_sqrt, fsqrtd) ++ ++#undef FP_BINOP ++#undef FP_UNOP ++#undef FP_UNOP_RETURN_TRUE ++ ++bool LiftoffAssembler::emit_type_conversion(WasmOpcode opcode, ++ LiftoffRegister dst, ++ LiftoffRegister src, Label* trap) { ++ switch (opcode) { ++ case kExprI32ConvertI64: ++ addw(src.gp(), zero_reg, dst.gp()); ++ return true; ++ case kExprI32SConvertF32: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncs(rounded.fp(), src.fp()); ++ ftruncsw(rounded.fp(), kScratchDoubleReg); ++ fimovs(kScratchDoubleReg, dst.gp()); ++ // Avoid INT32_MAX as an overflow indicator and use INT32_MIN instead, ++ // because INT32_MIN allows easier out-of-bounds detection. ++ MacroAssembler::Addw(kScratchReg, dst.gp(), 1); ++ MacroAssembler::Cmplt(kScratchReg2, kScratchReg, dst.gp()); ++ MacroAssembler::Selne(dst.gp(), kScratchReg, kScratchReg2); ++ ++ // Checking if trap. ++ ifmovs(dst.gp(), kScratchDoubleReg); ++ fcvtws(kScratchDoubleReg, converted_back.fp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI32UConvertF32: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncs(rounded.fp(), src.fp()); ++ MacroAssembler::Trunc_uw_s(dst.gp(), rounded.fp(), kScratchDoubleReg); ++ // Avoid UINT32_MAX as an overflow indicator and use 0 instead, ++ // because 0 allows easier out-of-bounds detection. ++ MacroAssembler::Addw(kScratchReg, dst.gp(), 1); ++ MacroAssembler::Seleq(dst.gp(), zero_reg, kScratchReg); ++ ++ // Checking if trap. ++ MacroAssembler::Cvt_d_uw(converted_back.fp(), dst.gp()); ++ fcvtds_(converted_back.fp(), converted_back.fp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI32SConvertF64: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncd(rounded.fp(), src.fp()); ++ ftruncdw(rounded.fp(), kScratchDoubleReg); ++ fimovs(kScratchDoubleReg, dst.gp()); ++ ++ // Checking if trap. ++ fcvtwd(kScratchDoubleReg, converted_back.fp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI32UConvertF64: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncd(rounded.fp(), src.fp()); ++ MacroAssembler::Trunc_uw_d(dst.gp(), rounded.fp(), kScratchDoubleReg); ++ ++ // Checking if trap. ++ MacroAssembler::Cvt_d_uw(converted_back.fp(), dst.gp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI32ReinterpretF32: ++ fimovs(src.fp(), dst.gp()); ++ return true; ++ case kExprI64SConvertI32: ++ addw(src.gp(), 0, dst.gp()); ++ return true; ++ case kExprI64UConvertI32: ++ zapnot(src.gp(), 0xf, dst.gp()); ++ return true; ++ case kExprI64SConvertF32: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncs(rounded.fp(), src.fp()); ++ ftruncsl(rounded.fp(), kScratchDoubleReg); ++ fimovd(kScratchDoubleReg, dst.gp()); ++ // Avoid INT64_MAX as an overflow indicator and use INT64_MIN instead, ++ // because INT64_MIN allows easier out-of-bounds detection. ++ MacroAssembler::Addl(kScratchReg, dst.gp(), 1); ++ MacroAssembler::Cmplt(kScratchReg2, kScratchReg, dst.gp()); ++ MacroAssembler::Selne(dst.gp(), kScratchReg, kScratchReg2); ++ ++ // Checking if trap. ++ ifmovd(dst.gp(), kScratchDoubleReg); ++ fcvtls(kScratchDoubleReg, converted_back.fp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI64UConvertF32: { ++ // Real conversion. ++ MacroAssembler::Trunc_ul_s(dst.gp(), src.fp(), kScratchDoubleReg, ++ kScratchReg); ++ ++ // Checking if trap. ++ MacroAssembler::Branch(trap, eq, kScratchReg, Operand(zero_reg)); ++ return true; ++ } ++ case kExprI64SConvertF64: { ++ LiftoffRegister rounded = GetUnusedRegister(kFpReg, LiftoffRegList{src}); ++ LiftoffRegister converted_back = ++ GetUnusedRegister(kFpReg, LiftoffRegList{src, rounded}); ++ ++ // Real conversion. ++ MacroAssembler::Truncd(rounded.fp(), src.fp()); ++ ftruncdl(rounded.fp(), kScratchDoubleReg); ++ fimovd(kScratchDoubleReg, dst.gp()); ++ // Avoid INT64_MAX as an overflow indicator and use INT64_MIN instead, ++ // because INT64_MIN allows easier out-of-bounds detection. ++ MacroAssembler::Addl(kScratchReg, dst.gp(), 1); ++ MacroAssembler::Cmplt(kScratchReg2, kScratchReg, dst.gp()); ++ MacroAssembler::Selne(dst.gp(), kScratchReg, kScratchReg2); ++ ++ // Checking if trap. ++ ifmovd(dst.gp(), kScratchDoubleReg); ++ fcvtld(kScratchDoubleReg, converted_back.fp()); ++ MacroAssembler::CompareF(EQ, rounded.fp(), converted_back.fp()); ++ MacroAssembler::BranchFalseF(trap); ++ return true; ++ } ++ case kExprI64UConvertF64: { ++ // Real conversion. ++ MacroAssembler::Trunc_ul_d(dst.gp(), src.fp(), kScratchDoubleReg, ++ kScratchReg); ++ ++ // Checking if trap. ++ MacroAssembler::Branch(trap, eq, kScratchReg, Operand(zero_reg)); ++ return true; ++ } ++ case kExprI64ReinterpretF64: ++ fimovd(src.fp(), dst.gp()); ++ return true; ++ case kExprF32SConvertI32: { ++ LiftoffRegister scratch = GetUnusedRegister(kFpReg, LiftoffRegList{dst}); ++ ifmovs(src.gp(), scratch.fp()); ++ fcvtws(scratch.fp(), dst.fp()); ++ return true; ++ } ++ case kExprF32UConvertI32: ++ MacroAssembler::Cvt_s_uw(dst.fp(), src.gp()); ++ return true; ++ case kExprF32ConvertF64: ++ fcvtds(src.fp(), dst.fp()); ++ return true; ++ case kExprF32ReinterpretI32: ++ ifmovs(src.gp(), dst.fp()); ++ return true; ++ case kExprF64SConvertI32: { ++ LiftoffRegister scratch = GetUnusedRegister(kFpReg, LiftoffRegList{dst}); ++ ifmovs(src.gp(), scratch.fp()); ++ fcvtwd(scratch.fp(), dst.fp()); ++ return true; ++ } ++ case kExprF64UConvertI32: ++ MacroAssembler::Cvt_d_uw(dst.fp(), src.gp()); ++ return true; ++ case kExprF64ConvertF32: ++ fcvtsd(src.fp(), dst.fp()); ++ return true; ++ case kExprF64ReinterpretI64: ++ ifmovd(src.gp(), dst.fp()); ++ return true; ++ case kExprI32SConvertSatF32: ++ bailout(kNonTrappingFloatToInt, "kExprI32SConvertSatF32"); ++ return true; ++ case kExprI32UConvertSatF32: ++ bailout(kNonTrappingFloatToInt, "kExprI32UConvertSatF32"); ++ return true; ++ case kExprI32SConvertSatF64: ++ bailout(kNonTrappingFloatToInt, "kExprI32SConvertSatF64"); ++ return true; ++ case kExprI32UConvertSatF64: ++ bailout(kNonTrappingFloatToInt, "kExprI32UConvertSatF64"); ++ return true; ++ case kExprI64SConvertSatF32: ++ bailout(kNonTrappingFloatToInt, "kExprI64SConvertSatF32"); ++ return true; ++ case kExprI64UConvertSatF32: ++ bailout(kNonTrappingFloatToInt, "kExprI64UConvertSatF32"); ++ return true; ++ case kExprI64SConvertSatF64: ++ bailout(kNonTrappingFloatToInt, "kExprI64SConvertSatF64"); ++ return true; ++ case kExprI64UConvertSatF64: ++ bailout(kNonTrappingFloatToInt, "kExprI64UConvertSatF64"); ++ return true; ++ default: ++ return false; ++ } ++} ++ ++void LiftoffAssembler::emit_i32_signextend_i8(Register dst, Register src) { ++ bailout(kComplexOperation, "i32_signextend_i8"); ++} ++ ++void LiftoffAssembler::emit_i32_signextend_i16(Register dst, Register src) { ++ bailout(kComplexOperation, "i32_signextend_i16"); ++} ++ ++void LiftoffAssembler::emit_i64_signextend_i8(LiftoffRegister dst, ++ LiftoffRegister src) { ++ bailout(kComplexOperation, "i64_signextend_i8"); ++} ++ ++void LiftoffAssembler::emit_i64_signextend_i16(LiftoffRegister dst, ++ LiftoffRegister src) { ++ bailout(kComplexOperation, "i64_signextend_i16"); ++} ++ ++void LiftoffAssembler::emit_i64_signextend_i32(LiftoffRegister dst, ++ LiftoffRegister src) { ++ bailout(kComplexOperation, "i64_signextend_i32"); ++} ++ ++void LiftoffAssembler::emit_jump(Label* label) { ++ MacroAssembler::Branch(label); ++} ++ ++void LiftoffAssembler::emit_jump(Register target) { ++ MacroAssembler::Jump(target); ++} ++ ++void LiftoffAssembler::emit_cond_jump(Condition cond, Label* label, ++ ValueKind kind, Register lhs, ++ Register rhs, ++ const FreezeCacheState& frozen) { ++ if (rhs == no_reg) { ++ DCHECK(kind == kI32 || kind == kI64); ++ MacroAssembler::Branch(label, cond, lhs, Operand(zero_reg)); ++ } else { ++ DCHECK((kind == kI32 || kind == kI64) || ++ (is_reference(kind) && (cond == kEqual || cond == kNotEqual))); ++ MacroAssembler::Branch(label, cond, lhs, Operand(rhs)); ++ } ++} ++ ++void LiftoffAssembler::emit_i32_cond_jumpi(Condition cond, Label* label, ++ Register lhs, int32_t imm, ++ const FreezeCacheState& frozen) { ++ MacroAssembler::Branch(label, cond, lhs, Operand(imm)); ++} ++ ++void LiftoffAssembler::emit_i32_subi_jump_negative( ++ Register value, int subtrahend, Label* result_negative, ++ const FreezeCacheState& frozen) { ++ MacroAssembler::Subl(value, value, Operand(subtrahend)); ++ MacroAssembler::Branch(result_negative, less, value, Operand(zero_reg)); ++} ++ ++void LiftoffAssembler::emit_i32_eqz(Register dst, Register src) { ++ cmpeq(src, 0, dst); ++} ++ ++void LiftoffAssembler::emit_i32_set_cond(Condition cond, Register dst, ++ Register lhs, Register rhs) { ++ Register tmp = dst; ++ if (dst == lhs || dst == rhs) { ++ tmp = GetUnusedRegister(kGpReg, LiftoffRegList{lhs, rhs}).gp(); ++ } ++ // Write 1 as result. ++ MacroAssembler::li(tmp, 1); ++ ++ // If negative condition is true, write 0 as result. ++ Condition neg_cond = NegateCondition(cond); ++ MacroAssembler::LoadZeroOnCondition(tmp, lhs, Operand(rhs), neg_cond); ++ ++ // If tmp != dst, result will be moved. ++ MacroAssembler::Move(dst, tmp); ++} ++ ++void LiftoffAssembler::emit_i64_eqz(Register dst, LiftoffRegister src) { ++ cmpeq(src.gp(), 0, dst); ++} ++ ++void LiftoffAssembler::emit_i64_set_cond(Condition cond, Register dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ Register tmp = dst; ++ if (dst == lhs.gp() || dst == rhs.gp()) { ++ tmp = GetUnusedRegister(kGpReg, LiftoffRegList{lhs, rhs}).gp(); ++ } ++ // Write 1 as result. ++ MacroAssembler::li(tmp, 1); ++ ++ // If negative condition is true, write 0 as result. ++ Condition neg_cond = NegateCondition(cond); ++ MacroAssembler::LoadZeroOnCondition(tmp, lhs.gp(), Operand(rhs.gp()), ++ neg_cond); ++ ++ // If tmp != dst, result will be moved. ++ MacroAssembler::Move(dst, tmp); ++} ++ ++namespace liftoff { ++ ++inline FPUCondition ConditionToConditionCmpFPU(Condition condition, ++ bool* predicate) { ++ switch (condition) { ++ case kEqual: ++ *predicate = true; ++ return EQ; ++ case kNotEqual: ++ *predicate = false; ++ return EQ; ++ case kUnsignedLessThan: ++ *predicate = true; ++ return OLT; ++ case kUnsignedGreaterThanEqual: ++ *predicate = false; ++ return OLT; ++ case kUnsignedLessThanEqual: ++ *predicate = true; ++ return OLE; ++ case kUnsignedGreaterThan: ++ *predicate = false; ++ return OLE; ++ default: ++ *predicate = true; ++ break; ++ } ++ UNREACHABLE(); ++} ++// SKTODO ++#if 0 ++inline void EmitAnyTrue(LiftoffAssembler* assm, LiftoffRegister dst, ++ LiftoffRegister src) { ++ Label all_false; ++ assm->BranchSWSA(&all_false, SWSA_BRANCH_V, all_zero, src.fp().toW()); ++ assm->li(dst.gp(), 0l); ++ assm->li(dst.gp(), 1); ++ assm->bind(&all_false); ++} ++ ++inline void EmitAllTrue(LiftoffAssembler* assm, LiftoffRegister dst, ++ LiftoffRegister src, SWSABranchDF swsa_branch_df) { ++ Label all_true; ++ assm->BranchSWSA(&all_true, swsa_branch_df, all_not_zero, src.fp().toW()); ++ assm->li(dst.gp(), 1); ++ assm->li(dst.gp(), 0l); ++ assm->bind(&all_true); ++} ++#endif ++} // namespace liftoff ++ ++void LiftoffAssembler::emit_f32_set_cond(Condition cond, Register dst, ++ DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label not_nan, cont; ++ MacroAssembler::CompareIsNanF(lhs, rhs); ++ MacroAssembler::BranchFalseF(¬_nan); ++ // If one of the operands is NaN, return 1 for f32.ne, else 0. ++ if (cond == ne) { ++ MacroAssembler::li(dst, 1); ++ } else { ++ MacroAssembler::Move(dst, zero_reg); ++ } ++ MacroAssembler::Branch(&cont); ++ ++ bind(¬_nan); ++ ++ MacroAssembler::li(dst, 1); ++ bool predicate; ++ FPUCondition fcond = liftoff::ConditionToConditionCmpFPU(cond, &predicate); ++ MacroAssembler::CompareF(fcond, lhs, rhs); ++ if (predicate) { ++ MacroAssembler::LoadZeroIfNotFPUCondition(dst); ++ } else { ++ MacroAssembler::LoadZeroIfFPUCondition(dst); ++ } ++ ++ bind(&cont); ++} ++ ++void LiftoffAssembler::emit_f64_set_cond(Condition cond, Register dst, ++ DoubleRegister lhs, ++ DoubleRegister rhs) { ++ Label not_nan, cont; ++ MacroAssembler::CompareIsNanF(lhs, rhs); ++ MacroAssembler::BranchFalseF(¬_nan); ++ // If one of the operands is NaN, return 1 for f64.ne, else 0. ++ if (cond == ne) { ++ MacroAssembler::li(dst, 1); ++ } else { ++ MacroAssembler::Move(dst, zero_reg); ++ } ++ MacroAssembler::Branch(&cont); ++ ++ bind(¬_nan); ++ ++ MacroAssembler::li(dst, 1); ++ bool predicate; ++ FPUCondition fcond = liftoff::ConditionToConditionCmpFPU(cond, &predicate); ++ MacroAssembler::CompareF(fcond, lhs, rhs); ++ if (predicate) { ++ MacroAssembler::LoadZeroIfNotFPUCondition(dst); ++ } else { ++ MacroAssembler::LoadZeroIfFPUCondition(dst); ++ } ++ ++ bind(&cont); ++} ++ ++bool LiftoffAssembler::emit_select(LiftoffRegister dst, Register condition, ++ LiftoffRegister true_value, ++ LiftoffRegister false_value, ++ ValueKind kind) { ++ return false; ++} ++ ++void LiftoffAssembler::emit_smi_check(Register obj, Label* target, ++ SmiCheckMode mode, ++ const FreezeCacheState& frozen) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ And(scratch, obj, Operand(kSmiTagMask)); ++ Condition condition = mode == kJumpOnSmi ? eq : ne; ++ Branch(target, condition, scratch, Operand(zero_reg)); ++} ++ ++// SKTODO ++void LiftoffAssembler::LoadTransform(LiftoffRegister dst, Register src_addr, ++ Register offset_reg, uintptr_t offset_imm, ++ LoadType type, ++ LoadTransformationKind transform, ++ uint32_t* protected_load_pc) { ++ UNREACHABLE(); ++#if 0 ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ MemOperand src_op = ++ liftoff::GetMemOp(this, src_addr, offset_reg, offset_imm); ++ SWSARegister dst_swsa = dst.fp().toW(); ++ *protected_load_pc = pc_offset(); ++ MachineType memtype = type.mem_type(); ++ ++ if (transform == LoadTransformationKind::kExtend) { ++ Ld(scratch, src_op); ++ if (memtype == MachineType::Int8()) { ++ fill_d(dst_swsa, scratch); ++ clti_s_b(kSimd128ScratchReg, dst_swsa, 0); ++ ilvr_b(dst_swsa, kSimd128ScratchReg, dst_swsa); ++ } else if (memtype == MachineType::Uint8()) { ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ fill_d(dst_swsa, scratch); ++ ilvr_b(dst_swsa, kSimd128RegZero, dst_swsa); ++ } else if (memtype == MachineType::Int16()) { ++ fill_d(dst_swsa, scratch); ++ clti_s_h(kSimd128ScratchReg, dst_swsa, 0); ++ ilvr_h(dst_swsa, kSimd128ScratchReg, dst_swsa); ++ } else if (memtype == MachineType::Uint16()) { ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ fill_d(dst_swsa, scratch); ++ ilvr_h(dst_swsa, kSimd128RegZero, dst_swsa); ++ } else if (memtype == MachineType::Int32()) { ++ fill_d(dst_swsa, scratch); ++ clti_s_w(kSimd128ScratchReg, dst_swsa, 0); ++ ilvr_w(dst_swsa, kSimd128ScratchReg, dst_swsa); ++ } else if (memtype == MachineType::Uint32()) { ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ fill_d(dst_swsa, scratch); ++ ilvr_w(dst_swsa, kSimd128RegZero, dst_swsa); ++ } ++ } else if (transform == LoadTransformationKind::kZeroExtend) { ++ xor_v(dst_swsa, dst_swsa, dst_swsa); ++ if (memtype == MachineType::Int32()) { ++ Lwu(scratch, src_op); ++ insert_w(dst_swsa, 0, scratch); ++ } else { ++ DCHECK_EQ(MachineType::Int64(), memtype); ++ Ld(scratch, src_op); ++ insert_d(dst_swsa, 0, scratch); ++ } ++ } else { ++ DCHECK_EQ(LoadTransformationKind::kSplat, transform); ++ if (memtype == MachineType::Int8()) { ++ Lb(scratch, src_op); ++ fill_b(dst_swsa, scratch); ++ } else if (memtype == MachineType::Int16()) { ++ Lh(scratch, src_op); ++ fill_h(dst_swsa, scratch); ++ } else if (memtype == MachineType::Int32()) { ++ Lw(scratch, src_op); ++ fill_w(dst_swsa, scratch); ++ } else if (memtype == MachineType::Int64()) { ++ Ld(scratch, src_op); ++ fill_d(dst_swsa, scratch); ++ } ++ } ++#endif ++} ++ ++void LiftoffAssembler::LoadLane(LiftoffRegister dst, LiftoffRegister src, ++ Register addr, Register offset_reg, ++ uintptr_t offset_imm, LoadType type, ++ uint8_t laneidx, uint32_t* protected_load_pc, ++ bool i64_offset) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::StoreLane(Register dst, Register offset, ++ uintptr_t offset_imm, LiftoffRegister src, ++ StoreType type, uint8_t lane, ++ uint32_t* protected_store_pc, ++ bool i64_offset) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i8x16_shuffle(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ const uint8_t shuffle[16], ++ bool is_swizzle) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ ++ uint64_t control_hi = 0; ++ uint64_t control_low = 0; ++ for (int i = 7; i >= 0; i--) { ++ control_hi <<= 8; ++ control_hi |= shuffle[i + 8]; ++ control_low <<= 8; ++ control_low |= shuffle[i]; ++ } ++ ++ if (dst_swsa == lhs_swsa) { ++ move_v(kSimd128ScratchReg, lhs_swsa); ++ lhs_swsa = kSimd128ScratchReg; ++ } else if (dst_swsa == rhs_swsa) { ++ move_v(kSimd128ScratchReg, rhs_swsa); ++ rhs_swsa = kSimd128ScratchReg; ++ } ++ ++ li(kScratchReg, control_low); ++ insert_d(dst_swsa, 0, kScratchReg); ++ li(kScratchReg, control_hi); ++ insert_d(dst_swsa, 1, kScratchReg); ++ vshf_b(dst_swsa, rhs_swsa, lhs_swsa); ++#endif ++} ++ ++void LiftoffAssembler::emit_i8x16_swizzle(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ ++ if (dst == lhs) { ++ move_v(kSimd128ScratchReg, lhs_swsa); ++ lhs_swsa = kSimd128ScratchReg; ++ } ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ move_v(dst_swsa, rhs_swsa); ++ vshf_b(dst_swsa, kSimd128RegZero, lhs_swsa); ++#endif ++} ++ ++void LiftoffAssembler::emit_i8x16_relaxed_swizzle(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_relaxed_trunc_f32x4_s(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_relaxed_trunc_f32x4_u(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_relaxed_trunc_f64x2_s_zero( ++ LiftoffRegister dst, LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_relaxed_trunc_f64x2_u_zero( ++ LiftoffRegister dst, LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_s128_relaxed_laneselect(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister mask) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i8x16_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // fill_b(dst.fp().toW(), src.gp()); ++} ++ ++void LiftoffAssembler::emit_i16x8_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // fill_h(dst.fp().toW(), src.gp()); ++} ++ ++void LiftoffAssembler::emit_i32x4_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // fill_w(dst.fp().toW(), src.gp()); ++} ++ ++void LiftoffAssembler::emit_i64x2_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // fill_d(dst.fp().toW(), src.gp()); ++} ++ ++void LiftoffAssembler::emit_f32x4_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // MacroAssembler::FmoveLow(kScratchReg, src.fp()); ++ // fill_w(dst.fp().toW(), kScratchReg); ++} ++ ++void LiftoffAssembler::emit_f64x2_splat(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // MacroAssembler::Move(kScratchReg, src.fp()); ++ // fill_d(dst.fp().toW(), kScratchReg); ++} ++ ++#define SIMD_BINOP(name1, name2, type) \ ++ void LiftoffAssembler::emit_##name1##_extmul_low_##name2( \ ++ LiftoffRegister dst, LiftoffRegister src1, LiftoffRegister src2) { \ ++ UNREACHABLE(); \ ++ } \ ++ void LiftoffAssembler::emit_##name1##_extmul_high_##name2( \ ++ LiftoffRegister dst, LiftoffRegister src1, LiftoffRegister src2) { \ ++ UNREACHABLE(); \ ++ } ++ ++SIMD_BINOP(i16x8, i8x16_s, SWSAS8) ++SIMD_BINOP(i16x8, i8x16_u, SWSAU8) ++ ++SIMD_BINOP(i32x4, i16x8_s, SWSAS16) ++SIMD_BINOP(i32x4, i16x8_u, SWSAU16) ++ ++SIMD_BINOP(i64x2, i32x4_s, SWSAS32) ++SIMD_BINOP(i64x2, i32x4_u, SWSAU32) ++ ++#undef SIMD_BINOP ++ ++#define SIMD_BINOP(name1, name2, type) \ ++ void LiftoffAssembler::emit_##name1##_extadd_pairwise_##name2( \ ++ LiftoffRegister dst, LiftoffRegister src) { \ ++ UNREACHABLE(); \ ++ } ++ ++SIMD_BINOP(i16x8, i8x16_s, SWSAS8) ++SIMD_BINOP(i16x8, i8x16_u, SWSAU8) ++SIMD_BINOP(i32x4, i16x8_s, SWSAS16) ++SIMD_BINOP(i32x4, i16x8_u, SWSAU16) ++#undef SIMD_BINOP ++ ++void LiftoffAssembler::emit_i16x8_q15mulr_sat_s(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2) { ++ UNREACHABLE(); ++ // mulr_q_h(dst.fp().toW(), src1.fp().toW(), src2.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_relaxed_q15mulr_s(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i16x8_dot_i8x16_i7x16_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_dot_i8x16_i7x16_add_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs, ++ LiftoffRegister acc) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i8x16_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++ // nor_v(dst.fp().toW(), dst.fp().toW(), dst.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_gt_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_s_b(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_gt_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_u_b(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_ge_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_s_b(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_ge_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_u_b(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++ // nor_v(dst.fp().toW(), dst.fp().toW(), dst.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_gt_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_s_h(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_gt_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_u_h(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_ge_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_s_h(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_ge_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_u_h(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++ // nor_v(dst.fp().toW(), dst.fp().toW(), dst.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_gt_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_s_w(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_gt_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_u_w(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_ge_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_s_w(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_ge_u(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_u_w(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fceq_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fcune_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_lt(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fclt_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_le(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fcle_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // ceq_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++ // nor_v(dst.fp().toW(), dst.fp().toW(), dst.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // add_a_d(dst.fp().toW(), src.fp().toW(), kSimd128RegZero); ++} ++ ++void LiftoffAssembler::emit_f64x2_eq(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fceq_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_ne(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fcune_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_lt(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fclt_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_le(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fcle_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_const(LiftoffRegister dst, ++ const uint8_t imms[16]) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ uint64_t vals[2]; ++ memcpy(vals, imms, sizeof(vals)); ++ li(kScratchReg, vals[0]); ++ insert_d(dst_swsa, 0, kScratchReg); ++ li(kScratchReg, vals[1]); ++ insert_d(dst_swsa, 1, kScratchReg); ++#endif ++} ++ ++void LiftoffAssembler::emit_s128_not(LiftoffRegister dst, LiftoffRegister src) { ++ UNREACHABLE(); ++ // nor_v(dst.fp().toW(), src.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_and(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // and_v(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_or(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // or_v(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_xor(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // xor_v(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_and_not(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // nor_v(kSimd128ScratchReg, rhs.fp().toW(), rhs.fp().toW()); ++ // and_v(dst.fp().toW(), kSimd128ScratchReg, lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_s128_select(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister mask) { ++ UNREACHABLE(); ++#if 0 ++ if (dst == mask) { ++ bsel_v(dst.fp().toW(), src2.fp().toW(), src1.fp().toW()); ++ } else { ++ xor_v(kSimd128ScratchReg, src1.fp().toW(), src2.fp().toW()); ++ and_v(kSimd128ScratchReg, kSimd128ScratchReg, mask.fp().toW()); ++ xor_v(dst.fp().toW(), kSimd128ScratchReg, src2.fp().toW()); ++ } ++#endif ++} ++ ++void LiftoffAssembler::emit_i8x16_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // subv_b(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_v128_anytrue(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // liftoff::EmitAnyTrue(this, dst, src); ++} ++ ++void LiftoffAssembler::emit_i8x16_alltrue(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // liftoff::EmitAllTrue(this, dst, src, SWSA_BRANCH_B); ++} ++ ++void LiftoffAssembler::emit_i8x16_bitmask(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ srli_b(scratch0, src.fp().toW(), 7); ++ srli_h(scratch1, scratch0, 7); ++ or_v(scratch0, scratch0, scratch1); ++ srli_w(scratch1, scratch0, 14); ++ or_v(scratch0, scratch0, scratch1); ++ srli_d(scratch1, scratch0, 28); ++ or_v(scratch0, scratch0, scratch1); ++ shf_w(scratch1, scratch0, 0x0E); ++ ilvev_b(scratch0, scratch1, scratch0); ++ copy_u_h(dst.gp(), scratch0, 0); ++#endif ++} ++ ++void LiftoffAssembler::emit_i8x16_shl(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_b(kSimd128ScratchReg, rhs.gp()); ++ // sll_b(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i8x16_shli(LiftoffRegister dst, LiftoffRegister lhs, ++ int32_t rhs) { ++ UNREACHABLE(); ++ // slli_b(dst.fp().toW(), lhs.fp().toW(), rhs & 7); ++} ++ ++void LiftoffAssembler::emit_i8x16_shr_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_b(kSimd128ScratchReg, rhs.gp()); ++ // sra_b(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i8x16_shri_s(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srai_b(dst.fp().toW(), lhs.fp().toW(), rhs & 7); ++} ++ ++void LiftoffAssembler::emit_i8x16_shr_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_b(kSimd128ScratchReg, rhs.gp()); ++ // srl_b(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i8x16_shri_u(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srli_b(dst.fp().toW(), lhs.fp().toW(), rhs & 7); ++} ++ ++void LiftoffAssembler::emit_i8x16_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // addv_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_add_sat_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // adds_s_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_add_sat_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // adds_u_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subv_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_sub_sat_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subs_s_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_sub_sat_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subs_u_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_min_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_s_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_min_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_u_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_max_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_s_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_max_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_u_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_popcnt(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // pcnt_b(dst.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // subv_h(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_alltrue(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // liftoff::EmitAllTrue(this, dst, src, SWSA_BRANCH_H); ++} ++ ++void LiftoffAssembler::emit_i16x8_bitmask(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ srli_h(scratch0, src.fp().toW(), 15); ++ srli_w(scratch1, scratch0, 15); ++ or_v(scratch0, scratch0, scratch1); ++ srli_d(scratch1, scratch0, 30); ++ or_v(scratch0, scratch0, scratch1); ++ shf_w(scratch1, scratch0, 0x0E); ++ slli_d(scratch1, scratch1, 4); ++ or_v(scratch0, scratch0, scratch1); ++ copy_u_b(dst.gp(), scratch0, 0); ++#endif ++} ++ ++void LiftoffAssembler::emit_i16x8_shl(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_h(kSimd128ScratchReg, rhs.gp()); ++ // sll_h(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i16x8_shli(LiftoffRegister dst, LiftoffRegister lhs, ++ int32_t rhs) { ++ UNREACHABLE(); ++ // slli_h(dst.fp().toW(), lhs.fp().toW(), rhs & 15); ++} ++ ++void LiftoffAssembler::emit_i16x8_shr_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_h(kSimd128ScratchReg, rhs.gp()); ++ // sra_h(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i16x8_shri_s(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srai_h(dst.fp().toW(), lhs.fp().toW(), rhs & 15); ++} ++ ++void LiftoffAssembler::emit_i16x8_shr_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_h(kSimd128ScratchReg, rhs.gp()); ++ // srl_h(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i16x8_shri_u(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srli_h(dst.fp().toW(), lhs.fp().toW(), rhs & 15); ++} ++ ++void LiftoffAssembler::emit_i16x8_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // addv_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_add_sat_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // adds_s_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_add_sat_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // adds_u_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subv_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_sub_sat_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subs_s_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_sub_sat_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subs_u_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // mulv_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_min_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_s_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_min_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_u_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_max_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_s_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_max_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_u_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // subv_w(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_alltrue(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // liftoff::EmitAllTrue(this, dst, src, SWSA_BRANCH_W); ++} ++ ++void LiftoffAssembler::emit_i32x4_bitmask(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ srli_w(scratch0, src.fp().toW(), 31); ++ srli_d(scratch1, scratch0, 31); ++ or_v(scratch0, scratch0, scratch1); ++ shf_w(scratch1, scratch0, 0x0E); ++ slli_d(scratch1, scratch1, 2); ++ or_v(scratch0, scratch0, scratch1); ++ copy_u_b(dst.gp(), scratch0, 0); ++#endif ++} ++ ++void LiftoffAssembler::emit_i32x4_shl(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_w(kSimd128ScratchReg, rhs.gp()); ++ // sll_w(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i32x4_shli(LiftoffRegister dst, LiftoffRegister lhs, ++ int32_t rhs) { ++ UNREACHABLE(); ++ // slli_w(dst.fp().toW(), lhs.fp().toW(), rhs & 31); ++} ++ ++void LiftoffAssembler::emit_i32x4_shr_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_w(kSimd128ScratchReg, rhs.gp()); ++ // sra_w(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i32x4_shri_s(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srai_w(dst.fp().toW(), lhs.fp().toW(), rhs & 31); ++} ++ ++void LiftoffAssembler::emit_i32x4_shr_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_w(kSimd128ScratchReg, rhs.gp()); ++ // srl_w(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i32x4_shri_u(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srli_w(dst.fp().toW(), lhs.fp().toW(), rhs & 31); ++} ++ ++void LiftoffAssembler::emit_i32x4_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // addv_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subv_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // mulv_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_min_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_s_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_min_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // min_u_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_max_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_s_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_max_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // max_u_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_dot_i16x8_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i64x2_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // subv_d(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_alltrue(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // liftoff::EmitAllTrue(this, dst, src, SWSA_BRANCH_D); ++} ++ ++void LiftoffAssembler::emit_i64x2_bitmask(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // srli_d(kSimd128RegZero, src.fp().toW(), 63); ++ // shf_w(kSimd128ScratchReg, kSimd128RegZero, 0x02); ++ // slli_d(kSimd128ScratchReg, kSimd128ScratchReg, 1); ++ // or_v(kSimd128RegZero, kSimd128RegZero, kSimd128ScratchReg); ++ // copy_u_b(dst.gp(), kSimd128RegZero, 0); ++} ++ ++void LiftoffAssembler::emit_i64x2_shl(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_d(kSimd128ScratchReg, rhs.gp()); ++ // sll_d(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i64x2_shli(LiftoffRegister dst, LiftoffRegister lhs, ++ int32_t rhs) { ++ UNREACHABLE(); ++ // slli_d(dst.fp().toW(), lhs.fp().toW(), rhs & 63); ++} ++ ++void LiftoffAssembler::emit_i64x2_shr_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_d(kSimd128ScratchReg, rhs.gp()); ++ // sra_d(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i64x2_shri_s(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srai_d(dst.fp().toW(), lhs.fp().toW(), rhs & 63); ++} ++ ++void LiftoffAssembler::emit_i64x2_shr_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fill_d(kSimd128ScratchReg, rhs.gp()); ++ // srl_d(dst.fp().toW(), lhs.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i64x2_shri_u(LiftoffRegister dst, ++ LiftoffRegister lhs, int32_t rhs) { ++ UNREACHABLE(); ++ // srli_d(dst.fp().toW(), lhs.fp().toW(), rhs & 63); ++} ++ ++void LiftoffAssembler::emit_i64x2_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // addv_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // subv_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // mulv_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_gt_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // clt_s_d(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_ge_s(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // cle_s_d(dst.fp().toW(), rhs.fp().toW(), lhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // bclri_w(dst.fp().toW(), src.fp().toW(), 31); ++} ++ ++void LiftoffAssembler::emit_f32x4_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // bnegi_w(dst.fp().toW(), src.fp().toW(), 31); ++} ++ ++void LiftoffAssembler::emit_f32x4_sqrt(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f32x4_ceil(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f32x4_floor(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f32x4_trunc(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f32x4_nearest_int(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fadd_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fsub_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fmul_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_div(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fdiv_w(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_min(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ // If inputs are -0.0. and +0.0, then write -0.0 to scratch1. ++ // scratch1 = (lhs == rhs) ? (lhs | rhs) : (rhs | rhs). ++ fseq_w(scratch0, lhs_swsa, rhs_swsa); ++ bsel_v(scratch0, rhs_swsa, lhs_swsa); ++ or_v(scratch1, scratch0, rhs_swsa); ++ // scratch0 = isNaN(scratch1) ? scratch1: lhs. ++ fseq_w(scratch0, scratch1, scratch1); ++ bsel_v(scratch0, scratch1, lhs_swsa); ++ // dst = (scratch1 <= scratch0) ? scratch1 : scratch0. ++ fsle_w(dst_swsa, scratch1, scratch0); ++ bsel_v(dst_swsa, scratch0, scratch1); ++#endif ++} ++ ++void LiftoffAssembler::emit_f32x4_max(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ // If inputs are -0.0. and +0.0, then write +0.0 to scratch1. ++ // scratch1 = (lhs == rhs) ? (lhs | rhs) : (rhs | rhs). ++ fseq_w(scratch0, lhs_swsa, rhs_swsa); ++ bsel_v(scratch0, rhs_swsa, lhs_swsa); ++ and_v(scratch1, scratch0, rhs_swsa); ++ // scratch0 = isNaN(scratch1) ? scratch1: lhs. ++ fseq_w(scratch0, scratch1, scratch1); ++ bsel_v(scratch0, scratch1, lhs_swsa); ++ // dst = (scratch0 <= scratch1) ? scratch1 : scratch0. ++ fsle_w(dst_swsa, scratch0, scratch1); ++ bsel_v(dst_swsa, scratch0, scratch1); ++#endif ++} ++ ++void LiftoffAssembler::emit_f32x4_relaxed_min(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_relaxed_max(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_pmin(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_pmax(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // bclri_d(dst.fp().toW(), src.fp().toW(), 63); ++} ++ ++void LiftoffAssembler::emit_f64x2_neg(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // bnegi_d(dst.fp().toW(), src.fp().toW(), 63); ++} ++ ++void LiftoffAssembler::emit_f64x2_sqrt(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f64x2_ceil(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f64x2_floor(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f64x2_trunc(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++bool LiftoffAssembler::emit_f64x2_nearest_int(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_add(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fadd_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_sub(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fsub_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_mul(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fmul_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_div(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // fdiv_d(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f64x2_min(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ // If inputs are -0.0. and +0.0, then write -0.0 to scratch1. ++ // scratch1 = (lhs == rhs) ? (lhs | rhs) : (rhs | rhs). ++ fseq_d(scratch0, lhs_swsa, rhs_swsa); ++ bsel_v(scratch0, rhs_swsa, lhs_swsa); ++ or_v(scratch1, scratch0, rhs_swsa); ++ // scratch0 = isNaN(scratch1) ? scratch1: lhs. ++ fseq_d(scratch0, scratch1, scratch1); ++ bsel_v(scratch0, scratch1, lhs_swsa); ++ // dst = (scratch1 <= scratch0) ? scratch1 : scratch0. ++ fsle_d(dst_swsa, scratch1, scratch0); ++ bsel_v(dst_swsa, scratch0, scratch1); ++#endif ++} ++ ++void LiftoffAssembler::emit_f64x2_max(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ SWSARegister dst_swsa = dst.fp().toW(); ++ SWSARegister lhs_swsa = lhs.fp().toW(); ++ SWSARegister rhs_swsa = rhs.fp().toW(); ++ SWSARegister scratch0 = kSimd128RegZero; ++ SWSARegister scratch1 = kSimd128ScratchReg; ++ // If inputs are -0.0. and +0.0, then write +0.0 to scratch1. ++ // scratch1 = (lhs == rhs) ? (lhs | rhs) : (rhs | rhs). ++ fseq_d(scratch0, lhs_swsa, rhs_swsa); ++ bsel_v(scratch0, rhs_swsa, lhs_swsa); ++ and_v(scratch1, scratch0, rhs_swsa); ++ // scratch0 = isNaN(scratch1) ? scratch1: lhs. ++ fseq_d(scratch0, scratch1, scratch1); ++ bsel_v(scratch0, scratch1, lhs_swsa); ++ // dst = (scratch0 <= scratch1) ? scratch1 : scratch0. ++ fsle_d(dst_swsa, scratch0, scratch1); ++ bsel_v(dst_swsa, scratch0, scratch1); ++ // Canonicalize the result. ++ fmax_d(dst_swsa, dst_swsa, dst_swsa); ++#endif ++} ++ ++void LiftoffAssembler::emit_f64x2_pmin(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_pmax(LiftoffRegister dst, LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_relaxed_min(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_relaxed_max(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_convert_low_i32x4_s(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_convert_low_i32x4_u(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_promote_low_f32x4(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_sconvert_f32x4(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ftrunc_s_w(dst.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_uconvert_f32x4(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ftrunc_u_w(dst.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_s_zero(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i32x4_trunc_sat_f64x2_u_zero(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_sconvert_i32x4(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ffint_s_w(dst.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_uconvert_i32x4(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ffint_u_w(dst.fp().toW(), src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_f32x4_demote_f64x2_zero(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_i8x16_sconvert_i16x8(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // sat_s_h(kSimd128ScratchReg, lhs.fp().toW(), 7); ++ // sat_s_h(dst.fp().toW(), lhs.fp().toW(), 7); ++ // pckev_b(dst.fp().toW(), dst.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i8x16_uconvert_i16x8(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ max_s_h(kSimd128ScratchReg, kSimd128RegZero, lhs.fp().toW()); ++ sat_u_h(kSimd128ScratchReg, kSimd128ScratchReg, 7); ++ max_s_h(dst.fp().toW(), kSimd128RegZero, rhs.fp().toW()); ++ sat_u_h(dst.fp().toW(), dst.fp().toW(), 7); ++ pckev_b(dst.fp().toW(), dst.fp().toW(), kSimd128ScratchReg); ++#endif ++} ++ ++void LiftoffAssembler::emit_i16x8_sconvert_i32x4(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // sat_s_w(kSimd128ScratchReg, lhs.fp().toW(), 15); ++ // sat_s_w(dst.fp().toW(), lhs.fp().toW(), 15); ++ // pckev_h(dst.fp().toW(), dst.fp().toW(), kSimd128ScratchReg); ++} ++ ++void LiftoffAssembler::emit_i16x8_uconvert_i32x4(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++#if 0 ++ xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ max_s_w(kSimd128ScratchReg, kSimd128RegZero, lhs.fp().toW()); ++ sat_u_w(kSimd128ScratchReg, kSimd128ScratchReg, 15); ++ max_s_w(dst.fp().toW(), kSimd128RegZero, rhs.fp().toW()); ++ sat_u_w(dst.fp().toW(), dst.fp().toW(), 15); ++ pckev_h(dst.fp().toW(), dst.fp().toW(), kSimd128ScratchReg); ++#endif ++} ++ ++void LiftoffAssembler::emit_i16x8_sconvert_i8x16_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvr_b(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_h(dst.fp().toW(), kSimd128ScratchReg, 8); ++ // srai_h(dst.fp().toW(), dst.fp().toW(), 8); ++} ++ ++void LiftoffAssembler::emit_i16x8_sconvert_i8x16_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvl_b(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_h(dst.fp().toW(), kSimd128ScratchReg, 8); ++ // srai_h(dst.fp().toW(), dst.fp().toW(), 8); ++} ++ ++void LiftoffAssembler::emit_i16x8_uconvert_i8x16_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvr_b(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_uconvert_i8x16_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvl_b(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_sconvert_i16x8_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvr_h(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_w(dst.fp().toW(), kSimd128ScratchReg, 16); ++ // srai_w(dst.fp().toW(), dst.fp().toW(), 16); ++} ++ ++void LiftoffAssembler::emit_i32x4_sconvert_i16x8_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvl_h(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_w(dst.fp().toW(), kSimd128ScratchReg, 16); ++ // srai_w(dst.fp().toW(), dst.fp().toW(), 16); ++} ++ ++void LiftoffAssembler::emit_i32x4_uconvert_i16x8_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvr_h(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i32x4_uconvert_i16x8_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvl_h(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_sconvert_i32x4_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvr_w(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_d(dst.fp().toW(), kSimd128ScratchReg, 32); ++ // srai_d(dst.fp().toW(), dst.fp().toW(), 32); ++} ++ ++void LiftoffAssembler::emit_i64x2_sconvert_i32x4_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // ilvl_w(kSimd128ScratchReg, src.fp().toW(), src.fp().toW()); ++ // slli_d(dst.fp().toW(), kSimd128ScratchReg, 32); ++ // srai_d(dst.fp().toW(), dst.fp().toW(), 32); ++} ++ ++void LiftoffAssembler::emit_i64x2_uconvert_i32x4_low(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvr_w(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i64x2_uconvert_i32x4_high(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // ilvl_w(dst.fp().toW(), kSimd128RegZero, src.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_rounding_average_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // aver_u_b(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i16x8_rounding_average_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ LiftoffRegister rhs) { ++ UNREACHABLE(); ++ // aver_u_h(dst.fp().toW(), lhs.fp().toW(), rhs.fp().toW()); ++} ++ ++void LiftoffAssembler::emit_i8x16_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // asub_s_b(dst.fp().toW(), src.fp().toW(), kSimd128RegZero); ++} ++ ++void LiftoffAssembler::emit_i16x8_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // asub_s_h(dst.fp().toW(), src.fp().toW(), kSimd128RegZero); ++} ++ ++void LiftoffAssembler::emit_i32x4_abs(LiftoffRegister dst, ++ LiftoffRegister src) { ++ UNREACHABLE(); ++ // xor_v(kSimd128RegZero, kSimd128RegZero, kSimd128RegZero); ++ // asub_s_w(dst.fp().toW(), src.fp().toW(), kSimd128RegZero); ++} ++ ++void LiftoffAssembler::emit_i8x16_extract_lane_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_s_b(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_i8x16_extract_lane_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_u_b(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_i16x8_extract_lane_s(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_s_h(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_i16x8_extract_lane_u(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_u_h(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_i32x4_extract_lane(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_s_w(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_i64x2_extract_lane(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_s_d(dst.gp(), lhs.fp().toW(), imm_lane_idx); ++} ++ ++void LiftoffAssembler::emit_f32x4_extract_lane(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_u_w(kScratchReg, lhs.fp().toW(), imm_lane_idx); ++ // MacroAssembler::FmoveLow(dst.fp(), kScratchReg); ++} ++ ++void LiftoffAssembler::emit_f64x2_extract_lane(LiftoffRegister dst, ++ LiftoffRegister lhs, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++ // copy_s_d(kScratchReg, lhs.fp().toW(), imm_lane_idx); ++ // MacroAssembler::Move(dst.fp(), kScratchReg); ++} ++ ++void LiftoffAssembler::emit_i8x16_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_b(dst.fp().toW(), imm_lane_idx, src2.gp()); ++#endif ++} ++ ++void LiftoffAssembler::emit_i16x8_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_h(dst.fp().toW(), imm_lane_idx, src2.gp()); ++#endif ++} ++ ++void LiftoffAssembler::emit_i32x4_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_w(dst.fp().toW(), imm_lane_idx, src2.gp()); ++#endif ++} ++ ++void LiftoffAssembler::emit_i64x2_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_d(dst.fp().toW(), imm_lane_idx, src2.gp()); ++#endif ++} ++ ++void LiftoffAssembler::emit_f32x4_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ MacroAssembler::FmoveLow(kScratchReg, src2.fp()); ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_w(dst.fp().toW(), imm_lane_idx, kScratchReg); ++#endif ++} ++ ++void LiftoffAssembler::emit_f64x2_replace_lane(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ uint8_t imm_lane_idx) { ++ UNREACHABLE(); ++#if 0 ++ MacroAssembler::Move(kScratchReg, src2.fp()); ++ if (dst != src1) { ++ move_v(dst.fp().toW(), src1.fp().toW()); ++ } ++ insert_d(dst.fp().toW(), imm_lane_idx, kScratchReg); ++#endif ++} ++ ++void LiftoffAssembler::emit_f32x4_qfma(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister src3) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f32x4_qfms(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister src3) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_qfma(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister src3) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::emit_f64x2_qfms(LiftoffRegister dst, ++ LiftoffRegister src1, ++ LiftoffRegister src2, ++ LiftoffRegister src3) { ++ UNREACHABLE(); ++} ++ ++void LiftoffAssembler::StackCheck(Label* ool_code, Register limit_address) { ++ MacroAssembler::Ldl_u(limit_address, MemOperand(limit_address)); ++ MacroAssembler::Branch(ool_code, ule, sp, Operand(limit_address)); ++} ++ ++void LiftoffAssembler::CallTrapCallbackForTesting() { ++ PrepareCallCFunction(0, GetUnusedRegister(kGpReg, {}).gp()); ++ CallCFunction(ExternalReference::wasm_call_trap_callback_for_testing(), 0); ++} ++ ++void LiftoffAssembler::AssertUnreachable(AbortReason reason) { ++ if (v8_flags.debug_code) Abort(reason); ++} ++ ++void LiftoffAssembler::PushRegisters(LiftoffRegList regs) { ++ LiftoffRegList gp_regs = regs & kGpCacheRegList; ++ unsigned num_gp_regs = gp_regs.GetNumRegsSet(); ++ if (num_gp_regs) { ++ unsigned offset = num_gp_regs * kSystemPointerSize; ++ subl(sp, offset, sp); ++ while (!gp_regs.is_empty()) { ++ LiftoffRegister reg = gp_regs.GetFirstRegSet(); ++ offset -= kSystemPointerSize; ++ Stl(reg.gp(), MemOperand(sp, offset)); ++ gp_regs.clear(reg); ++ } ++ DCHECK_EQ(offset, 0); ++ } ++ LiftoffRegList fp_regs = regs & kFpCacheRegList; ++ unsigned num_fp_regs = fp_regs.GetNumRegsSet(); ++ if (num_fp_regs) { ++ unsigned slot_size = IsEnabled(SW64_SIMD) ? 16 : 8; ++ subl(sp, (num_fp_regs * slot_size), sp); ++ unsigned offset = 0; ++ while (!fp_regs.is_empty()) { ++ LiftoffRegister reg = fp_regs.GetFirstRegSet(); ++ MacroAssembler::Fstd(reg.fp(), MemOperand(sp, offset)); ++ fp_regs.clear(reg); ++ offset += slot_size; ++ } ++ DCHECK_EQ(offset, num_fp_regs * slot_size); ++ } ++} ++ ++void LiftoffAssembler::PopRegisters(LiftoffRegList regs) { ++ LiftoffRegList fp_regs = regs & kFpCacheRegList; ++ unsigned fp_offset = 0; ++ while (!fp_regs.is_empty()) { ++ LiftoffRegister reg = fp_regs.GetFirstRegSet(); ++ MacroAssembler::Fldd(reg.fp(), MemOperand(sp, fp_offset)); ++ fp_regs.clear(reg); ++ fp_offset += sizeof(double); ++ } ++ if (fp_offset) addl(sp, fp_offset, sp); ++ LiftoffRegList gp_regs = regs & kGpCacheRegList; ++ unsigned gp_offset = 0; ++ while (!gp_regs.is_empty()) { ++ LiftoffRegister reg = gp_regs.GetLastRegSet(); ++ Ldl(reg.gp(), MemOperand(sp, gp_offset)); ++ gp_regs.clear(reg); ++ gp_offset += kSystemPointerSize; ++ } ++ addl(sp, gp_offset, sp); ++} ++ ++void LiftoffAssembler::RecordSpillsInSafepoint( ++ SafepointTableBuilder::Safepoint& safepoint, LiftoffRegList all_spills, ++ LiftoffRegList ref_spills, int spill_offset) { ++ int spill_space_size = 0; ++ while (!all_spills.is_empty()) { ++ LiftoffRegister reg = all_spills.GetFirstRegSet(); ++ if (ref_spills.has(reg)) { ++ safepoint.DefineTaggedStackSlot(spill_offset); ++ } ++ all_spills.clear(reg); ++ ++spill_offset; ++ spill_space_size += kSystemPointerSize; ++ } ++ // Record the number of additional spill slots. ++ RecordOolSpillSpaceSize(spill_space_size); ++} ++ ++void LiftoffAssembler::DropStackSlotsAndRet(uint32_t num_stack_slots) { ++ DCHECK_LT(num_stack_slots, ++ (1 << 16) / kSystemPointerSize); // 16 bit immediate ++ MacroAssembler::DropAndRet(static_cast(num_stack_slots)); ++} ++ ++void LiftoffAssembler::CallC(const ValueKindSig* sig, ++ const LiftoffRegister* args, ++ const LiftoffRegister* rets, ++ ValueKind out_argument_kind, int stack_bytes, ++ ExternalReference ext_ref) { ++ Addl(sp, sp, -stack_bytes); ++ ++ int arg_bytes = 0; ++ for (ValueKind param_kind : sig->parameters()) { ++ liftoff::Store(this, sp, arg_bytes, *args++, param_kind); ++ arg_bytes += value_kind_size(param_kind); ++ } ++ DCHECK_LE(arg_bytes, stack_bytes); ++ ++ // Pass a pointer to the buffer with the arguments to the C function. ++ // On sw64, the first argument is passed in {a0}. ++ constexpr Register kFirstArgReg = a0; ++ mov(kFirstArgReg, sp); ++ ++ // Now call the C function. ++ constexpr int kNumCCallArgs = 1; ++ PrepareCallCFunction(kNumCCallArgs, kScratchReg); ++ CallCFunction(ext_ref, kNumCCallArgs); ++ ++ // Move return value to the right register. ++ const LiftoffRegister* next_result_reg = rets; ++ if (sig->return_count() > 0) { ++ DCHECK_EQ(1, sig->return_count()); ++ constexpr Register kReturnReg = v0; ++ if (kReturnReg != next_result_reg->gp()) { ++ Move(*next_result_reg, LiftoffRegister(kReturnReg), sig->GetReturn(0)); ++ } ++ ++next_result_reg; ++ } ++ ++ // Load potential output value from the buffer on the stack. ++ if (out_argument_kind != kVoid) { ++ liftoff::Load(this, *next_result_reg, MemOperand(sp, 0), out_argument_kind); ++ } ++ ++ Addl(sp, sp, stack_bytes); ++} ++ ++void LiftoffAssembler::CallNativeWasmCode(Address addr) { ++ Call(addr, RelocInfo::WASM_CALL); ++} ++ ++void LiftoffAssembler::TailCallNativeWasmCode(Address addr) { ++ Jump(addr, RelocInfo::WASM_CALL); ++} ++ ++void LiftoffAssembler::CallIndirect(const ValueKindSig* sig, ++ compiler::CallDescriptor* call_descriptor, ++ Register target) { ++ if (target == no_reg) { ++ pop(kScratchReg); ++ Call(kScratchReg); ++ } else { ++ Call(target); ++ } ++} ++ ++void LiftoffAssembler::TailCallIndirect(Register target) { ++ if (target == no_reg) { ++ Pop(kScratchReg); ++ Jump(kScratchReg); ++ } else { ++ Jump(target); ++ } ++} ++ ++void LiftoffAssembler::CallRuntimeStub(WasmCode::RuntimeStubId sid) { ++ // A direct call to a wasm runtime stub defined in this module. ++ // Just encode the stub index. This will be patched at relocation. ++ Call(static_cast
(sid), RelocInfo::WASM_STUB_CALL); ++} ++ ++void LiftoffAssembler::AllocateStackSlot(Register addr, uint32_t size) { ++ Addl(sp, sp, -size); ++ MacroAssembler::Move(addr, sp); ++} ++ ++void LiftoffAssembler::DeallocateStackSlot(uint32_t size) { ++ Addl(sp, sp, size); ++} ++ ++void LiftoffAssembler::MaybeOSR() {} ++ ++void LiftoffAssembler::emit_set_if_nan(Register dst, FPURegister src, ++ ValueKind kind) { ++ UseScratchRegisterScope temps(this); ++ Register scratch = temps.Acquire(); ++ Label not_nan; ++ if (kind == kF32) { ++ CompareIsNanF(src, src); ++ } else { ++ DCHECK_EQ(kind, kF64); ++ CompareIsNanF(src, src); ++ } ++ li(scratch, 1); ++ BranchFalseShortF(¬_nan); ++ Stw(dst, MemOperand(dst)); ++ bind(¬_nan); ++} ++ ++void LiftoffAssembler::emit_s128_set_if_nan(Register dst, LiftoffRegister src, ++ Register tmp_gp, ++ LiftoffRegister tmp_s128, ++ ValueKind lane_kind) { ++ UNIMPLEMENTED(); ++} ++ ++void LiftoffStackSlots::Construct(int param_slots) { ++ DCHECK_LT(0, slots_.size()); ++ SortInPushOrder(); ++ int last_stack_slot = param_slots; ++ for (auto& slot : slots_) { ++ const int stack_slot = slot.dst_slot_; ++ int stack_decrement = (last_stack_slot - stack_slot) * kSystemPointerSize; ++ DCHECK_LT(0, stack_decrement); ++ last_stack_slot = stack_slot; ++ const LiftoffAssembler::VarState& src = slot.src_; ++ switch (src.loc()) { ++ case LiftoffAssembler::VarState::kStack: ++ if (src.kind() != kS128) { ++ asm_->AllocateStackSpace(stack_decrement - kSystemPointerSize); ++ asm_->Ldl(kScratchReg, liftoff::GetStackSlot(slot.src_offset_)); ++ asm_->Push(kScratchReg); ++ } else { ++ asm_->AllocateStackSpace(stack_decrement - kSimd128Size); ++ asm_->Ldl(kScratchReg, liftoff::GetStackSlot(slot.src_offset_ - 8)); ++ asm_->Push(kScratchReg); ++ asm_->Ldl(kScratchReg, liftoff::GetStackSlot(slot.src_offset_)); ++ asm_->Push(kScratchReg); ++ } ++ break; ++ case LiftoffAssembler::VarState::kRegister: { ++ int pushed_bytes = SlotSizeInBytes(slot); ++ asm_->AllocateStackSpace(stack_decrement - pushed_bytes); ++ liftoff::push(asm_, src.reg(), src.kind()); ++ break; ++ } ++ case LiftoffAssembler::VarState::kIntConst: { ++ asm_->AllocateStackSpace(stack_decrement - kSystemPointerSize); ++ asm_->li(kScratchReg, Operand(src.i32_const())); ++ asm_->Push(kScratchReg); ++ break; ++ } ++ } ++ } ++} ++ ++} // namespace wasm ++} // namespace internal ++} // namespace v8 ++ ++#endif // V8_WASM_BASELINE_SW64_LIFTOFF_ASSEMBLER_SW64_H_ +diff --git a/deps/v8/src/wasm/jump-table-assembler.cc b/deps/v8/src/wasm/jump-table-assembler.cc +index 76dac357..1e0e1b57 100644 +--- a/deps/v8/src/wasm/jump-table-assembler.cc ++++ b/deps/v8/src/wasm/jump-table-assembler.cc +@@ -401,6 +401,48 @@ void JumpTableAssembler::SkipUntil(int offset) { + DCHECK_EQ(offset, pc_offset()); + } + ++#elif V8_TARGET_ARCH_SW64 ++void JumpTableAssembler::EmitLazyCompileJumpSlot(uint32_t func_index, ++ Address lazy_compile_target) { ++ int start = pc_offset(); ++ li(kWasmCompileLazyFuncIndexRegister, func_index); // max. 2 instr ++ // Jump produces max. 4 instructions for 32-bit platform ++ // and max. 6 instructions for 64-bit platform. ++ Jump(lazy_compile_target, RelocInfo::NO_INFO); ++ int nop_bytes = start + kLazyCompileTableSlotSize - pc_offset(); ++ DCHECK_EQ(nop_bytes % kInstrSize, 0); ++ for (int i = 0; i < nop_bytes; i += kInstrSize) nop(); ++} ++ ++bool JumpTableAssembler::EmitJumpSlot(Address target) { ++ PatchAndJump(target); ++ return true; ++} ++ ++void JumpTableAssembler::EmitFarJumpSlot(Address target) { ++ li(t12, Operand(target, RelocInfo::OFF_HEAP_TARGET)); ++ Jump(t12); ++} ++ ++// static ++void JumpTableAssembler::PatchFarJumpSlot(Address slot, Address target) { ++ UNREACHABLE(); ++} ++ ++void JumpTableAssembler::NopBytes(int bytes) { ++ DCHECK_LE(0, bytes); ++ DCHECK_EQ(0, bytes % kInstrSize); ++ for (; bytes > 0; bytes -= kInstrSize) { ++ nop(); ++ } ++} ++ ++void JumpTableAssembler::SkipUntil(int offset) { ++ // On this platform the jump table is not zapped with valid instructions, so ++ // skipping over bytes is not allowed. ++ DCHECK_EQ(offset, pc_offset()); ++} ++ + #elif V8_TARGET_ARCH_PPC64 + void JumpTableAssembler::EmitLazyCompileJumpSlot(uint32_t func_index, + Address lazy_compile_target) { +diff --git a/deps/v8/src/wasm/jump-table-assembler.h b/deps/v8/src/wasm/jump-table-assembler.h +index eeb39999..9237e494 100644 +--- a/deps/v8/src/wasm/jump-table-assembler.h ++++ b/deps/v8/src/wasm/jump-table-assembler.h +@@ -238,6 +238,11 @@ class V8_EXPORT_PRIVATE JumpTableAssembler : public MacroAssembler { + static constexpr int kJumpTableSlotSize = 8 * kInstrSize; + static constexpr int kFarJumpTableSlotSize = 4 * kInstrSize; + static constexpr int kLazyCompileTableSlotSize = 8 * kInstrSize; ++#elif V8_TARGET_ARCH_SW64 ++ static constexpr int kJumpTableLineSize = 10 * kInstrSize; ++ static constexpr int kJumpTableSlotSize = 10 * kInstrSize; ++ static constexpr int kFarJumpTableSlotSize = 5 * kInstrSize; ++ static constexpr int kLazyCompileTableSlotSize = 10 * kInstrSize; + #else + #error Unknown architecture. + #endif +diff --git a/deps/v8/src/wasm/wasm-debug.cc b/deps/v8/src/wasm/wasm-debug.cc +index 6071774e..3d0796dd 100644 +--- a/deps/v8/src/wasm/wasm-debug.cc ++++ b/deps/v8/src/wasm/wasm-debug.cc +@@ -582,7 +582,11 @@ class DebugInfoImpl { + debug_break_fp + + WasmDebugBreakFrameConstants::GetPushedFpRegisterOffset(code); + if (value->type == kWasmF32) { ++#ifdef V8_TARGET_ARCH_SW64 ++ return WasmValue((float)(ReadUnalignedValue(spilled_addr))); ++#else + return WasmValue(ReadUnalignedValue(spilled_addr)); ++#endif + } else if (value->type == kWasmF64) { + return WasmValue(ReadUnalignedValue(spilled_addr)); + } else if (value->type == kWasmS128) { +diff --git a/deps/v8/src/wasm/wasm-linkage.h b/deps/v8/src/wasm/wasm-linkage.h +index b8fbc3f0..c297bdba 100644 +--- a/deps/v8/src/wasm/wasm-linkage.h ++++ b/deps/v8/src/wasm/wasm-linkage.h +@@ -79,6 +79,15 @@ constexpr Register kGpReturnRegisters[] = {a0, a1}; + constexpr DoubleRegister kFpParamRegisters[] = {f0, f1, f2, f3, f4, f5, f6, f7}; + constexpr DoubleRegister kFpReturnRegisters[] = {f0, f1}; + ++#elif V8_TARGET_ARCH_SW64 ++// =========================================================================== ++// == sw64 =================================================================== ++// =========================================================================== ++constexpr Register kGpParamRegisters[] = {a0, a1, a2, a3, a4, a5}; ++constexpr Register kGpReturnRegisters[] = {v0, t4}; // t4 used as v1 ++constexpr DoubleRegister kFpParamRegisters[] = {f16, f17, f18, f19, f20, f21}; ++constexpr DoubleRegister kFpReturnRegisters[] = {f0, f1}; ++ + #elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64 + // =========================================================================== + // == ppc & ppc64 ============================================================ +diff --git a/deps/v8/tools/testrunner/build_config.py b/deps/v8/tools/testrunner/build_config.py +index 5868298a..1f467e14 100644 +--- a/deps/v8/tools/testrunner/build_config.py ++++ b/deps/v8/tools/testrunner/build_config.py +@@ -109,7 +109,7 @@ class BuildConfig(object): + if self.arch == 'mips64el': + no_simd_hardware = not self.simd_mips + +- if self.arch == 'loong64' or \ ++ if self.arch == 'loong64' or self.arch == 'sw_64' or \ + self.arch == 'riscv32': + no_simd_hardware = True + +diff --git a/deps/v8/tools/testrunner/local/statusfile.py b/deps/v8/tools/testrunner/local/statusfile.py +index 04485936..ff301030 100644 +--- a/deps/v8/tools/testrunner/local/statusfile.py ++++ b/deps/v8/tools/testrunner/local/statusfile.py +@@ -61,7 +61,7 @@ for var in [ + "debug", "release", "big", "little", "android", "arm", "arm64", "ia32", + "mips64", "mips64el", "x64", "ppc", "ppc64", "s390", "s390x", "macos", + "windows", "linux", "aix", "r1", "r2", "r3", "r5", "r6", "riscv32", +- "riscv64", "loong64" ++ "riscv64", "loong64", "sw_64" + ]: + assert var not in VARIABLES + VARIABLES[var] = var +diff --git a/src/node.cc b/src/node.cc +index 9f6f8e53..81512880 100644 +--- a/src/node.cc ++++ b/src/node.cc +@@ -1057,6 +1057,12 @@ InitializeOncePerProcessInternal(const std::vector& args, + return result; + } + ++ if (per_process::cli_options->print_sw_version) { ++ printf("%s\n", NODE_SW_TAG); ++ result->exit_code_ = ExitCode::kNoFailure; ++ result->early_return_ = true; ++ return result; ++ } + if (per_process::cli_options->print_bash_completion) { + std::string completion = options_parser::GetBashCompletion(); + printf("%s\n", completion.c_str()); +diff --git a/src/node_options.cc b/src/node_options.cc +index e325b082..b636f178 100644 +--- a/src/node_options.cc ++++ b/src/node_options.cc +@@ -981,6 +981,9 @@ PerProcessOptionsParser::PerProcessOptionsParser( + AddOption("--v8-options", + "print V8 command line options", + &PerProcessOptions::print_v8_help); ++ AddOption("--sw-version", ++ "print node version on sw64", ++ &PerProcessOptions::print_sw_version); + AddOption("--report-compact", + "output compact single-line JSON", + &PerProcessOptions::report_compact, +diff --git a/src/node_options.h b/src/node_options.h +index 10c220f6..2710402a 100644 +--- a/src/node_options.h ++++ b/src/node_options.h +@@ -301,6 +301,7 @@ class PerProcessOptions : public Options { + bool print_help = false; + bool print_v8_help = false; + bool print_version = false; ++ bool print_sw_version = false; + std::string experimental_sea_config; + + #ifdef NODE_HAVE_I18N_SUPPORT +diff --git a/src/node_version.h b/src/node_version.h +index 362c906a..89cd83ad 100644 +--- a/src/node_version.h ++++ b/src/node_version.h +@@ -54,6 +54,10 @@ + NODE_STRINGIFY(NODE_TAG) + #endif + ++#ifndef NODE_SW_TAG ++# define NODE_SW_TAG "sw64 v1.0.0" ++#endif ++ + # define NODE_VERSION_STRING NODE_STRINGIFY(NODE_MAJOR_VERSION) "." \ + NODE_STRINGIFY(NODE_MINOR_VERSION) "." \ + NODE_STRINGIFY(NODE_PATCH_VERSION) \ +diff --git a/tools/v8_gypfiles/toolchain.gypi b/tools/v8_gypfiles/toolchain.gypi +index 0f03b8ee..115571d6 100644 +--- a/tools/v8_gypfiles/toolchain.gypi ++++ b/tools/v8_gypfiles/toolchain.gypi +@@ -507,6 +507,18 @@ + }], #'_toolset=="host" + ], + }], # v8_target_arch=="mips64el" ++ ['v8_target_arch=="sw_64"', { ++ 'defines': [], ++ 'conditions': [], ++ 'target_conditions': [ ++ ['_toolset=="target"', { ++ 'defines': ['V8_TARGET_ARCH_SW64', 'SW64', ], ++ }], ++ ['_toolset=="host"', { ++ 'defines': ['V8_TARGET_ARCH_SW64', 'SW64', ], ++ }], ++ ], ++ }], # v8_target_arch=="sw64" + ['v8_target_arch=="x64"', { + 'defines': [ + 'V8_TARGET_ARCH_X64', +@@ -703,6 +715,7 @@ + 'V8_ENABLE_ALLOCATION_TIMEOUT', + 'V8_ENABLE_FORCE_SLOW_PATH', + ], ++ 'ldflags' : ['-Wl,--no-relax'], + 'conditions': [ + ['OS=="linux" and v8_enable_backtrace==1', { + # Support for backtrace_symbols. +@@ -851,6 +864,7 @@ + }, + # Temporary refs: https://github.com/nodejs/node/pull/23801 + 'defines!': ['ENABLE_HANDLE_ZAPPING',], ++ 'ldflags' : ['-Wl,--no-relax'], + 'conditions': [ + ['OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="netbsd" \ + or OS=="aix" or OS=="os400"', { +diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp +index 45f6e0db..0fc85a87 100644 +--- a/tools/v8_gypfiles/v8.gyp ++++ b/tools/v8_gypfiles/v8.gyp +@@ -311,6 +311,11 @@ + '<(V8_ROOT)/src/builtins/mips64/builtins-mips64.cc', + ], + }], ++ ['v8_target_arch=="sw_64"', { ++ 'sources': [ ++ '<(V8_ROOT)/src/builtins/sw64/builtins-sw64.cc', ++ ], ++ }], + ['v8_target_arch=="ppc"', { + 'sources': [ + '<(V8_ROOT)/src/builtins/ppc/builtins-ppc.cc', +@@ -999,6 +1004,11 @@ + ' - 1:20.18.2-4 +- add sw64 support of node-v20.18.2 in openEuler-24.03-LTS-SP2 + * Tue May 20 2025 yaoxin <1024769339@qq.com> - 1:20.18.2-3 - Fix CVE-2025-23165 and CVE-2025-23166