blob: 47b5b1a2e7b028f61ad968fc5a5444c7a001c444 [file] [log] [blame]
# BoringSSL CocoaPods podspec
# Copyright 2015, Google 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.
# * Redistributions in binary form must 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 Google Inc. nor the names of its
# contributors may be used to endorse or promote products derived from
# this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY 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.
Pod::Spec.new do |s|
s.name = 'BoringSSL'
version = '7.0'
s.version = version
s.summary = 'BoringSSL is a fork of OpenSSL that is designed to meet Google’s needs.'
# Adapted from the homepage:
s.description = <<-DESC
BoringSSL is a fork of OpenSSL that is designed to meet Googles needs.
Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is.
We dont recommend that third parties depend upon it. Doing so is likely to be frustrating
because there are no guarantees of API stability. Only the latest version of this pod is
supported, and every new version is a new major version.
We update Google libraries and programs that use BoringSSL as needed when deciding to make API
changes. This allows us to mostly avoid compromises in the name of compatibility. It works for
us, but it may not work for you.
As a Cocoapods pod, it has the advantage over OpenSSL's pods that the library doesn't need to
be precompiled. This eliminates the 10 - 20 minutes of wait the first time a user does "pod
install", lets it be used as a dynamic framework (pending solution of Cocoapods' issue #4605),
and works with bitcode automatically. It's also thought to be smaller than OpenSSL (which takes
1MB - 2MB per ARM architecture), but we don't have specific numbers yet.
BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built
up a large number of patches that were maintained while tracking upstream OpenSSL. As Google’s
product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved
in maintaining all these patches in multiple places was growing steadily.
Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it’s not part of the
NDK) and a number of other apps/programs.
DESC
s.homepage = 'https://boringssl.googlesource.com/boringssl/'
s.documentation_url = 'https://commondatastorage.googleapis.com/chromium-boringssl-docs/headers.html'
s.license = { :type => 'Mixed', :file => 'LICENSE' }
# "The name and email addresses of the library maintainers, not the Podspec maintainer."
s.authors = 'Adam Langley', 'David Benjamin', 'Matt Braithwaite'
s.source = {
:git => 'https://boringssl.googlesource.com/boringssl',
:tag => "version_for_cocoapods_#{version}",
# :commit => '4fec04b48406111cb88fdd8d196253adc54f7a31',
}
name = 'openssl'
# When creating a dynamic framework, name it openssl.framework instead of BoringSSL.framework.
# This lets users write their includes like `#include <openssl/ssl.h>` as opposed to `#include
# <BoringSSL/ssl.h>`.
s.module_name = name
# When creating a dynamic framework, copy the headers under `include/openssl/` into the root of
# the `Headers/` directory of the framework (i.e., not under `Headers/include/openssl`).
#
# TODO(jcanizales): Debug why this doesn't work on macOS.
s.header_mappings_dir = 'include/openssl'
# The above has an undesired effect when creating a static library: It forces users to write
# includes like `#include <BoringSSL/ssl.h>`. `s.header_dir` adds a path prefix to that, and
# because Cocoapods lets omit the pod name when including headers of static libraries, the
# following lets users write `#include <openssl/ssl.h>`.
s.header_dir = name
# The module map and umbrella header created automatically by Cocoapods don't work for C libraries
# like this one. The following file, and a correct umbrella header, are created on the fly by the
# `prepare_command` of this pod.
s.module_map = 'include/openssl/module.modulemap'
# We don't need to inhibit all warnings; only -Wno-shorten-64-to-32. But Cocoapods' linter doesn't
# want that for some reason.
s.compiler_flags = '-DOPENSSL_NO_ASM', '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
s.requires_arc = false
# Like many other C libraries, BoringSSL has its public headers under `include/<libname>/` and its
# sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't
# allow any header to be listed outside the `header_mappings_dir` (even though doing so works in
# practice). Because we need our `header_mappings_dir` to be `include/openssl/` for the reason
# mentioned above, we work around the linter limitation by dividing the pod into two subspecs, one
# for public headers and the other for implementation. Each gets its own `header_mappings_dir`,
# making the linter happy.
s.subspec 'Interface' do |ss|
ss.header_mappings_dir = 'include/openssl'
ss.source_files = 'include/openssl/*.h'
end
s.subspec 'Implementation' do |ss|
ss.header_mappings_dir = '.'
ss.source_files = 'ssl/*.{h,c}',
'ssl/**/*.{h,c}',
'*.{h,c}',
'crypto/*.{h,c}',
'crypto/**/*.{h,c}'
ss.private_header_files = 'ssl/*.h',
'ssl/**/*.h',
'*.h',
'crypto/*.h',
'crypto/**/*.h'
ss.exclude_files = '**/*_test.*',
'**/test_*.*',
'**/test/*.*'
ss.dependency "#{s.name}/Interface", version
end
s.prepare_command = <<-END_OF_COMMAND
# Replace "const BIGNUM *I" in rsa.h with a lowercase i, as the former fails when including
# OpenSSL in a Swift bridging header (complex.h defines "I", and it's as if the compiler
# included it in every bridged header).
sed -E -i '.back' 's/\\*I,/*i,/g' include/openssl/rsa.h
# Replace `#include "../crypto/internal.h"` in e_tls.c with `#include "../internal.h"`. The
# former assumes crypto/ is in the headers search path, which is hard to enforce when using
# dynamic frameworks. The latters always works, being relative to the current file.
sed -E -i '.back' 's/crypto\\///g' crypto/cipher/e_tls.c
# Add a module map and an umbrella header
cat > include/openssl/umbrella.h <<EOF
#include "ssl.h"
#include "crypto.h"
#include "aes.h"
/* The following macros are defined by base.h. The latter is the first file included by the
other headers. */
#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
# include "arm_arch.h"
#endif
#include "asn1.h"
#include "asn1_mac.h"
#include "asn1t.h"
#include "blowfish.h"
#include "cast.h"
#include "chacha.h"
#include "cmac.h"
#include "conf.h"
#include "cpu.h"
#include "curve25519.h"
#include "des.h"
#include "dtls1.h"
#include "hkdf.h"
#include "md4.h"
#include "md5.h"
#include "newhope.h"
#include "obj_mac.h"
#include "objects.h"
#include "opensslv.h"
#include "ossl_typ.h"
#include "pkcs12.h"
#include "pkcs7.h"
#include "pkcs8.h"
#include "poly1305.h"
#include "rand.h"
#include "rc4.h"
#include "ripemd.h"
#include "safestack.h"
#include "srtp.h"
#include "time_support.h"
#include "x509.h"
#include "x509v3.h"
EOF
cat > include/openssl/module.modulemap <<EOF
framework module openssl {
umbrella header "umbrella.h"
export *
module * { export * }
}
EOF
# #include <inttypes.h> fails to compile when building a dynamic framework. libgit2 in
# https://github.com/libgit2/libgit2/commit/1ddada422caf8e72ba97dca2568d2bf879fed5f2 and libvpx
# in https://chromium.googlesource.com/webm/libvpx/+/1bec0c5a7e885ec792f6bb658eb3f34ad8f37b15
# work around it by removing the include. We need four of its macros, so we expand them here.
sed -E -i '.back' '/<inttypes.h>/d' include/openssl/bn.h
sed -E -i '.back' 's/PRIu32/"u"/g' include/openssl/bn.h
sed -E -i '.back' 's/PRIx32/"x"/g' include/openssl/bn.h
sed -E -i '.back' 's/PRIu64/"llu"/g' include/openssl/bn.h
sed -E -i '.back' 's/PRIx64/"llx"/g' include/openssl/bn.h
# This is a bit ridiculous, but requiring people to install Go in order to build is slightly
# more ridiculous IMO. To save you from scrolling, this is the last part of the podspec.
# TODO(jcanizales): Translate err_data_generate.go into a Bash or Ruby script.
cat > err_data.c <<EOF
/* Copyright (c) 2015, Google Inc.
*
* Permission to use, copy, modify, and/or distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
/* This file was generated by err_data_generate.go. */
#include <openssl/base.h>
#include <openssl/err.h>
#include <openssl/type_check.h>
OPENSSL_COMPILE_ASSERT(ERR_LIB_NONE == 1, library_values_changed_1);
OPENSSL_COMPILE_ASSERT(ERR_LIB_SYS == 2, library_values_changed_2);
OPENSSL_COMPILE_ASSERT(ERR_LIB_BN == 3, library_values_changed_3);
OPENSSL_COMPILE_ASSERT(ERR_LIB_RSA == 4, library_values_changed_4);
OPENSSL_COMPILE_ASSERT(ERR_LIB_DH == 5, library_values_changed_5);
OPENSSL_COMPILE_ASSERT(ERR_LIB_EVP == 6, library_values_changed_6);
OPENSSL_COMPILE_ASSERT(ERR_LIB_BUF == 7, library_values_changed_7);
OPENSSL_COMPILE_ASSERT(ERR_LIB_OBJ == 8, library_values_changed_8);
OPENSSL_COMPILE_ASSERT(ERR_LIB_PEM == 9, library_values_changed_9);
OPENSSL_COMPILE_ASSERT(ERR_LIB_DSA == 10, library_values_changed_10);
OPENSSL_COMPILE_ASSERT(ERR_LIB_X509 == 11, library_values_changed_11);
OPENSSL_COMPILE_ASSERT(ERR_LIB_ASN1 == 12, library_values_changed_12);
OPENSSL_COMPILE_ASSERT(ERR_LIB_CONF == 13, library_values_changed_13);
OPENSSL_COMPILE_ASSERT(ERR_LIB_CRYPTO == 14, library_values_changed_14);
OPENSSL_COMPILE_ASSERT(ERR_LIB_EC == 15, library_values_changed_15);
OPENSSL_COMPILE_ASSERT(ERR_LIB_SSL == 16, library_values_changed_16);
OPENSSL_COMPILE_ASSERT(ERR_LIB_BIO == 17, library_values_changed_17);
OPENSSL_COMPILE_ASSERT(ERR_LIB_PKCS7 == 18, library_values_changed_18);
OPENSSL_COMPILE_ASSERT(ERR_LIB_PKCS8 == 19, library_values_changed_19);
OPENSSL_COMPILE_ASSERT(ERR_LIB_X509V3 == 20, library_values_changed_20);
OPENSSL_COMPILE_ASSERT(ERR_LIB_RAND == 21, library_values_changed_21);
OPENSSL_COMPILE_ASSERT(ERR_LIB_ENGINE == 22, library_values_changed_22);
OPENSSL_COMPILE_ASSERT(ERR_LIB_OCSP == 23, library_values_changed_23);
OPENSSL_COMPILE_ASSERT(ERR_LIB_UI == 24, library_values_changed_24);
OPENSSL_COMPILE_ASSERT(ERR_LIB_COMP == 25, library_values_changed_25);
OPENSSL_COMPILE_ASSERT(ERR_LIB_ECDSA == 26, library_values_changed_26);
OPENSSL_COMPILE_ASSERT(ERR_LIB_ECDH == 27, library_values_changed_27);
OPENSSL_COMPILE_ASSERT(ERR_LIB_HMAC == 28, library_values_changed_28);
OPENSSL_COMPILE_ASSERT(ERR_LIB_DIGEST == 29, library_values_changed_29);
OPENSSL_COMPILE_ASSERT(ERR_LIB_CIPHER == 30, library_values_changed_30);
OPENSSL_COMPILE_ASSERT(ERR_LIB_HKDF == 31, library_values_changed_31);
OPENSSL_COMPILE_ASSERT(ERR_LIB_USER == 32, library_values_changed_32);
OPENSSL_COMPILE_ASSERT(ERR_NUM_LIBS == 33, library_values_changed_num);
const uint32_t kOpenSSLReasonValues[] = {
0xc320838,
0xc328852,
0xc330861,
0xc338871,
0xc340880,
0xc348899,
0xc3508a5,
0xc3588c2,
0xc3608d4,
0xc3688e2,
0xc3708f2,
0xc3788ff,
0xc38090f,
0xc38891a,
0xc390930,
0xc39893f,
0xc3a0953,
0xc3a8845,
0xc3b00ea,
0x10320845,
0x103293ab,
0x103313b7,
0x103393d0,
0x103413e3,
0x10348e8b,
0x10350c19,
0x103593f6,
0x1036140b,
0x1036941e,
0x1037143d,
0x10379456,
0x1038146b,
0x10389489,
0x10391498,
0x103994b4,
0x103a14cf,
0x103a94de,
0x103b14fa,
0x103b9515,
0x103c152c,
0x103c80ea,
0x103d153d,
0x103d9551,
0x103e1570,
0x103e957f,
0x103f1596,
0x103f95a9,
0x10400bea,
0x104095bc,
0x104115da,
0x104195ed,
0x10421607,
0x10429617,
0x1043162b,
0x10439641,
0x10441659,
0x1044966e,
0x10451682,
0x10459694,
0x104605fb,
0x1046893f,
0x104716a9,
0x104796c0,
0x104816d5,
0x104896e3,
0x14320bcd,
0x14328bdb,
0x14330bea,
0x14338bfc,
0x143400ac,
0x143480ea,
0x18320083,
0x18328ee1,
0x183300ac,
0x18338ef7,
0x18340f0b,
0x183480ea,
0x18350f20,
0x18358f38,
0x18360f4d,
0x18368f61,
0x18370f85,
0x18378f9b,
0x18380faf,
0x18388fbf,
0x18390a57,
0x18398fcf,
0x183a0fe4,
0x183a8ff8,
0x183b0c25,
0x183b9005,
0x183c1017,
0x183c9022,
0x183d1032,
0x183d9043,
0x183e1054,
0x183e9066,
0x183f108f,
0x183f90a8,
0x184010c0,
0x184086d3,
0x203210e7,
0x243210f3,
0x24328985,
0x24331105,
0x24339112,
0x2434111f,
0x24349131,
0x24351140,
0x2435915d,
0x2436116a,
0x24369178,
0x24371186,
0x24379194,
0x2438119d,
0x243891aa,
0x243911bd,
0x28320c0d,
0x28328c25,
0x28330bea,
0x28338c38,
0x28340c19,
0x283480ac,
0x283500ea,
0x2c322910,
0x2c32a91e,
0x2c332930,
0x2c33a942,
0x2c342956,
0x2c34a968,
0x2c352983,
0x2c35a995,
0x2c3629a8,
0x2c36832d,
0x2c3729b5,
0x2c37a9c7,
0x2c3829da,
0x2c38a9f1,
0x2c3929ff,
0x2c39aa0f,
0x2c3a2a21,
0x2c3aaa35,
0x2c3b2a46,
0x2c3baa65,
0x2c3c2a79,
0x2c3caa8f,
0x2c3d2aa8,
0x2c3daac5,
0x2c3e2ad6,
0x2c3eaae4,
0x2c3f2afc,
0x2c3fab14,
0x2c402b21,
0x2c4090e7,
0x2c412b32,
0x2c41ab45,
0x2c4210c0,
0x2c42ab56,
0x2c430720,
0x2c43aa57,
0x30320000,
0x30328015,
0x3033001f,
0x30338038,
0x3034004a,
0x30348064,
0x3035006b,
0x30358083,
0x30360094,
0x303680ac,
0x303700b9,
0x303780c8,
0x303800ea,
0x303880f7,
0x3039010a,
0x30398125,
0x303a013a,
0x303a814e,
0x303b0162,
0x303b8173,
0x303c018c,
0x303c81a9,
0x303d01b7,
0x303d81cb,
0x303e01db,
0x303e81f4,
0x303f0204,
0x303f8217,
0x30400226,
0x30408232,
0x30410247,
0x30418257,
0x3042026e,
0x3042827b,
0x3043028e,
0x3043829d,
0x304402b2,
0x304482d3,
0x304502e6,
0x304582f9,
0x30460312,
0x3046832d,
0x3047034a,
0x30478363,
0x30480371,
0x30488382,
0x30490391,
0x304983a9,
0x304a03bb,
0x304a83cf,
0x304b03ee,
0x304b8401,
0x304c040c,
0x304c841d,
0x304d0429,
0x304d843f,
0x304e044d,
0x304e8463,
0x304f0475,
0x304f8487,
0x3050049a,
0x305084ad,
0x305104be,
0x305184ce,
0x305204e6,
0x305284fb,
0x30530513,
0x30538527,
0x3054053f,
0x30548558,
0x30550571,
0x3055858e,
0x30560599,
0x305685b1,
0x305705c1,
0x305785d2,
0x305805e5,
0x305885fb,
0x30590604,
0x30598619,
0x305a062c,
0x305a863b,
0x305b065b,
0x305b866a,
0x305c068b,
0x305c86a7,
0x305d06b3,
0x305d86d3,
0x305e06ef,
0x305e8700,
0x305f0716,
0x305f8720,
0x34320b47,
0x34328b5b,
0x34330b78,
0x34338b8b,
0x34340b9a,
0x34348bb7,
0x3c320083,
0x3c328c62,
0x3c330c7b,
0x3c338c96,
0x3c340cb3,
0x3c348cdd,
0x3c350cf8,
0x3c358d1e,
0x3c360d37,
0x3c368d4f,
0x3c370d60,
0x3c378d6e,
0x3c380d7b,
0x3c388d8f,
0x3c390c25,
0x3c398da3,
0x3c3a0db7,
0x3c3a88ff,
0x3c3b0dc7,
0x3c3b8de2,
0x3c3c0df4,
0x3c3c8e0a,
0x3c3d0e14,
0x3c3d8e28,
0x3c3e0e36,
0x3c3e8e5b,
0x3c3f0c4e,
0x3c3f8e44,
0x3c4000ac,
0x3c4080ea,
0x3c410cce,
0x3c418d0d,
0x403216fa,
0x40329710,
0x4033173e,
0x40339748,
0x4034175f,
0x4034977d,
0x4035178d,
0x4035979f,
0x403617ac,
0x403697b8,
0x403717cd,
0x403797df,
0x403817ea,
0x403897fc,
0x40390e8b,
0x4039980c,
0x403a181f,
0x403a9840,
0x403b1851,
0x403b9861,
0x403c0064,
0x403c8083,
0x403d18aa,
0x403d98c0,
0x403e18cf,
0x403e98e2,
0x403f18fc,
0x403f990a,
0x4040191f,
0x40409933,
0x40411950,
0x4041996b,
0x40421984,
0x40429997,
0x404319ab,
0x404399c3,
0x404419da,
0x404480ac,
0x404519ef,
0x40459a01,
0x40461a25,
0x40469a45,
0x40471a53,
0x40479a7a,
0x40481ab7,
0x40489ad0,
0x40491ae7,
0x40499b01,
0x404a1b18,
0x404a9b36,
0x404b1b4e,
0x404b9b65,
0x404c1b7b,
0x404c9b8d,
0x404d1bae,
0x404d9bd0,
0x404e1be4,
0x404e9bf1,
0x404f1c1e,
0x404f9c47,
0x40501c71,
0x40509c85,
0x40511ca0,
0x40519cb0,
0x40521cc7,
0x40529ceb,
0x40531d03,
0x40539d16,
0x40541d2b,
0x40549d4e,
0x40551d5c,
0x40559d79,
0x40561d86,
0x40569d9f,
0x40571db7,
0x40579dca,
0x40581ddf,
0x40589e06,
0x40591e35,
0x40599e62,
0x405a1e76,
0x405a9e86,
0x405b1e9e,
0x405b9eaf,
0x405c1ec2,
0x405c9ee3,
0x405d1ef0,
0x405d9f07,
0x405e1f27,
0x405e8a95,
0x405f1f48,
0x405f9f55,
0x40601f63,
0x40609f85,
0x40611fad,
0x40619fc2,
0x40621fd9,
0x40629fea,
0x40631ffb,
0x4063a010,
0x40642027,
0x4064a053,
0x4065206e,
0x4065a085,
0x4066209d,
0x4066a0c7,
0x406720f2,
0x4067a113,
0x40682126,
0x4068a147,
0x40692179,
0x4069a1a7,
0x406a21c8,
0x406aa1e8,
0x406b2370,
0x406ba393,
0x406c23a9,
0x406ca60b,
0x406d263a,
0x406da662,
0x406e2690,
0x406ea6a8,
0x406f26c7,
0x406fa6dc,
0x407026ef,
0x4070a70c,
0x40710800,
0x4071a71e,
0x40722731,
0x4072a74a,
0x40732762,
0x4073936d,
0x40742776,
0x4074a790,
0x407527a1,
0x4075a7b5,
0x407627c3,
0x407691aa,
0x407727e8,
0x4077a80a,
0x40782825,
0x4078a85e,
0x40792875,
0x4079a88b,
0x407a2897,
0x407aa8aa,
0x407b28bf,
0x407ba8d1,
0x407c28e6,
0x407ca8ef,
0x407d2162,
0x407d9c57,
0x407e283a,
0x407e9e16,
0x407f1a67,
0x407f9887,
0x40801c2e,
0x40809a8f,
0x40811cd9,
0x40819c08,
0x4082267b,
0x4082986d,
0x40831df1,
0x4083a038,
0x40841aa3,
0x40849e4e,
0x40851ed3,
0x41f4229b,
0x41f9232d,
0x41fe2220,
0x41fea3fc,
0x41ff24ed,
0x420322b4,
0x420822d6,
0x4208a312,
0x42092204,
0x4209a34c,
0x420a225b,
0x420aa23b,
0x420b227b,
0x420ba2f4,
0x420c2509,
0x420ca3c9,
0x420d23e3,
0x420da41a,
0x42122434,
0x421724d0,
0x4217a476,
0x421c2498,
0x421f2453,
0x42212520,
0x422624b3,
0x422b25ef,
0x422ba59d,
0x422c25d7,
0x422ca55c,
0x422d253b,
0x422da5bc,
0x422e2582,
0x4432072b,
0x4432873a,
0x44330746,
0x44338754,
0x44340767,
0x44348778,
0x4435077f,
0x44358789,
0x4436079c,
0x443687b2,
0x443707c4,
0x443787d1,
0x443807e0,
0x443887e8,
0x44390800,
0x4439880e,
0x443a0821,
0x4c3211d4,
0x4c3291e4,
0x4c3311f7,
0x4c339217,
0x4c3400ac,
0x4c3480ea,
0x4c351223,
0x4c359231,
0x4c36124d,
0x4c369260,
0x4c37126f,
0x4c37927d,
0x4c381292,
0x4c38929e,
0x4c3912be,
0x4c3992e8,
0x4c3a1301,
0x4c3a931a,
0x4c3b05fb,
0x4c3b9333,
0x4c3c1345,
0x4c3c9354,
0x4c3d136d,
0x4c3d937c,
0x4c3e1389,
0x50322b68,
0x5032ab77,
0x50332b82,
0x5033ab92,
0x50342bab,
0x5034abc5,
0x50352bd3,
0x5035abe9,
0x50362bfb,
0x5036ac11,
0x50372c2a,
0x5037ac3d,
0x50382c55,
0x5038ac66,
0x50392c7b,
0x5039ac8f,
0x503a2caf,
0x503aacc5,
0x503b2cdd,
0x503bacef,
0x503c2d0b,
0x503cad22,
0x503d2d3b,
0x503dad51,
0x503e2d5e,
0x503ead74,
0x503f2d86,
0x503f8382,
0x50402d99,
0x5040ada9,
0x50412dc3,
0x5041add2,
0x50422dec,
0x5042ae09,
0x50432e19,
0x5043ae29,
0x50442e38,
0x5044843f,
0x50452e4c,
0x5045ae6a,
0x50462e7d,
0x5046ae93,
0x50472ea5,
0x5047aeba,
0x50482ee0,
0x5048aeee,
0x50492f01,
0x5049af16,
0x504a2f2c,
0x504aaf3c,
0x504b2f5c,
0x504baf6f,
0x504c2f92,
0x504cafc0,
0x504d2fd2,
0x504dafef,
0x504e300a,
0x504eb026,
0x504f3038,
0x504fb04f,
0x5050305e,
0x505086ef,
0x50513071,
0x58320ec9,
0x68320e8b,
0x68328c25,
0x68330c38,
0x68338e99,
0x68340ea9,
0x683480ea,
0x6c320e67,
0x6c328bfc,
0x6c330e72,
0x74320a0b,
0x78320970,
0x78328985,
0x78330991,
0x78338083,
0x783409a0,
0x783489b5,
0x783509d4,
0x783589f6,
0x78360a0b,
0x78368a21,
0x78370a31,
0x78378a44,
0x78380a57,
0x78388a69,
0x78390a76,
0x78398a95,
0x783a0aaa,
0x783a8ab8,
0x783b0ac2,
0x783b8ad6,
0x783c0aed,
0x783c8b02,
0x783d0b19,
0x783d8b2e,
0x783e0a84,
0x7c3210d6,
};
const size_t kOpenSSLReasonValuesLen = sizeof(kOpenSSLReasonValues) / sizeof(kOpenSSLReasonValues[0]);
const char kOpenSSLReasonStringData[] =
"ASN1_LENGTH_MISMATCH\\0"
"AUX_ERROR\\0"
"BAD_GET_ASN1_OBJECT_CALL\\0"
"BAD_OBJECT_HEADER\\0"
"BMPSTRING_IS_WRONG_LENGTH\\0"
"BN_LIB\\0"
"BOOLEAN_IS_WRONG_LENGTH\\0"
"BUFFER_TOO_SMALL\\0"
"CONTEXT_NOT_INITIALISED\\0"
"DECODE_ERROR\\0"
"DEPTH_EXCEEDED\\0"
"DIGEST_AND_KEY_TYPE_NOT_SUPPORTED\\0"
"ENCODE_ERROR\\0"
"ERROR_GETTING_TIME\\0"
"EXPECTING_AN_ASN1_SEQUENCE\\0"
"EXPECTING_AN_INTEGER\\0"
"EXPECTING_AN_OBJECT\\0"
"EXPECTING_A_BOOLEAN\\0"
"EXPECTING_A_TIME\\0"
"EXPLICIT_LENGTH_MISMATCH\\0"
"EXPLICIT_TAG_NOT_CONSTRUCTED\\0"
"FIELD_MISSING\\0"
"FIRST_NUM_TOO_LARGE\\0"
"HEADER_TOO_LONG\\0"
"ILLEGAL_BITSTRING_FORMAT\\0"
"ILLEGAL_BOOLEAN\\0"
"ILLEGAL_CHARACTERS\\0"
"ILLEGAL_FORMAT\\0"
"ILLEGAL_HEX\\0"
"ILLEGAL_IMPLICIT_TAG\\0"
"ILLEGAL_INTEGER\\0"
"ILLEGAL_NESTED_TAGGING\\0"
"ILLEGAL_NULL\\0"
"ILLEGAL_NULL_VALUE\\0"
"ILLEGAL_OBJECT\\0"
"ILLEGAL_OPTIONAL_ANY\\0"
"ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE\\0"
"ILLEGAL_TAGGED_ANY\\0"
"ILLEGAL_TIME_VALUE\\0"
"INTEGER_NOT_ASCII_FORMAT\\0"
"INTEGER_TOO_LARGE_FOR_LONG\\0"
"INVALID_BIT_STRING_BITS_LEFT\\0"
"INVALID_BMPSTRING_LENGTH\\0"
"INVALID_DIGIT\\0"
"INVALID_MODIFIER\\0"
"INVALID_NUMBER\\0"
"INVALID_OBJECT_ENCODING\\0"
"INVALID_SEPARATOR\\0"
"INVALID_TIME_FORMAT\\0"
"INVALID_UNIVERSALSTRING_LENGTH\\0"
"INVALID_UTF8STRING\\0"
"LIST_ERROR\\0"
"MISSING_ASN1_EOS\\0"
"MISSING_EOC\\0"
"MISSING_SECOND_NUMBER\\0"
"MISSING_VALUE\\0"
"MSTRING_NOT_UNIVERSAL\\0"
"MSTRING_WRONG_TAG\\0"
"NESTED_ASN1_ERROR\\0"
"NESTED_ASN1_STRING\\0"
"NON_HEX_CHARACTERS\\0"
"NOT_ASCII_FORMAT\\0"
"NOT_ENOUGH_DATA\\0"
"NO_MATCHING_CHOICE_TYPE\\0"
"NULL_IS_WRONG_LENGTH\\0"
"OBJECT_NOT_ASCII_FORMAT\\0"
"ODD_NUMBER_OF_CHARS\\0"
"SECOND_NUMBER_TOO_LARGE\\0"
"SEQUENCE_LENGTH_MISMATCH\\0"
"SEQUENCE_NOT_CONSTRUCTED\\0"
"SEQUENCE_OR_SET_NEEDS_CONFIG\\0"
"SHORT_LINE\\0"
"STREAMING_NOT_SUPPORTED\\0"
"STRING_TOO_LONG\\0"
"STRING_TOO_SHORT\\0"
"TAG_VALUE_TOO_HIGH\\0"
"TIME_NOT_ASCII_FORMAT\\0"
"TOO_LONG\\0"
"TYPE_NOT_CONSTRUCTED\\0"
"TYPE_NOT_PRIMITIVE\\0"
"UNEXPECTED_EOC\\0"
"UNIVERSALSTRING_IS_WRONG_LENGTH\\0"
"UNKNOWN_FORMAT\\0"
"UNKNOWN_MESSAGE_DIGEST_ALGORITHM\\0"
"UNKNOWN_SIGNATURE_ALGORITHM\\0"
"UNKNOWN_TAG\\0"
"UNSUPPORTED_ANY_DEFINED_BY_TYPE\\0"
"UNSUPPORTED_PUBLIC_KEY_TYPE\\0"
"UNSUPPORTED_TYPE\\0"
"WRONG_PUBLIC_KEY_TYPE\\0"
"WRONG_TAG\\0"
"WRONG_TYPE\\0"
"BAD_FOPEN_MODE\\0"
"BROKEN_PIPE\\0"
"CONNECT_ERROR\\0"
"ERROR_SETTING_NBIO\\0"
"INVALID_ARGUMENT\\0"
"IN_USE\\0"
"KEEPALIVE\\0"
"NBIO_CONNECT_ERROR\\0"
"NO_HOSTNAME_SPECIFIED\\0"
"NO_PORT_SPECIFIED\\0"
"NO_SUCH_FILE\\0"
"NULL_PARAMETER\\0"
"SYS_LIB\\0"
"UNABLE_TO_CREATE_SOCKET\\0"
"UNINITIALIZED\\0"
"UNSUPPORTED_METHOD\\0"
"WRITE_TO_READ_ONLY_BIO\\0"
"ARG2_LT_ARG3\\0"
"BAD_ENCODING\\0"
"BAD_RECIPROCAL\\0"
"BIGNUM_TOO_LONG\\0"
"BITS_TOO_SMALL\\0"
"CALLED_WITH_EVEN_MODULUS\\0"
"DIV_BY_ZERO\\0"
"EXPAND_ON_STATIC_BIGNUM_DATA\\0"
"INPUT_NOT_REDUCED\\0"
"INVALID_RANGE\\0"
"NEGATIVE_NUMBER\\0"
"NOT_A_SQUARE\\0"
"NOT_INITIALIZED\\0"
"NO_INVERSE\\0"
"PRIVATE_KEY_TOO_LARGE\\0"
"P_IS_NOT_PRIME\\0"
"TOO_MANY_ITERATIONS\\0"
"TOO_MANY_TEMPORARY_VARIABLES\\0"
"AES_KEY_SETUP_FAILED\\0"
"BAD_DECRYPT\\0"
"BAD_KEY_LENGTH\\0"
"CTRL_NOT_IMPLEMENTED\\0"
"CTRL_OPERATION_NOT_IMPLEMENTED\\0"
"DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH\\0"
"INITIALIZATION_ERROR\\0"
"INPUT_NOT_INITIALIZED\\0"
"INVALID_AD_SIZE\\0"
"INVALID_KEY_LENGTH\\0"
"INVALID_NONCE_SIZE\\0"
"INVALID_OPERATION\\0"
"IV_TOO_LARGE\\0"
"NO_CIPHER_SET\\0"
"NO_DIRECTION_SET\\0"
"OUTPUT_ALIASES_INPUT\\0"
"TAG_TOO_LARGE\\0"
"TOO_LARGE\\0"
"UNSUPPORTED_AD_SIZE\\0"
"UNSUPPORTED_INPUT_SIZE\\0"
"UNSUPPORTED_KEY_SIZE\\0"
"UNSUPPORTED_NONCE_SIZE\\0"
"UNSUPPORTED_TAG_SIZE\\0"
"WRONG_FINAL_BLOCK_LENGTH\\0"
"LIST_CANNOT_BE_NULL\\0"
"MISSING_CLOSE_SQUARE_BRACKET\\0"
"MISSING_EQUAL_SIGN\\0"
"NO_CLOSE_BRACE\\0"
"UNABLE_TO_CREATE_NEW_SECTION\\0"
"VARIABLE_HAS_NO_VALUE\\0"
"BAD_GENERATOR\\0"
"INVALID_PUBKEY\\0"
"MODULUS_TOO_LARGE\\0"
"NO_PRIVATE_VALUE\\0"
"BAD_Q_VALUE\\0"
"BAD_VERSION\\0"
"MISSING_PARAMETERS\\0"
"NEED_NEW_SETUP_VALUES\\0"
"BIGNUM_OUT_OF_RANGE\\0"
"COORDINATES_OUT_OF_RANGE\\0"
"D2I_ECPKPARAMETERS_FAILURE\\0"
"EC_GROUP_NEW_BY_NAME_FAILURE\\0"
"GROUP2PKPARAMETERS_FAILURE\\0"
"GROUP_MISMATCH\\0"
"I2D_ECPKPARAMETERS_FAILURE\\0"
"INCOMPATIBLE_OBJECTS\\0"
"INVALID_COFACTOR\\0"
"INVALID_COMPRESSED_POINT\\0"
"INVALID_COMPRESSION_BIT\\0"
"INVALID_ENCODING\\0"
"INVALID_FIELD\\0"
"INVALID_FORM\\0"
"INVALID_GROUP_ORDER\\0"
"INVALID_PRIVATE_KEY\\0"
"MISSING_PRIVATE_KEY\\0"
"NON_NAMED_CURVE\\0"
"PKPARAMETERS2GROUP_FAILURE\\0"
"POINT_AT_INFINITY\\0"
"POINT_IS_NOT_ON_CURVE\\0"
"SLOT_FULL\\0"
"UNDEFINED_GENERATOR\\0"
"UNKNOWN_GROUP\\0"
"UNKNOWN_ORDER\\0"
"WRONG_CURVE_PARAMETERS\\0"
"WRONG_ORDER\\0"
"KDF_FAILED\\0"
"POINT_ARITHMETIC_FAILURE\\0"
"BAD_SIGNATURE\\0"
"NOT_IMPLEMENTED\\0"
"RANDOM_NUMBER_GENERATION_FAILED\\0"
"OPERATION_NOT_SUPPORTED\\0"
"COMMAND_NOT_SUPPORTED\\0"
"DIFFERENT_KEY_TYPES\\0"
"DIFFERENT_PARAMETERS\\0"
"EXPECTING_AN_EC_KEY_KEY\\0"
"EXPECTING_AN_RSA_KEY\\0"
"EXPECTING_A_DSA_KEY\\0"
"ILLEGAL_OR_UNSUPPORTED_PADDING_MODE\\0"
"INVALID_DIGEST_LENGTH\\0"
"INVALID_DIGEST_TYPE\\0"
"INVALID_KEYBITS\\0"
"INVALID_MGF1_MD\\0"
"INVALID_PADDING_MODE\\0"
"INVALID_PSS_SALTLEN\\0"
"KEYS_NOT_SET\\0"
"NO_DEFAULT_DIGEST\\0"
"NO_KEY_SET\\0"
"NO_MDC2_SUPPORT\\0"
"NO_NID_FOR_CURVE\\0"
"NO_OPERATION_SET\\0"
"NO_PARAMETERS_SET\\0"
"OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE\\0"
"OPERATON_NOT_INITIALIZED\\0"
"UNKNOWN_PUBLIC_KEY_TYPE\\0"
"UNSUPPORTED_ALGORITHM\\0"
"OUTPUT_TOO_LARGE\\0"
"UNKNOWN_NID\\0"
"BAD_BASE64_DECODE\\0"
"BAD_END_LINE\\0"
"BAD_IV_CHARS\\0"
"BAD_PASSWORD_READ\\0"
"CIPHER_IS_NULL\\0"
"ERROR_CONVERTING_PRIVATE_KEY\\0"
"NOT_DEK_INFO\\0"
"NOT_ENCRYPTED\\0"
"NOT_PROC_TYPE\\0"
"NO_START_LINE\\0"
"READ_KEY\\0"
"SHORT_HEADER\\0"
"UNSUPPORTED_CIPHER\\0"
"UNSUPPORTED_ENCRYPTION\\0"
"BAD_PKCS12_DATA\\0"
"BAD_PKCS12_VERSION\\0"
"CIPHER_HAS_NO_OBJECT_IDENTIFIER\\0"
"CRYPT_ERROR\\0"
"ENCRYPT_ERROR\\0"
"ERROR_SETTING_CIPHER_PARAMS\\0"
"INCORRECT_PASSWORD\\0"
"KEYGEN_FAILURE\\0"
"KEY_GEN_ERROR\\0"
"METHOD_NOT_SUPPORTED\\0"
"MISSING_MAC\\0"
"MULTIPLE_PRIVATE_KEYS_IN_PKCS12\\0"
"PKCS12_PUBLIC_KEY_INTEGRITY_NOT_SUPPORTED\\0"
"PKCS12_TOO_DEEPLY_NESTED\\0"
"PRIVATE_KEY_DECODE_ERROR\\0"
"PRIVATE_KEY_ENCODE_ERROR\\0"
"UNKNOWN_ALGORITHM\\0"
"UNKNOWN_CIPHER\\0"
"UNKNOWN_CIPHER_ALGORITHM\\0"
"UNKNOWN_DIGEST\\0"
"UNKNOWN_HASH\\0"
"UNSUPPORTED_PRIVATE_KEY_ALGORITHM\\0"
"BAD_E_VALUE\\0"
"BAD_FIXED_HEADER_DECRYPT\\0"
"BAD_PAD_BYTE_COUNT\\0"
"BAD_RSA_PARAMETERS\\0"
"BLOCK_TYPE_IS_NOT_01\\0"
"BN_NOT_INITIALIZED\\0"
"CANNOT_RECOVER_MULTI_PRIME_KEY\\0"
"CRT_PARAMS_ALREADY_GIVEN\\0"
"CRT_VALUES_INCORRECT\\0"
"DATA_LEN_NOT_EQUAL_TO_MOD_LEN\\0"
"DATA_TOO_LARGE\\0"
"DATA_TOO_LARGE_FOR_KEY_SIZE\\0"
"DATA_TOO_LARGE_FOR_MODULUS\\0"
"DATA_TOO_SMALL\\0"
"DATA_TOO_SMALL_FOR_KEY_SIZE\\0"
"DIGEST_TOO_BIG_FOR_RSA_KEY\\0"
"D_E_NOT_CONGRUENT_TO_1\\0"
"EMPTY_PUBLIC_KEY\\0"
"FIRST_OCTET_INVALID\\0"
"INCONSISTENT_SET_OF_CRT_VALUES\\0"
"INTERNAL_ERROR\\0"
"INVALID_MESSAGE_LENGTH\\0"
"KEY_SIZE_TOO_SMALL\\0"
"LAST_OCTET_INVALID\\0"
"MUST_HAVE_AT_LEAST_TWO_PRIMES\\0"
"NO_PUBLIC_EXPONENT\\0"
"NULL_BEFORE_BLOCK_MISSING\\0"
"N_NOT_EQUAL_P_Q\\0"
"OAEP_DECODING_ERROR\\0"
"ONLY_ONE_OF_P_Q_GIVEN\\0"
"OUTPUT_BUFFER_TOO_SMALL\\0"
"PADDING_CHECK_FAILED\\0"
"PKCS_DECODING_ERROR\\0"
"SLEN_CHECK_FAILED\\0"
"SLEN_RECOVERY_FAILED\\0"
"UNKNOWN_ALGORITHM_TYPE\\0"
"UNKNOWN_PADDING_TYPE\\0"
"VALUE_MISSING\\0"
"WRONG_SIGNATURE_LENGTH\\0"
"APP_DATA_IN_HANDSHAKE\\0"
"ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT\\0"
"BAD_ALERT\\0"
"BAD_CHANGE_CIPHER_SPEC\\0"
"BAD_DATA_RETURNED_BY_CALLBACK\\0"
"BAD_DH_P_LENGTH\\0"
"BAD_DIGEST_LENGTH\\0"
"BAD_ECC_CERT\\0"
"BAD_ECPOINT\\0"
"BAD_HANDSHAKE_RECORD\\0"
"BAD_HELLO_REQUEST\\0"
"BAD_LENGTH\\0"
"BAD_PACKET_LENGTH\\0"
"BAD_RSA_ENCRYPT\\0"
"BAD_SRTP_MKI_VALUE\\0"
"BAD_SRTP_PROTECTION_PROFILE_LIST\\0"
"BAD_SSL_FILETYPE\\0"
"BAD_WRITE_RETRY\\0"
"BIO_NOT_SET\\0"
"BLOCK_CIPHER_PAD_IS_WRONG\\0"
"BUFFERED_MESSAGES_ON_CIPHER_CHANGE\\0"
"CA_DN_LENGTH_MISMATCH\\0"
"CA_DN_TOO_LONG\\0"
"CCS_RECEIVED_EARLY\\0"
"CERTIFICATE_VERIFY_FAILED\\0"
"CERT_CB_ERROR\\0"
"CERT_LENGTH_MISMATCH\\0"
"CHANNEL_ID_NOT_P256\\0"
"CHANNEL_ID_SIGNATURE_INVALID\\0"
"CIPHER_OR_HASH_UNAVAILABLE\\0"
"CLIENTHELLO_PARSE_FAILED\\0"
"CLIENTHELLO_TLSEXT\\0"
"CONNECTION_REJECTED\\0"
"CONNECTION_TYPE_NOT_SET\\0"
"CUSTOM_EXTENSION_ERROR\\0"
"DATA_LENGTH_TOO_LONG\\0"
"DECRYPTION_FAILED\\0"
"DECRYPTION_FAILED_OR_BAD_RECORD_MAC\\0"
"DH_PUBLIC_VALUE_LENGTH_IS_WRONG\\0"
"DH_P_TOO_LONG\\0"
"DIGEST_CHECK_FAILED\\0"
"DOWNGRADE_DETECTED\\0"
"DTLS_MESSAGE_TOO_BIG\\0"
"DUPLICATE_EXTENSION\\0"
"DUPLICATE_KEY_SHARE\\0"
"ECC_CERT_NOT_FOR_SIGNING\\0"
"EMS_STATE_INCONSISTENT\\0"
"ENCRYPTED_LENGTH_TOO_LONG\\0"
"ERROR_ADDING_EXTENSION\\0"
"ERROR_IN_RECEIVED_CIPHER_LIST\\0"
"ERROR_PARSING_EXTENSION\\0"
"EXCESSIVE_MESSAGE_SIZE\\0"
"EXTRA_DATA_IN_MESSAGE\\0"
"FRAGMENT_MISMATCH\\0"
"GOT_NEXT_PROTO_WITHOUT_EXTENSION\\0"
"HANDSHAKE_FAILURE_ON_CLIENT_HELLO\\0"
"HTTPS_PROXY_REQUEST\\0"
"HTTP_REQUEST\\0"
"INAPPROPRIATE_FALLBACK\\0"
"INVALID_ALPN_PROTOCOL\\0"
"INVALID_COMMAND\\0"
"INVALID_COMPRESSION_LIST\\0"
"INVALID_MESSAGE\\0"
"INVALID_OUTER_RECORD_TYPE\\0"
"INVALID_SSL_SESSION\\0"
"INVALID_TICKET_KEYS_LENGTH\\0"
"LENGTH_MISMATCH\\0"
"LIBRARY_HAS_NO_CIPHERS\\0"
"MISSING_EXTENSION\\0"
"MISSING_KEY_SHARE\\0"
"MISSING_RSA_CERTIFICATE\\0"
"MISSING_TMP_DH_KEY\\0"
"MISSING_TMP_ECDH_KEY\\0"
"MIXED_SPECIAL_OPERATOR_WITH_GROUPS\\0"
"MTU_TOO_SMALL\\0"
"NEGOTIATED_BOTH_NPN_AND_ALPN\\0"
"NESTED_GROUP\\0"
"NO_CERTIFICATES_RETURNED\\0"
"NO_CERTIFICATE_ASSIGNED\\0"
"NO_CERTIFICATE_SET\\0"
"NO_CIPHERS_AVAILABLE\\0"
"NO_CIPHERS_PASSED\\0"
"NO_CIPHERS_SPECIFIED\\0"
"NO_CIPHER_MATCH\\0"
"NO_COMMON_SIGNATURE_ALGORITHMS\\0"
"NO_COMPRESSION_SPECIFIED\\0"
"NO_GROUPS_SPECIFIED\\0"
"NO_METHOD_SPECIFIED\\0"
"NO_P256_SUPPORT\\0"
"NO_PRIVATE_KEY_ASSIGNED\\0"
"NO_RENEGOTIATION\\0"
"NO_REQUIRED_DIGEST\\0"
"NO_SHARED_CIPHER\\0"
"NO_SHARED_GROUP\\0"
"NULL_SSL_CTX\\0"
"NULL_SSL_METHOD_PASSED\\0"
"OLD_SESSION_CIPHER_NOT_RETURNED\\0"
"OLD_SESSION_VERSION_NOT_RETURNED\\0"
"PARSE_TLSEXT\\0"
"PATH_TOO_LONG\\0"
"PEER_DID_NOT_RETURN_A_CERTIFICATE\\0"
"PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE\\0"
"PROTOCOL_IS_SHUTDOWN\\0"
"PSK_IDENTITY_NOT_FOUND\\0"
"PSK_NO_CLIENT_CB\\0"
"PSK_NO_SERVER_CB\\0"
"READ_TIMEOUT_EXPIRED\\0"
"RECORD_LENGTH_MISMATCH\\0"
"RECORD_TOO_LARGE\\0"
"RENEGOTIATION_EMS_MISMATCH\\0"
"RENEGOTIATION_ENCODING_ERR\\0"
"RENEGOTIATION_MISMATCH\\0"
"REQUIRED_CIPHER_MISSING\\0"
"RESUMED_EMS_SESSION_WITHOUT_EMS_EXTENSION\\0"
"RESUMED_NON_EMS_SESSION_WITH_EMS_EXTENSION\\0"
"SCSV_RECEIVED_WHEN_RENEGOTIATING\\0"
"SERVERHELLO_TLSEXT\\0"
"SESSION_ID_CONTEXT_UNINITIALIZED\\0"
"SESSION_MAY_NOT_BE_CREATED\\0"
"SHUTDOWN_WHILE_IN_INIT\\0"
"SIGNATURE_ALGORITHMS_EXTENSION_SENT_BY_SERVER\\0"
"SRTP_COULD_NOT_ALLOCATE_PROFILES\\0"
"SRTP_UNKNOWN_PROTECTION_PROFILE\\0"
"SSL3_EXT_INVALID_SERVERNAME\\0"
"SSLV3_ALERT_BAD_CERTIFICATE\\0"
"SSLV3_ALERT_BAD_RECORD_MAC\\0"
"SSLV3_ALERT_CERTIFICATE_EXPIRED\\0"
"SSLV3_ALERT_CERTIFICATE_REVOKED\\0"
"SSLV3_ALERT_CERTIFICATE_UNKNOWN\\0"
"SSLV3_ALERT_CLOSE_NOTIFY\\0"
"SSLV3_ALERT_DECOMPRESSION_FAILURE\\0"
"SSLV3_ALERT_HANDSHAKE_FAILURE\\0"
"SSLV3_ALERT_ILLEGAL_PARAMETER\\0"
"SSLV3_ALERT_NO_CERTIFICATE\\0"
"SSLV3_ALERT_UNEXPECTED_MESSAGE\\0"
"SSLV3_ALERT_UNSUPPORTED_CERTIFICATE\\0"
"SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION\\0"
"SSL_HANDSHAKE_FAILURE\\0"
"SSL_SESSION_ID_CONTEXT_TOO_LONG\\0"
"TLSV1_ALERT_ACCESS_DENIED\\0"
"TLSV1_ALERT_DECODE_ERROR\\0"
"TLSV1_ALERT_DECRYPTION_FAILED\\0"
"TLSV1_ALERT_DECRYPT_ERROR\\0"
"TLSV1_ALERT_EXPORT_RESTRICTION\\0"
"TLSV1_ALERT_INAPPROPRIATE_FALLBACK\\0"
"TLSV1_ALERT_INSUFFICIENT_SECURITY\\0"
"TLSV1_ALERT_INTERNAL_ERROR\\0"
"TLSV1_ALERT_NO_RENEGOTIATION\\0"
"TLSV1_ALERT_PROTOCOL_VERSION\\0"
"TLSV1_ALERT_RECORD_OVERFLOW\\0"
"TLSV1_ALERT_UNKNOWN_CA\\0"
"TLSV1_ALERT_USER_CANCELLED\\0"
"TLSV1_BAD_CERTIFICATE_HASH_VALUE\\0"
"TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE\\0"
"TLSV1_CERTIFICATE_REQUIRED\\0"
"TLSV1_CERTIFICATE_UNOBTAINABLE\\0"
"TLSV1_UNKNOWN_PSK_IDENTITY\\0"
"TLSV1_UNRECOGNIZED_NAME\\0"
"TLSV1_UNSUPPORTED_EXTENSION\\0"
"TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST\\0"
"TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG\\0"
"TOO_MANY_EMPTY_FRAGMENTS\\0"
"TOO_MANY_KEY_UPDATES\\0"
"TOO_MANY_WARNING_ALERTS\\0"
"UNABLE_TO_FIND_ECDH_PARAMETERS\\0"
"UNEXPECTED_EXTENSION\\0"
"UNEXPECTED_MESSAGE\\0"
"UNEXPECTED_OPERATOR_IN_GROUP\\0"
"UNEXPECTED_RECORD\\0"
"UNKNOWN_ALERT_TYPE\\0"
"UNKNOWN_CERTIFICATE_TYPE\\0"
"UNKNOWN_CIPHER_RETURNED\\0"
"UNKNOWN_CIPHER_TYPE\\0"
"UNKNOWN_KEY_EXCHANGE_TYPE\\0"
"UNKNOWN_PROTOCOL\\0"
"UNKNOWN_SSL_VERSION\\0"
"UNKNOWN_STATE\\0"
"UNSAFE_LEGACY_RENEGOTIATION_DISABLED\\0"
"UNSUPPORTED_COMPRESSION_ALGORITHM\\0"
"UNSUPPORTED_ELLIPTIC_CURVE\\0"
"UNSUPPORTED_PROTOCOL\\0"
"UNSUPPORTED_PROTOCOL_FOR_CUSTOM_KEY\\0"
"WRONG_CERTIFICATE_TYPE\\0"
"WRONG_CIPHER_RETURNED\\0"
"WRONG_CURVE\\0"
"WRONG_MESSAGE_TYPE\\0"
"WRONG_SIGNATURE_TYPE\\0"
"WRONG_SSL_VERSION\\0"
"WRONG_VERSION_NUMBER\\0"
"X509_LIB\\0"
"X509_VERIFICATION_SETUP_PROBLEMS\\0"
"AKID_MISMATCH\\0"
"BAD_PKCS7_VERSION\\0"
"BAD_X509_FILETYPE\\0"
"BASE64_DECODE_ERROR\\0"
"CANT_CHECK_DH_KEY\\0"
"CERT_ALREADY_IN_HASH_TABLE\\0"
"CRL_ALREADY_DELTA\\0"
"CRL_VERIFY_FAILURE\\0"
"IDP_MISMATCH\\0"
"INVALID_DIRECTORY\\0"
"INVALID_FIELD_NAME\\0"
"INVALID_PSS_PARAMETERS\\0"
"INVALID_TRUST\\0"
"ISSUER_MISMATCH\\0"
"KEY_TYPE_MISMATCH\\0"
"KEY_VALUES_MISMATCH\\0"
"LOADING_CERT_DIR\\0"
"LOADING_DEFAULTS\\0"
"NAME_TOO_LONG\\0"
"NEWER_CRL_NOT_NEWER\\0"
"NOT_PKCS7_SIGNED_DATA\\0"
"NO_CERTIFICATES_INCLUDED\\0"
"NO_CERT_SET_FOR_US_TO_VERIFY\\0"
"NO_CRLS_INCLUDED\\0"
"NO_CRL_NUMBER\\0"
"PUBLIC_KEY_DECODE_ERROR\\0"
"PUBLIC_KEY_ENCODE_ERROR\\0"
"SHOULD_RETRY\\0"
"UNKNOWN_KEY_TYPE\\0"
"UNKNOWN_PURPOSE_ID\\0"
"UNKNOWN_TRUST_ID\\0"
"WRONG_LOOKUP_TYPE\\0"
"BAD_IP_ADDRESS\\0"
"BAD_OBJECT\\0"
"BN_DEC2BN_ERROR\\0"
"BN_TO_ASN1_INTEGER_ERROR\\0"
"CANNOT_FIND_FREE_FUNCTION\\0"
"DIRNAME_ERROR\\0"
"DISTPOINT_ALREADY_SET\\0"
"DUPLICATE_ZONE_ID\\0"
"ERROR_CONVERTING_ZONE\\0"
"ERROR_CREATING_EXTENSION\\0"
"ERROR_IN_EXTENSION\\0"
"EXPECTED_A_SECTION_NAME\\0"
"EXTENSION_EXISTS\\0"
"EXTENSION_NAME_ERROR\\0"
"EXTENSION_NOT_FOUND\\0"
"EXTENSION_SETTING_NOT_SUPPORTED\\0"
"EXTENSION_VALUE_ERROR\\0"
"ILLEGAL_EMPTY_EXTENSION\\0"
"ILLEGAL_HEX_DIGIT\\0"
"INCORRECT_POLICY_SYNTAX_TAG\\0"
"INVALID_BOOLEAN_STRING\\0"
"INVALID_EXTENSION_STRING\\0"
"INVALID_MULTIPLE_RDNS\\0"
"INVALID_NAME\\0"
"INVALID_NULL_ARGUMENT\\0"
"INVALID_NULL_NAME\\0"
"INVALID_NULL_VALUE\\0"
"INVALID_NUMBERS\\0"
"INVALID_OBJECT_IDENTIFIER\\0"
"INVALID_OPTION\\0"
"INVALID_POLICY_IDENTIFIER\\0"
"INVALID_PROXY_POLICY_SETTING\\0"
"INVALID_PURPOSE\\0"
"INVALID_SECTION\\0"
"INVALID_SYNTAX\\0"
"ISSUER_DECODE_ERROR\\0"
"NEED_ORGANIZATION_AND_NUMBERS\\0"
"NO_CONFIG_DATABASE\\0"
"NO_ISSUER_CERTIFICATE\\0"
"NO_ISSUER_DETAILS\\0"
"NO_POLICY_IDENTIFIER\\0"
"NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED\\0"
"NO_PUBLIC_KEY\\0"
"NO_SUBJECT_DETAILS\\0"
"ODD_NUMBER_OF_DIGITS\\0"
"OPERATION_NOT_DEFINED\\0"
"OTHERNAME_ERROR\\0"
"POLICY_LANGUAGE_ALREADY_DEFINED\\0"
"POLICY_PATH_LENGTH\\0"
"POLICY_PATH_LENGTH_ALREADY_DEFINED\\0"
"POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY\\0"
"SECTION_NOT_FOUND\\0"
"UNABLE_TO_GET_ISSUER_DETAILS\\0"
"UNABLE_TO_GET_ISSUER_KEYID\\0"
"UNKNOWN_BIT_STRING_ARGUMENT\\0"
"UNKNOWN_EXTENSION\\0"
"UNKNOWN_EXTENSION_NAME\\0"
"UNKNOWN_OPTION\\0"
"UNSUPPORTED_OPTION\\0"
"USER_TOO_LONG\\0"
"";
EOF
END_OF_COMMAND
end