• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1%YAML 1.2
2--- |
3  <%!
4  def expand_symbol_list(symbol_list):
5      return ',\n    '.join("'#define %s GRPC_SHADOW_%s'" % (symbol, symbol) for symbol in symbol_list)
6  %>
7  # This file has been automatically generated from a template file.
8  # Please make modifications to
9  # `templates/src/objective-c/BoringSSL-GRPC.podspec.template` instead. This
10  # file can be regenerated from the template by running
11  # `tools/buildgen/generate_projects.sh`.
12
13  # BoringSSL CocoaPods podspec
14
15  # Copyright 2015, Google Inc.
16  # All rights reserved.
17  #
18  # Redistribution and use in source and binary forms, with or without
19  # modification, are permitted provided that the following conditions are
20  # met:
21  #
22  #     * Redistributions of source code must retain the above copyright
23  # notice, this list of conditions and the following disclaimer.
24  #     * Redistributions in binary form must reproduce the above
25  # copyright notice, this list of conditions and the following disclaimer
26  # in the documentation and/or other materials provided with the
27  # distribution.
28  #     * Neither the name of Google Inc. nor the names of its
29  # contributors may be used to endorse or promote products derived from
30  # this software without specific prior written permission.
31  #
32  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
33  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
34  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
35  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
36  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
37  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
38  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
39  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
40  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
41  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
42  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
43
44  Pod::Spec.new do |s|
45    s.name     = 'BoringSSL-GRPC'
46    version = '0.0.1'
47    s.version  = version
48    s.summary  = 'BoringSSL is a fork of OpenSSL that is designed to meet Google\'s needs.'
49    # Adapted from the homepage:
50    s.description = <<-DESC
51      BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.
52
53      Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is.
54      We don't recommend that third parties depend upon it. Doing so is likely to be frustrating
55      because there are no guarantees of API stability. Only the latest version of this pod is
56      supported, and every new version is a new major version.
57
58      We update Google libraries and programs that use BoringSSL as needed when deciding to make API
59      changes. This allows us to mostly avoid compromises in the name of compatibility. It works for
60      us, but it may not work for you.
61
62      As a Cocoapods pod, it has the advantage over OpenSSL's pods that the library doesn't need to
63      be precompiled. This eliminates the 10 - 20 minutes of wait the first time a user does "pod
64      install", lets it be used as a dynamic framework (pending solution of Cocoapods' issue #4605),
65      and works with bitcode automatically. It's also thought to be smaller than OpenSSL (which takes
66      1MB - 2MB per ARM architecture), but we don't have specific numbers yet.
67
68      BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built
69      up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's
70      product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved
71      in maintaining all these patches in multiple places was growing steadily.
72
73      Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the
74      NDK) and a number of other apps/programs.
75    DESC
76    s.homepage = 'https://github.com/google/boringssl'
77    s.license  = { :type => 'Mixed', :file => 'LICENSE' }
78    # "The name and email addresses of the library maintainers, not the Podspec maintainer."
79    s.authors  = 'Adam Langley', 'David Benjamin', 'Matt Braithwaite'
80
81    s.source = {
82      :git => 'https://github.com/google/boringssl.git',
83      :commit => "b29b21a81b32ec273f118f589f46d56ad3332420",
84    }
85
86    s.ios.deployment_target = '5.0'
87    s.osx.deployment_target = '10.7'
88
89    name = 'openssl'
90
91    # When creating a dynamic framework, name it openssl.framework instead of BoringSSL.framework.
92    # This lets users write their includes like `#include <openssl/ssl.h>` as opposed to `#include
93    # <BoringSSL/ssl.h>`.
94    s.module_name = name
95
96    # When creating a dynamic framework, copy the headers under `include/openssl/` into the root of
97    # the `Headers/` directory of the framework (i.e., not under `Headers/include/openssl`).
98    #
99    # TODO(jcanizales): Debug why this doesn't work on macOS.
100    s.header_mappings_dir = 'include/openssl'
101
102    # The above has an undesired effect when creating a static library: It forces users to write
103    # includes like `#include <BoringSSL/ssl.h>`. `s.header_dir` adds a path prefix to that, and
104    # because Cocoapods lets omit the pod name when including headers of static libraries, the
105    # following lets users write `#include <openssl/ssl.h>`.
106    s.header_dir = name
107
108    # The module map and umbrella header created automatically by Cocoapods don't work for C libraries
109    # like this one. The following file, and a correct umbrella header, are created on the fly by the
110    # `prepare_command` of this pod.
111    s.module_map = 'include/openssl/BoringSSL.modulemap'
112
113    # We don't need to inhibit all warnings; only -Wno-shorten-64-to-32. But Cocoapods' linter doesn't
114    # want that for some reason.
115    s.compiler_flags = '-DOPENSSL_NO_ASM', '-GCC_WARN_INHIBIT_ALL_WARNINGS', '-w'
116    s.requires_arc = false
117
118    # Like many other C libraries, BoringSSL has its public headers under `include/<libname>/` and its
119    # sources and private headers in other directories outside `include/`. Cocoapods' linter doesn't
120    # allow any header to be listed outside the `header_mappings_dir` (even though doing so works in
121    # practice). Because we need our `header_mappings_dir` to be `include/openssl/` for the reason
122    # mentioned above, we work around the linter limitation by dividing the pod into two subspecs, one
123    # for public headers and the other for implementation. Each gets its own `header_mappings_dir`,
124    # making the linter happy.
125    s.subspec 'Interface' do |ss|
126      ss.header_mappings_dir = 'include/openssl'
127      ss.source_files = 'include/openssl/*.h'
128    end
129    s.subspec 'Implementation' do |ss|
130      ss.header_mappings_dir = '.'
131      ss.source_files = 'ssl/*.{h,cc}',
132                        'ssl/**/*.{h,cc}',
133                        '*.{h,c}',
134                        'crypto/*.{h,c}',
135                        'crypto/**/*.{h,c}',
136                        'third_party/fiat/*.{h,c}'
137      ss.private_header_files = 'ssl/*.h',
138                                'ssl/**/*.h',
139                                '*.h',
140                                'crypto/*.h',
141                                'crypto/**/*.h'
142      # bcm.c includes other source files, creating duplicated symbols. Since it is not used, we
143      # explicitly exclude it from the pod.
144      # TODO (mxyan): Work with BoringSSL team to remove this hack.
145      ss.exclude_files = 'crypto/fipsmodule/bcm.c',
146                         '**/*_test.*',
147                         '**/test_*.*',
148                         '**/test/*.*'
149
150      ss.dependency "#{s.name}/Interface", version
151    end
152
153    s.prepare_command = <<-END_OF_COMMAND
154      # Add a module map and an umbrella header
155      cat > include/openssl/umbrella.h <<EOF
156        #include "ssl.h"
157        #include "crypto.h"
158        #include "aes.h"
159        /* The following macros are defined by base.h. The latter is the first file included by the
160           other headers. */
161        #if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
162        #  include "arm_arch.h"
163        #endif
164        #include "asn1.h"
165        #include "asn1_mac.h"
166        #include "asn1t.h"
167        #include "blowfish.h"
168        #include "cast.h"
169        #include "chacha.h"
170        #include "cmac.h"
171        #include "conf.h"
172        #include "cpu.h"
173        #include "curve25519.h"
174        #include "des.h"
175        #include "dtls1.h"
176        #include "hkdf.h"
177        #include "md4.h"
178        #include "md5.h"
179        #include "obj_mac.h"
180        #include "objects.h"
181        #include "opensslv.h"
182        #include "ossl_typ.h"
183        #include "pkcs12.h"
184        #include "pkcs7.h"
185        #include "pkcs8.h"
186        #include "poly1305.h"
187        #include "rand.h"
188        #include "rc4.h"
189        #include "ripemd.h"
190        #include "safestack.h"
191        #include "srtp.h"
192        #include "x509.h"
193        #include "x509v3.h"
194      EOF
195      cat > include/openssl/BoringSSL.modulemap <<EOF
196        framework module openssl {
197          umbrella header "umbrella.h"
198          textual header "arm_arch.h"
199          export *
200          module * { export * }
201        }
202      EOF
203
204      # This is a bit ridiculous, but requiring people to install Go in order to build is slightly
205      # more ridiculous IMO.
206      # TODO(jcanizales): Translate err_data_generate.go into a Bash or Ruby script.
207      cat > err_data.c <<EOF
208        /* Copyright (c) 2015, Google Inc.
209         *
210         * Permission to use, copy, modify, and/or distribute this software for any
211         * purpose with or without fee is hereby granted, provided that the above
212         * copyright notice and this permission notice appear in all copies.
213         *
214         * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
215         * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
216         * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
217         * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
218         * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
219         * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
220         * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
221
222         /* This file was generated by err_data_generate.go. */
223
224        #include <openssl/base.h>
225        #include <openssl/err.h>
226        #include <openssl/type_check.h>
227
228
229        OPENSSL_COMPILE_ASSERT(ERR_LIB_NONE == 1, library_values_changed_1);
230        OPENSSL_COMPILE_ASSERT(ERR_LIB_SYS == 2, library_values_changed_2);
231        OPENSSL_COMPILE_ASSERT(ERR_LIB_BN == 3, library_values_changed_3);
232        OPENSSL_COMPILE_ASSERT(ERR_LIB_RSA == 4, library_values_changed_4);
233        OPENSSL_COMPILE_ASSERT(ERR_LIB_DH == 5, library_values_changed_5);
234        OPENSSL_COMPILE_ASSERT(ERR_LIB_EVP == 6, library_values_changed_6);
235        OPENSSL_COMPILE_ASSERT(ERR_LIB_BUF == 7, library_values_changed_7);
236        OPENSSL_COMPILE_ASSERT(ERR_LIB_OBJ == 8, library_values_changed_8);
237        OPENSSL_COMPILE_ASSERT(ERR_LIB_PEM == 9, library_values_changed_9);
238        OPENSSL_COMPILE_ASSERT(ERR_LIB_DSA == 10, library_values_changed_10);
239        OPENSSL_COMPILE_ASSERT(ERR_LIB_X509 == 11, library_values_changed_11);
240        OPENSSL_COMPILE_ASSERT(ERR_LIB_ASN1 == 12, library_values_changed_12);
241        OPENSSL_COMPILE_ASSERT(ERR_LIB_CONF == 13, library_values_changed_13);
242        OPENSSL_COMPILE_ASSERT(ERR_LIB_CRYPTO == 14, library_values_changed_14);
243        OPENSSL_COMPILE_ASSERT(ERR_LIB_EC == 15, library_values_changed_15);
244        OPENSSL_COMPILE_ASSERT(ERR_LIB_SSL == 16, library_values_changed_16);
245        OPENSSL_COMPILE_ASSERT(ERR_LIB_BIO == 17, library_values_changed_17);
246        OPENSSL_COMPILE_ASSERT(ERR_LIB_PKCS7 == 18, library_values_changed_18);
247        OPENSSL_COMPILE_ASSERT(ERR_LIB_PKCS8 == 19, library_values_changed_19);
248        OPENSSL_COMPILE_ASSERT(ERR_LIB_X509V3 == 20, library_values_changed_20);
249        OPENSSL_COMPILE_ASSERT(ERR_LIB_RAND == 21, library_values_changed_21);
250        OPENSSL_COMPILE_ASSERT(ERR_LIB_ENGINE == 22, library_values_changed_22);
251        OPENSSL_COMPILE_ASSERT(ERR_LIB_OCSP == 23, library_values_changed_23);
252        OPENSSL_COMPILE_ASSERT(ERR_LIB_UI == 24, library_values_changed_24);
253        OPENSSL_COMPILE_ASSERT(ERR_LIB_COMP == 25, library_values_changed_25);
254        OPENSSL_COMPILE_ASSERT(ERR_LIB_ECDSA == 26, library_values_changed_26);
255        OPENSSL_COMPILE_ASSERT(ERR_LIB_ECDH == 27, library_values_changed_27);
256        OPENSSL_COMPILE_ASSERT(ERR_LIB_HMAC == 28, library_values_changed_28);
257        OPENSSL_COMPILE_ASSERT(ERR_LIB_DIGEST == 29, library_values_changed_29);
258        OPENSSL_COMPILE_ASSERT(ERR_LIB_CIPHER == 30, library_values_changed_30);
259        OPENSSL_COMPILE_ASSERT(ERR_LIB_HKDF == 31, library_values_changed_31);
260        OPENSSL_COMPILE_ASSERT(ERR_LIB_USER == 32, library_values_changed_32);
261        OPENSSL_COMPILE_ASSERT(ERR_NUM_LIBS == 33, library_values_changed_num);
262
263        const uint32_t kOpenSSLReasonValues[] = {
264            0xc320838,
265            0xc328852,
266            0xc330861,
267            0xc338871,
268            0xc340880,
269            0xc348899,
270            0xc3508a5,
271            0xc3588c2,
272            0xc3608e2,
273            0xc3688f0,
274            0xc370900,
275            0xc37890d,
276            0xc38091d,
277            0xc388928,
278            0xc39093e,
279            0xc39894d,
280            0xc3a0961,
281            0xc3a8845,
282            0xc3b00ea,
283            0xc3b88d4,
284            0x10320845,
285            0x10329513,
286            0x1033151f,
287            0x10339538,
288            0x1034154b,
289            0x10348eed,
290            0x10350c5e,
291            0x1035955e,
292            0x10361573,
293            0x10369586,
294            0x103715a5,
295            0x103795be,
296            0x103815d3,
297            0x103895f1,
298            0x10391600,
299            0x1039961c,
300            0x103a1637,
301            0x103a9646,
302            0x103b1662,
303            0x103b967d,
304            0x103c1694,
305            0x103c80ea,
306            0x103d16a5,
307            0x103d96b9,
308            0x103e16d8,
309            0x103e96e7,
310            0x103f16fe,
311            0x103f9711,
312            0x10400c22,
313            0x10409724,
314            0x10411742,
315            0x10419755,
316            0x1042176f,
317            0x1042977f,
318            0x10431793,
319            0x104397a9,
320            0x104417c1,
321            0x104497d6,
322            0x104517ea,
323            0x104597fc,
324            0x104605fb,
325            0x1046894d,
326            0x10471811,
327            0x10479828,
328            0x1048183d,
329            0x1048984b,
330            0x10490e4f,
331            0x14320c05,
332            0x14328c13,
333            0x14330c22,
334            0x14338c34,
335            0x143400ac,
336            0x143480ea,
337            0x18320083,
338            0x18328f43,
339            0x183300ac,
340            0x18338f59,
341            0x18340f6d,
342            0x183480ea,
343            0x18350f82,
344            0x18358f9a,
345            0x18360faf,
346            0x18368fc3,
347            0x18370fe7,
348            0x18378ffd,
349            0x18381011,
350            0x18389021,
351            0x18390a73,
352            0x18399031,
353            0x183a1059,
354            0x183a907f,
355            0x183b0c6a,
356            0x183b90b4,
357            0x183c10c6,
358            0x183c90d1,
359            0x183d10e1,
360            0x183d90f2,
361            0x183e1103,
362            0x183e9115,
363            0x183f113e,
364            0x183f9157,
365            0x1840116f,
366            0x184086d3,
367            0x184110a2,
368            0x1841906d,
369            0x1842108c,
370            0x18429046,
371            0x20321196,
372            0x243211a2,
373            0x24328993,
374            0x243311b4,
375            0x243391c1,
376            0x243411ce,
377            0x243491e0,
378            0x243511ef,
379            0x2435920c,
380            0x24361219,
381            0x24369227,
382            0x24371235,
383            0x24379243,
384            0x2438124c,
385            0x24389259,
386            0x2439126c,
387            0x28320c52,
388            0x28328c6a,
389            0x28330c22,
390            0x28338c7d,
391            0x28340c5e,
392            0x283480ac,
393            0x283500ea,
394            0x2c322c30,
395            0x2c329283,
396            0x2c332c3e,
397            0x2c33ac50,
398            0x2c342c64,
399            0x2c34ac76,
400            0x2c352c91,
401            0x2c35aca3,
402            0x2c362cb6,
403            0x2c36832d,
404            0x2c372cc3,
405            0x2c37acd5,
406            0x2c382cfa,
407            0x2c38ad11,
408            0x2c392d1f,
409            0x2c39ad2f,
410            0x2c3a2d41,
411            0x2c3aad55,
412            0x2c3b2d66,
413            0x2c3bad85,
414            0x2c3c1295,
415            0x2c3c92ab,
416            0x2c3d2d99,
417            0x2c3d92c4,
418            0x2c3e2db6,
419            0x2c3eadc4,
420            0x2c3f2ddc,
421            0x2c3fadf4,
422            0x2c402e01,
423            0x2c409196,
424            0x2c412e12,
425            0x2c41ae25,
426            0x2c42116f,
427            0x2c42ae36,
428            0x2c430720,
429            0x2c43ad77,
430            0x2c442ce8,
431            0x30320000,
432            0x30328015,
433            0x3033001f,
434            0x30338038,
435            0x3034004a,
436            0x30348064,
437            0x3035006b,
438            0x30358083,
439            0x30360094,
440            0x303680ac,
441            0x303700b9,
442            0x303780c8,
443            0x303800ea,
444            0x303880f7,
445            0x3039010a,
446            0x30398125,
447            0x303a013a,
448            0x303a814e,
449            0x303b0162,
450            0x303b8173,
451            0x303c018c,
452            0x303c81a9,
453            0x303d01b7,
454            0x303d81cb,
455            0x303e01db,
456            0x303e81f4,
457            0x303f0204,
458            0x303f8217,
459            0x30400226,
460            0x30408232,
461            0x30410247,
462            0x30418257,
463            0x3042026e,
464            0x3042827b,
465            0x3043028e,
466            0x3043829d,
467            0x304402b2,
468            0x304482d3,
469            0x304502e6,
470            0x304582f9,
471            0x30460312,
472            0x3046832d,
473            0x3047034a,
474            0x30478363,
475            0x30480371,
476            0x30488382,
477            0x30490391,
478            0x304983a9,
479            0x304a03bb,
480            0x304a83cf,
481            0x304b03ee,
482            0x304b8401,
483            0x304c040c,
484            0x304c841d,
485            0x304d0429,
486            0x304d843f,
487            0x304e044d,
488            0x304e8463,
489            0x304f0475,
490            0x304f8487,
491            0x3050049a,
492            0x305084ad,
493            0x305104be,
494            0x305184ce,
495            0x305204e6,
496            0x305284fb,
497            0x30530513,
498            0x30538527,
499            0x3054053f,
500            0x30548558,
501            0x30550571,
502            0x3055858e,
503            0x30560599,
504            0x305685b1,
505            0x305705c1,
506            0x305785d2,
507            0x305805e5,
508            0x305885fb,
509            0x30590604,
510            0x30598619,
511            0x305a062c,
512            0x305a863b,
513            0x305b065b,
514            0x305b866a,
515            0x305c068b,
516            0x305c86a7,
517            0x305d06b3,
518            0x305d86d3,
519            0x305e06ef,
520            0x305e8700,
521            0x305f0716,
522            0x305f8720,
523            0x34320b63,
524            0x34328b77,
525            0x34330b94,
526            0x34338ba7,
527            0x34340bb6,
528            0x34348bef,
529            0x34350bd3,
530            0x3c320083,
531            0x3c328ca7,
532            0x3c330cc0,
533            0x3c338cdb,
534            0x3c340cf8,
535            0x3c348d22,
536            0x3c350d3d,
537            0x3c358d63,
538            0x3c360d7c,
539            0x3c368d94,
540            0x3c370da5,
541            0x3c378db3,
542            0x3c380dc0,
543            0x3c388dd4,
544            0x3c390c6a,
545            0x3c398de8,
546            0x3c3a0dfc,
547            0x3c3a890d,
548            0x3c3b0e0c,
549            0x3c3b8e27,
550            0x3c3c0e39,
551            0x3c3c8e6c,
552            0x3c3d0e76,
553            0x3c3d8e8a,
554            0x3c3e0e98,
555            0x3c3e8ebd,
556            0x3c3f0c93,
557            0x3c3f8ea6,
558            0x3c4000ac,
559            0x3c4080ea,
560            0x3c410d13,
561            0x3c418d52,
562            0x3c420e4f,
563            0x403218a4,
564            0x403298ba,
565            0x403318e8,
566            0x403398f2,
567            0x40341909,
568            0x40349927,
569            0x40351937,
570            0x40359949,
571            0x40361956,
572            0x40369962,
573            0x40371977,
574            0x40379989,
575            0x40381994,
576            0x403899a6,
577            0x40390eed,
578            0x403999b6,
579            0x403a19c9,
580            0x403a99ea,
581            0x403b19fb,
582            0x403b9a0b,
583            0x403c0064,
584            0x403c8083,
585            0x403d1a8f,
586            0x403d9aa5,
587            0x403e1ab4,
588            0x403e9aec,
589            0x403f1b06,
590            0x403f9b14,
591            0x40401b29,
592            0x40409b3d,
593            0x40411b5a,
594            0x40419b75,
595            0x40421b8e,
596            0x40429ba1,
597            0x40431bb5,
598            0x40439bcd,
599            0x40441be4,
600            0x404480ac,
601            0x40451bf9,
602            0x40459c0b,
603            0x40461c2f,
604            0x40469c4f,
605            0x40471c5d,
606            0x40479c84,
607            0x40481cc1,
608            0x40489cda,
609            0x40491cf1,
610            0x40499d0b,
611            0x404a1d22,
612            0x404a9d40,
613            0x404b1d58,
614            0x404b9d6f,
615            0x404c1d85,
616            0x404c9d97,
617            0x404d1db8,
618            0x404d9dda,
619            0x404e1dee,
620            0x404e9dfb,
621            0x404f1e28,
622            0x404f9e51,
623            0x40501e8c,
624            0x40509ea0,
625            0x40511ebb,
626            0x40521ecb,
627            0x40529eef,
628            0x40531f07,
629            0x40539f1a,
630            0x40541f2f,
631            0x40549f52,
632            0x40551f60,
633            0x40559f7d,
634            0x40561f8a,
635            0x40569fa3,
636            0x40571fbb,
637            0x40579fce,
638            0x40581fe3,
639            0x4058a00a,
640            0x40592039,
641            0x4059a066,
642            0x405a207a,
643            0x405aa08a,
644            0x405b20a2,
645            0x405ba0b3,
646            0x405c20c6,
647            0x405ca105,
648            0x405d2112,
649            0x405da129,
650            0x405e2167,
651            0x405e8ab1,
652            0x405f2188,
653            0x405fa195,
654            0x406021a3,
655            0x4060a1c5,
656            0x40612209,
657            0x4061a241,
658            0x40622258,
659            0x4062a269,
660            0x4063227a,
661            0x4063a28f,
662            0x406422a6,
663            0x4064a2d2,
664            0x406522ed,
665            0x4065a304,
666            0x4066231c,
667            0x4066a346,
668            0x40672371,
669            0x4067a392,
670            0x406823b9,
671            0x4068a3da,
672            0x4069240c,
673            0x4069a43a,
674            0x406a245b,
675            0x406aa47b,
676            0x406b2603,
677            0x406ba626,
678            0x406c263c,
679            0x406ca8b7,
680            0x406d28e6,
681            0x406da90e,
682            0x406e293c,
683            0x406ea989,
684            0x406f29a8,
685            0x406fa9e0,
686            0x407029f3,
687            0x4070aa10,
688            0x40710800,
689            0x4071aa22,
690            0x40722a35,
691            0x4072aa4e,
692            0x40732a66,
693            0x40739482,
694            0x40742a7a,
695            0x4074aa94,
696            0x40752aa5,
697            0x4075aab9,
698            0x40762ac7,
699            0x40769259,
700            0x40772aec,
701            0x4077ab0e,
702            0x40782b29,
703            0x4078ab62,
704            0x40792b79,
705            0x4079ab8f,
706            0x407a2b9b,
707            0x407aabae,
708            0x407b2bc3,
709            0x407babd5,
710            0x407c2c06,
711            0x407cac0f,
712            0x407d23f5,
713            0x407d9e61,
714            0x407e2b3e,
715            0x407ea01a,
716            0x407f1c71,
717            0x407f9a31,
718            0x40801e38,
719            0x40809c99,
720            0x40811edd,
721            0x40819e12,
722            0x40822927,
723            0x40829a17,
724            0x40831ff5,
725            0x4083a2b7,
726            0x40841cad,
727            0x4084a052,
728            0x408520d7,
729            0x4085a1ed,
730            0x40862149,
731            0x40869e7b,
732            0x4087296d,
733            0x4087a21e,
734            0x40881a78,
735            0x4088a3a5,
736            0x40891ac7,
737            0x40899a54,
738            0x408a265c,
739            0x408a9862,
740            0x408b2bea,
741            0x408ba9bd,
742            0x408c20e7,
743            0x408c987e,
744            0x41f4252e,
745            0x41f925c0,
746            0x41fe24b3,
747            0x41fea6a8,
748            0x41ff2799,
749            0x42032547,
750            0x42082569,
751            0x4208a5a5,
752            0x42092497,
753            0x4209a5df,
754            0x420a24ee,
755            0x420aa4ce,
756            0x420b250e,
757            0x420ba587,
758            0x420c27b5,
759            0x420ca675,
760            0x420d268f,
761            0x420da6c6,
762            0x421226e0,
763            0x4217277c,
764            0x4217a722,
765            0x421c2744,
766            0x421f26ff,
767            0x422127cc,
768            0x4226275f,
769            0x422b289b,
770            0x422ba849,
771            0x422c2883,
772            0x422ca808,
773            0x422d27e7,
774            0x422da868,
775            0x422e282e,
776            0x422ea954,
777            0x4432072b,
778            0x4432873a,
779            0x44330746,
780            0x44338754,
781            0x44340767,
782            0x44348778,
783            0x4435077f,
784            0x44358789,
785            0x4436079c,
786            0x443687b2,
787            0x443707c4,
788            0x443787d1,
789            0x443807e0,
790            0x443887e8,
791            0x44390800,
792            0x4439880e,
793            0x443a0821,
794            0x48321283,
795            0x48329295,
796            0x483312ab,
797            0x483392c4,
798            0x4c3212e9,
799            0x4c3292f9,
800            0x4c33130c,
801            0x4c33932c,
802            0x4c3400ac,
803            0x4c3480ea,
804            0x4c351338,
805            0x4c359346,
806            0x4c361362,
807            0x4c369375,
808            0x4c371384,
809            0x4c379392,
810            0x4c3813a7,
811            0x4c3893b3,
812            0x4c3913d3,
813            0x4c3993fd,
814            0x4c3a1416,
815            0x4c3a942f,
816            0x4c3b05fb,
817            0x4c3b9448,
818            0x4c3c145a,
819            0x4c3c9469,
820            0x4c3d1482,
821            0x4c3d8c45,
822            0x4c3e14db,
823            0x4c3e9491,
824            0x4c3f14fd,
825            0x4c3f9259,
826            0x4c4014a7,
827            0x4c4092d5,
828            0x4c4114cb,
829            0x50322e48,
830            0x5032ae57,
831            0x50332e62,
832            0x5033ae72,
833            0x50342e8b,
834            0x5034aea5,
835            0x50352eb3,
836            0x5035aec9,
837            0x50362edb,
838            0x5036aef1,
839            0x50372f0a,
840            0x5037af1d,
841            0x50382f35,
842            0x5038af46,
843            0x50392f5b,
844            0x5039af6f,
845            0x503a2f8f,
846            0x503aafa5,
847            0x503b2fbd,
848            0x503bafcf,
849            0x503c2feb,
850            0x503cb002,
851            0x503d301b,
852            0x503db031,
853            0x503e303e,
854            0x503eb054,
855            0x503f3066,
856            0x503f8382,
857            0x50403079,
858            0x5040b089,
859            0x504130a3,
860            0x5041b0b2,
861            0x504230cc,
862            0x5042b0e9,
863            0x504330f9,
864            0x5043b109,
865            0x50443118,
866            0x5044843f,
867            0x5045312c,
868            0x5045b14a,
869            0x5046315d,
870            0x5046b173,
871            0x50473185,
872            0x5047b19a,
873            0x504831c0,
874            0x5048b1ce,
875            0x504931e1,
876            0x5049b1f6,
877            0x504a320c,
878            0x504ab21c,
879            0x504b323c,
880            0x504bb24f,
881            0x504c3272,
882            0x504cb2a0,
883            0x504d32b2,
884            0x504db2cf,
885            0x504e32ea,
886            0x504eb306,
887            0x504f3318,
888            0x504fb32f,
889            0x5050333e,
890            0x505086ef,
891            0x50513351,
892            0x58320f2b,
893            0x68320eed,
894            0x68328c6a,
895            0x68330c7d,
896            0x68338efb,
897            0x68340f0b,
898            0x683480ea,
899            0x6c320ec9,
900            0x6c328c34,
901            0x6c330ed4,
902            0x74320a19,
903            0x743280ac,
904            0x74330c45,
905            0x7832097e,
906            0x78328993,
907            0x7833099f,
908            0x78338083,
909            0x783409ae,
910            0x783489c3,
911            0x783509e2,
912            0x78358a04,
913            0x78360a19,
914            0x78368a2f,
915            0x78370a3f,
916            0x78378a60,
917            0x78380a73,
918            0x78388a85,
919            0x78390a92,
920            0x78398ab1,
921            0x783a0ac6,
922            0x783a8ad4,
923            0x783b0ade,
924            0x783b8af2,
925            0x783c0b09,
926            0x783c8b1e,
927            0x783d0b35,
928            0x783d8b4a,
929            0x783e0aa0,
930            0x783e8a52,
931            0x7c321185,
932        };
933
934        const size_t kOpenSSLReasonValuesLen = sizeof(kOpenSSLReasonValues) / sizeof(kOpenSSLReasonValues[0]);
935
936        const char kOpenSSLReasonStringData[] =
937            "ASN1_LENGTH_MISMATCH\\0"
938            "AUX_ERROR\\0"
939            "BAD_GET_ASN1_OBJECT_CALL\\0"
940            "BAD_OBJECT_HEADER\\0"
941            "BMPSTRING_IS_WRONG_LENGTH\\0"
942            "BN_LIB\\0"
943            "BOOLEAN_IS_WRONG_LENGTH\\0"
944            "BUFFER_TOO_SMALL\\0"
945            "CONTEXT_NOT_INITIALISED\\0"
946            "DECODE_ERROR\\0"
947            "DEPTH_EXCEEDED\\0"
948            "DIGEST_AND_KEY_TYPE_NOT_SUPPORTED\\0"
949            "ENCODE_ERROR\\0"
950            "ERROR_GETTING_TIME\\0"
951            "EXPECTING_AN_ASN1_SEQUENCE\\0"
952            "EXPECTING_AN_INTEGER\\0"
953            "EXPECTING_AN_OBJECT\\0"
954            "EXPECTING_A_BOOLEAN\\0"
955            "EXPECTING_A_TIME\\0"
956            "EXPLICIT_LENGTH_MISMATCH\\0"
957            "EXPLICIT_TAG_NOT_CONSTRUCTED\\0"
958            "FIELD_MISSING\\0"
959            "FIRST_NUM_TOO_LARGE\\0"
960            "HEADER_TOO_LONG\\0"
961            "ILLEGAL_BITSTRING_FORMAT\\0"
962            "ILLEGAL_BOOLEAN\\0"
963            "ILLEGAL_CHARACTERS\\0"
964            "ILLEGAL_FORMAT\\0"
965            "ILLEGAL_HEX\\0"
966            "ILLEGAL_IMPLICIT_TAG\\0"
967            "ILLEGAL_INTEGER\\0"
968            "ILLEGAL_NESTED_TAGGING\\0"
969            "ILLEGAL_NULL\\0"
970            "ILLEGAL_NULL_VALUE\\0"
971            "ILLEGAL_OBJECT\\0"
972            "ILLEGAL_OPTIONAL_ANY\\0"
973            "ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE\\0"
974            "ILLEGAL_TAGGED_ANY\\0"
975            "ILLEGAL_TIME_VALUE\\0"
976            "INTEGER_NOT_ASCII_FORMAT\\0"
977            "INTEGER_TOO_LARGE_FOR_LONG\\0"
978            "INVALID_BIT_STRING_BITS_LEFT\\0"
979            "INVALID_BMPSTRING_LENGTH\\0"
980            "INVALID_DIGIT\\0"
981            "INVALID_MODIFIER\\0"
982            "INVALID_NUMBER\\0"
983            "INVALID_OBJECT_ENCODING\\0"
984            "INVALID_SEPARATOR\\0"
985            "INVALID_TIME_FORMAT\\0"
986            "INVALID_UNIVERSALSTRING_LENGTH\\0"
987            "INVALID_UTF8STRING\\0"
988            "LIST_ERROR\\0"
989            "MISSING_ASN1_EOS\\0"
990            "MISSING_EOC\\0"
991            "MISSING_SECOND_NUMBER\\0"
992            "MISSING_VALUE\\0"
993            "MSTRING_NOT_UNIVERSAL\\0"
994            "MSTRING_WRONG_TAG\\0"
995            "NESTED_ASN1_ERROR\\0"
996            "NESTED_ASN1_STRING\\0"
997            "NON_HEX_CHARACTERS\\0"
998            "NOT_ASCII_FORMAT\\0"
999            "NOT_ENOUGH_DATA\\0"
1000            "NO_MATCHING_CHOICE_TYPE\\0"
1001            "NULL_IS_WRONG_LENGTH\\0"
1002            "OBJECT_NOT_ASCII_FORMAT\\0"
1003            "ODD_NUMBER_OF_CHARS\\0"
1004            "SECOND_NUMBER_TOO_LARGE\\0"
1005            "SEQUENCE_LENGTH_MISMATCH\\0"
1006            "SEQUENCE_NOT_CONSTRUCTED\\0"
1007            "SEQUENCE_OR_SET_NEEDS_CONFIG\\0"
1008            "SHORT_LINE\\0"
1009            "STREAMING_NOT_SUPPORTED\\0"
1010            "STRING_TOO_LONG\\0"
1011            "STRING_TOO_SHORT\\0"
1012            "TAG_VALUE_TOO_HIGH\\0"
1013            "TIME_NOT_ASCII_FORMAT\\0"
1014            "TOO_LONG\\0"
1015            "TYPE_NOT_CONSTRUCTED\\0"
1016            "TYPE_NOT_PRIMITIVE\\0"
1017            "UNEXPECTED_EOC\\0"
1018            "UNIVERSALSTRING_IS_WRONG_LENGTH\\0"
1019            "UNKNOWN_FORMAT\\0"
1020            "UNKNOWN_MESSAGE_DIGEST_ALGORITHM\\0"
1021            "UNKNOWN_SIGNATURE_ALGORITHM\\0"
1022            "UNKNOWN_TAG\\0"
1023            "UNSUPPORTED_ANY_DEFINED_BY_TYPE\\0"
1024            "UNSUPPORTED_PUBLIC_KEY_TYPE\\0"
1025            "UNSUPPORTED_TYPE\\0"
1026            "WRONG_PUBLIC_KEY_TYPE\\0"
1027            "WRONG_TAG\\0"
1028            "WRONG_TYPE\\0"
1029            "BAD_FOPEN_MODE\\0"
1030            "BROKEN_PIPE\\0"
1031            "CONNECT_ERROR\\0"
1032            "ERROR_SETTING_NBIO\\0"
1033            "INVALID_ARGUMENT\\0"
1034            "IN_USE\\0"
1035            "KEEPALIVE\\0"
1036            "NBIO_CONNECT_ERROR\\0"
1037            "NO_HOSTNAME_SPECIFIED\\0"
1038            "NO_PORT_SPECIFIED\\0"
1039            "NO_SUCH_FILE\\0"
1040            "NULL_PARAMETER\\0"
1041            "SYS_LIB\\0"
1042            "UNABLE_TO_CREATE_SOCKET\\0"
1043            "UNINITIALIZED\\0"
1044            "UNSUPPORTED_METHOD\\0"
1045            "WRITE_TO_READ_ONLY_BIO\\0"
1046            "ARG2_LT_ARG3\\0"
1047            "BAD_ENCODING\\0"
1048            "BAD_RECIPROCAL\\0"
1049            "BIGNUM_TOO_LONG\\0"
1050            "BITS_TOO_SMALL\\0"
1051            "CALLED_WITH_EVEN_MODULUS\\0"
1052            "DIV_BY_ZERO\\0"
1053            "EXPAND_ON_STATIC_BIGNUM_DATA\\0"
1054            "INPUT_NOT_REDUCED\\0"
1055            "INVALID_INPUT\\0"
1056            "INVALID_RANGE\\0"
1057            "NEGATIVE_NUMBER\\0"
1058            "NOT_A_SQUARE\\0"
1059            "NOT_INITIALIZED\\0"
1060            "NO_INVERSE\\0"
1061            "PRIVATE_KEY_TOO_LARGE\\0"
1062            "P_IS_NOT_PRIME\\0"
1063            "TOO_MANY_ITERATIONS\\0"
1064            "TOO_MANY_TEMPORARY_VARIABLES\\0"
1065            "AES_KEY_SETUP_FAILED\\0"
1066            "BAD_DECRYPT\\0"
1067            "BAD_KEY_LENGTH\\0"
1068            "CTRL_NOT_IMPLEMENTED\\0"
1069            "CTRL_OPERATION_NOT_IMPLEMENTED\\0"
1070            "DATA_NOT_MULTIPLE_OF_BLOCK_LENGTH\\0"
1071            "INITIALIZATION_ERROR\\0"
1072            "INPUT_NOT_INITIALIZED\\0"
1073            "INVALID_AD_SIZE\\0"
1074            "INVALID_KEY_LENGTH\\0"
1075            "INVALID_NONCE\\0"
1076            "INVALID_NONCE_SIZE\\0"
1077            "INVALID_OPERATION\\0"
1078            "IV_TOO_LARGE\\0"
1079            "NO_CIPHER_SET\\0"
1080            "NO_DIRECTION_SET\\0"
1081            "OUTPUT_ALIASES_INPUT\\0"
1082            "TAG_TOO_LARGE\\0"
1083            "TOO_LARGE\\0"
1084            "UNSUPPORTED_AD_SIZE\\0"
1085            "UNSUPPORTED_INPUT_SIZE\\0"
1086            "UNSUPPORTED_KEY_SIZE\\0"
1087            "UNSUPPORTED_NONCE_SIZE\\0"
1088            "UNSUPPORTED_TAG_SIZE\\0"
1089            "WRONG_FINAL_BLOCK_LENGTH\\0"
1090            "LIST_CANNOT_BE_NULL\\0"
1091            "MISSING_CLOSE_SQUARE_BRACKET\\0"
1092            "MISSING_EQUAL_SIGN\\0"
1093            "NO_CLOSE_BRACE\\0"
1094            "UNABLE_TO_CREATE_NEW_SECTION\\0"
1095            "VARIABLE_EXPANSION_TOO_LONG\\0"
1096            "VARIABLE_HAS_NO_VALUE\\0"
1097            "BAD_GENERATOR\\0"
1098            "INVALID_PUBKEY\\0"
1099            "MODULUS_TOO_LARGE\\0"
1100            "NO_PRIVATE_VALUE\\0"
1101            "UNKNOWN_HASH\\0"
1102            "BAD_Q_VALUE\\0"
1103            "BAD_VERSION\\0"
1104            "MISSING_PARAMETERS\\0"
1105            "NEED_NEW_SETUP_VALUES\\0"
1106            "BIGNUM_OUT_OF_RANGE\\0"
1107            "COORDINATES_OUT_OF_RANGE\\0"
1108            "D2I_ECPKPARAMETERS_FAILURE\\0"
1109            "EC_GROUP_NEW_BY_NAME_FAILURE\\0"
1110            "GROUP2PKPARAMETERS_FAILURE\\0"
1111            "GROUP_MISMATCH\\0"
1112            "I2D_ECPKPARAMETERS_FAILURE\\0"
1113            "INCOMPATIBLE_OBJECTS\\0"
1114            "INVALID_COFACTOR\\0"
1115            "INVALID_COMPRESSED_POINT\\0"
1116            "INVALID_COMPRESSION_BIT\\0"
1117            "INVALID_ENCODING\\0"
1118            "INVALID_FIELD\\0"
1119            "INVALID_FORM\\0"
1120            "INVALID_GROUP_ORDER\\0"
1121            "INVALID_PRIVATE_KEY\\0"
1122            "MISSING_PRIVATE_KEY\\0"
1123            "NON_NAMED_CURVE\\0"
1124            "PKPARAMETERS2GROUP_FAILURE\\0"
1125            "POINT_AT_INFINITY\\0"
1126            "POINT_IS_NOT_ON_CURVE\\0"
1127            "PUBLIC_KEY_VALIDATION_FAILED\\0"
1128            "SLOT_FULL\\0"
1129            "UNDEFINED_GENERATOR\\0"
1130            "UNKNOWN_GROUP\\0"
1131            "UNKNOWN_ORDER\\0"
1132            "WRONG_CURVE_PARAMETERS\\0"
1133            "WRONG_ORDER\\0"
1134            "KDF_FAILED\\0"
1135            "POINT_ARITHMETIC_FAILURE\\0"
1136            "BAD_SIGNATURE\\0"
1137            "NOT_IMPLEMENTED\\0"
1138            "RANDOM_NUMBER_GENERATION_FAILED\\0"
1139            "OPERATION_NOT_SUPPORTED\\0"
1140            "COMMAND_NOT_SUPPORTED\\0"
1141            "DIFFERENT_KEY_TYPES\\0"
1142            "DIFFERENT_PARAMETERS\\0"
1143            "EXPECTING_AN_EC_KEY_KEY\\0"
1144            "EXPECTING_AN_RSA_KEY\\0"
1145            "EXPECTING_A_DSA_KEY\\0"
1146            "ILLEGAL_OR_UNSUPPORTED_PADDING_MODE\\0"
1147            "INVALID_DIGEST_LENGTH\\0"
1148            "INVALID_DIGEST_TYPE\\0"
1149            "INVALID_KEYBITS\\0"
1150            "INVALID_MGF1_MD\\0"
1151            "INVALID_PADDING_MODE\\0"
1152            "INVALID_PARAMETERS\\0"
1153            "INVALID_PSS_SALTLEN\\0"
1154            "INVALID_SIGNATURE\\0"
1155            "KEYS_NOT_SET\\0"
1156            "MEMORY_LIMIT_EXCEEDED\\0"
1157            "NOT_A_PRIVATE_KEY\\0"
1158            "NO_DEFAULT_DIGEST\\0"
1159            "NO_KEY_SET\\0"
1160            "NO_MDC2_SUPPORT\\0"
1161            "NO_NID_FOR_CURVE\\0"
1162            "NO_OPERATION_SET\\0"
1163            "NO_PARAMETERS_SET\\0"
1164            "OPERATION_NOT_SUPPORTED_FOR_THIS_KEYTYPE\\0"
1165            "OPERATON_NOT_INITIALIZED\\0"
1166            "UNKNOWN_PUBLIC_KEY_TYPE\\0"
1167            "UNSUPPORTED_ALGORITHM\\0"
1168            "OUTPUT_TOO_LARGE\\0"
1169            "UNKNOWN_NID\\0"
1170            "BAD_BASE64_DECODE\\0"
1171            "BAD_END_LINE\\0"
1172            "BAD_IV_CHARS\\0"
1173            "BAD_PASSWORD_READ\\0"
1174            "CIPHER_IS_NULL\\0"
1175            "ERROR_CONVERTING_PRIVATE_KEY\\0"
1176            "NOT_DEK_INFO\\0"
1177            "NOT_ENCRYPTED\\0"
1178            "NOT_PROC_TYPE\\0"
1179            "NO_START_LINE\\0"
1180            "READ_KEY\\0"
1181            "SHORT_HEADER\\0"
1182            "UNSUPPORTED_CIPHER\\0"
1183            "UNSUPPORTED_ENCRYPTION\\0"
1184            "BAD_PKCS7_VERSION\\0"
1185            "NOT_PKCS7_SIGNED_DATA\\0"
1186            "NO_CERTIFICATES_INCLUDED\\0"
1187            "NO_CRLS_INCLUDED\\0"
1188            "BAD_ITERATION_COUNT\\0"
1189            "BAD_PKCS12_DATA\\0"
1190            "BAD_PKCS12_VERSION\\0"
1191            "CIPHER_HAS_NO_OBJECT_IDENTIFIER\\0"
1192            "CRYPT_ERROR\\0"
1193            "ENCRYPT_ERROR\\0"
1194            "ERROR_SETTING_CIPHER_PARAMS\\0"
1195            "INCORRECT_PASSWORD\\0"
1196            "KEYGEN_FAILURE\\0"
1197            "KEY_GEN_ERROR\\0"
1198            "METHOD_NOT_SUPPORTED\\0"
1199            "MISSING_MAC\\0"
1200            "MULTIPLE_PRIVATE_KEYS_IN_PKCS12\\0"
1201            "PKCS12_PUBLIC_KEY_INTEGRITY_NOT_SUPPORTED\\0"
1202            "PKCS12_TOO_DEEPLY_NESTED\\0"
1203            "PRIVATE_KEY_DECODE_ERROR\\0"
1204            "PRIVATE_KEY_ENCODE_ERROR\\0"
1205            "UNKNOWN_ALGORITHM\\0"
1206            "UNKNOWN_CIPHER\\0"
1207            "UNKNOWN_CIPHER_ALGORITHM\\0"
1208            "UNKNOWN_DIGEST\\0"
1209            "UNSUPPORTED_KEYLENGTH\\0"
1210            "UNSUPPORTED_KEY_DERIVATION_FUNCTION\\0"
1211            "UNSUPPORTED_PRF\\0"
1212            "UNSUPPORTED_PRIVATE_KEY_ALGORITHM\\0"
1213            "UNSUPPORTED_SALT_TYPE\\0"
1214            "BAD_E_VALUE\\0"
1215            "BAD_FIXED_HEADER_DECRYPT\\0"
1216            "BAD_PAD_BYTE_COUNT\\0"
1217            "BAD_RSA_PARAMETERS\\0"
1218            "BLOCK_TYPE_IS_NOT_01\\0"
1219            "BN_NOT_INITIALIZED\\0"
1220            "CANNOT_RECOVER_MULTI_PRIME_KEY\\0"
1221            "CRT_PARAMS_ALREADY_GIVEN\\0"
1222            "CRT_VALUES_INCORRECT\\0"
1223            "DATA_LEN_NOT_EQUAL_TO_MOD_LEN\\0"
1224            "DATA_TOO_LARGE\\0"
1225            "DATA_TOO_LARGE_FOR_KEY_SIZE\\0"
1226            "DATA_TOO_LARGE_FOR_MODULUS\\0"
1227            "DATA_TOO_SMALL\\0"
1228            "DATA_TOO_SMALL_FOR_KEY_SIZE\\0"
1229            "DIGEST_TOO_BIG_FOR_RSA_KEY\\0"
1230            "D_E_NOT_CONGRUENT_TO_1\\0"
1231            "EMPTY_PUBLIC_KEY\\0"
1232            "FIRST_OCTET_INVALID\\0"
1233            "INCONSISTENT_SET_OF_CRT_VALUES\\0"
1234            "INTERNAL_ERROR\\0"
1235            "INVALID_MESSAGE_LENGTH\\0"
1236            "KEY_SIZE_TOO_SMALL\\0"
1237            "LAST_OCTET_INVALID\\0"
1238            "MUST_HAVE_AT_LEAST_TWO_PRIMES\\0"
1239            "NO_PUBLIC_EXPONENT\\0"
1240            "NULL_BEFORE_BLOCK_MISSING\\0"
1241            "N_NOT_EQUAL_P_Q\\0"
1242            "OAEP_DECODING_ERROR\\0"
1243            "ONLY_ONE_OF_P_Q_GIVEN\\0"
1244            "OUTPUT_BUFFER_TOO_SMALL\\0"
1245            "PADDING_CHECK_FAILED\\0"
1246            "PKCS_DECODING_ERROR\\0"
1247            "SLEN_CHECK_FAILED\\0"
1248            "SLEN_RECOVERY_FAILED\\0"
1249            "UNKNOWN_ALGORITHM_TYPE\\0"
1250            "UNKNOWN_PADDING_TYPE\\0"
1251            "VALUE_MISSING\\0"
1252            "WRONG_SIGNATURE_LENGTH\\0"
1253            "ALPN_MISMATCH_ON_EARLY_DATA\\0"
1254            "APPLICATION_DATA_INSTEAD_OF_HANDSHAKE\\0"
1255            "APP_DATA_IN_HANDSHAKE\\0"
1256            "ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT\\0"
1257            "BAD_ALERT\\0"
1258            "BAD_CHANGE_CIPHER_SPEC\\0"
1259            "BAD_DATA_RETURNED_BY_CALLBACK\\0"
1260            "BAD_DH_P_LENGTH\\0"
1261            "BAD_DIGEST_LENGTH\\0"
1262            "BAD_ECC_CERT\\0"
1263            "BAD_ECPOINT\\0"
1264            "BAD_HANDSHAKE_RECORD\\0"
1265            "BAD_HELLO_REQUEST\\0"
1266            "BAD_LENGTH\\0"
1267            "BAD_PACKET_LENGTH\\0"
1268            "BAD_RSA_ENCRYPT\\0"
1269            "BAD_SRTP_MKI_VALUE\\0"
1270            "BAD_SRTP_PROTECTION_PROFILE_LIST\\0"
1271            "BAD_SSL_FILETYPE\\0"
1272            "BAD_WRITE_RETRY\\0"
1273            "BIO_NOT_SET\\0"
1274            "BLOCK_CIPHER_PAD_IS_WRONG\\0"
1275            "BUFFERED_MESSAGES_ON_CIPHER_CHANGE\\0"
1276            "CANNOT_HAVE_BOTH_PRIVKEY_AND_METHOD\\0"
1277            "CANNOT_PARSE_LEAF_CERT\\0"
1278            "CA_DN_LENGTH_MISMATCH\\0"
1279            "CA_DN_TOO_LONG\\0"
1280            "CCS_RECEIVED_EARLY\\0"
1281            "CERTIFICATE_AND_PRIVATE_KEY_MISMATCH\\0"
1282            "CERTIFICATE_VERIFY_FAILED\\0"
1283            "CERT_CB_ERROR\\0"
1284            "CERT_LENGTH_MISMATCH\\0"
1285            "CHANNEL_ID_NOT_P256\\0"
1286            "CHANNEL_ID_SIGNATURE_INVALID\\0"
1287            "CIPHER_OR_HASH_UNAVAILABLE\\0"
1288            "CLIENTHELLO_PARSE_FAILED\\0"
1289            "CLIENTHELLO_TLSEXT\\0"
1290            "CONNECTION_REJECTED\\0"
1291            "CONNECTION_TYPE_NOT_SET\\0"
1292            "CUSTOM_EXTENSION_ERROR\\0"
1293            "DATA_LENGTH_TOO_LONG\\0"
1294            "DECRYPTION_FAILED\\0"
1295            "DECRYPTION_FAILED_OR_BAD_RECORD_MAC\\0"
1296            "DH_PUBLIC_VALUE_LENGTH_IS_WRONG\\0"
1297            "DH_P_TOO_LONG\\0"
1298            "DIGEST_CHECK_FAILED\\0"
1299            "DOWNGRADE_DETECTED\\0"
1300            "DTLS_MESSAGE_TOO_BIG\\0"
1301            "DUPLICATE_EXTENSION\\0"
1302            "DUPLICATE_KEY_SHARE\\0"
1303            "ECC_CERT_NOT_FOR_SIGNING\\0"
1304            "EMS_STATE_INCONSISTENT\\0"
1305            "ENCRYPTED_LENGTH_TOO_LONG\\0"
1306            "ERROR_ADDING_EXTENSION\\0"
1307            "ERROR_IN_RECEIVED_CIPHER_LIST\\0"
1308            "ERROR_PARSING_EXTENSION\\0"
1309            "EXCESSIVE_MESSAGE_SIZE\\0"
1310            "EXTRA_DATA_IN_MESSAGE\\0"
1311            "FRAGMENT_MISMATCH\\0"
1312            "GOT_NEXT_PROTO_WITHOUT_EXTENSION\\0"
1313            "HANDSHAKE_FAILURE_ON_CLIENT_HELLO\\0"
1314            "HTTPS_PROXY_REQUEST\\0"
1315            "HTTP_REQUEST\\0"
1316            "INAPPROPRIATE_FALLBACK\\0"
1317            "INVALID_ALPN_PROTOCOL\\0"
1318            "INVALID_COMMAND\\0"
1319            "INVALID_COMPRESSION_LIST\\0"
1320            "INVALID_MESSAGE\\0"
1321            "INVALID_OUTER_RECORD_TYPE\\0"
1322            "INVALID_SCT_LIST\\0"
1323            "INVALID_SSL_SESSION\\0"
1324            "INVALID_TICKET_KEYS_LENGTH\\0"
1325            "LENGTH_MISMATCH\\0"
1326            "MISSING_EXTENSION\\0"
1327            "MISSING_KEY_SHARE\\0"
1328            "MISSING_RSA_CERTIFICATE\\0"
1329            "MISSING_TMP_DH_KEY\\0"
1330            "MISSING_TMP_ECDH_KEY\\0"
1331            "MIXED_SPECIAL_OPERATOR_WITH_GROUPS\\0"
1332            "MTU_TOO_SMALL\\0"
1333            "NEGOTIATED_BOTH_NPN_AND_ALPN\\0"
1334            "NESTED_GROUP\\0"
1335            "NO_CERTIFICATES_RETURNED\\0"
1336            "NO_CERTIFICATE_ASSIGNED\\0"
1337            "NO_CERTIFICATE_SET\\0"
1338            "NO_CIPHERS_AVAILABLE\\0"
1339            "NO_CIPHERS_PASSED\\0"
1340            "NO_CIPHERS_SPECIFIED\\0"
1341            "NO_CIPHER_MATCH\\0"
1342            "NO_COMMON_SIGNATURE_ALGORITHMS\\0"
1343            "NO_COMPRESSION_SPECIFIED\\0"
1344            "NO_GROUPS_SPECIFIED\\0"
1345            "NO_METHOD_SPECIFIED\\0"
1346            "NO_P256_SUPPORT\\0"
1347            "NO_PRIVATE_KEY_ASSIGNED\\0"
1348            "NO_RENEGOTIATION\\0"
1349            "NO_REQUIRED_DIGEST\\0"
1350            "NO_SHARED_CIPHER\\0"
1351            "NO_SHARED_GROUP\\0"
1352            "NO_SUPPORTED_VERSIONS_ENABLED\\0"
1353            "NULL_SSL_CTX\\0"
1354            "NULL_SSL_METHOD_PASSED\\0"
1355            "OLD_SESSION_CIPHER_NOT_RETURNED\\0"
1356            "OLD_SESSION_PRF_HASH_MISMATCH\\0"
1357            "OLD_SESSION_VERSION_NOT_RETURNED\\0"
1358            "PARSE_TLSEXT\\0"
1359            "PATH_TOO_LONG\\0"
1360            "PEER_DID_NOT_RETURN_A_CERTIFICATE\\0"
1361            "PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE\\0"
1362            "PRE_SHARED_KEY_MUST_BE_LAST\\0"
1363            "PROTOCOL_IS_SHUTDOWN\\0"
1364            "PSK_IDENTITY_BINDER_COUNT_MISMATCH\\0"
1365            "PSK_IDENTITY_NOT_FOUND\\0"
1366            "PSK_NO_CLIENT_CB\\0"
1367            "PSK_NO_SERVER_CB\\0"
1368            "READ_TIMEOUT_EXPIRED\\0"
1369            "RECORD_LENGTH_MISMATCH\\0"
1370            "RECORD_TOO_LARGE\\0"
1371            "RENEGOTIATION_EMS_MISMATCH\\0"
1372            "RENEGOTIATION_ENCODING_ERR\\0"
1373            "RENEGOTIATION_MISMATCH\\0"
1374            "REQUIRED_CIPHER_MISSING\\0"
1375            "RESUMED_EMS_SESSION_WITHOUT_EMS_EXTENSION\\0"
1376            "RESUMED_NON_EMS_SESSION_WITH_EMS_EXTENSION\\0"
1377            "SCSV_RECEIVED_WHEN_RENEGOTIATING\\0"
1378            "SERVERHELLO_TLSEXT\\0"
1379            "SERVER_CERT_CHANGED\\0"
1380            "SESSION_ID_CONTEXT_UNINITIALIZED\\0"
1381            "SESSION_MAY_NOT_BE_CREATED\\0"
1382            "SHUTDOWN_WHILE_IN_INIT\\0"
1383            "SIGNATURE_ALGORITHMS_EXTENSION_SENT_BY_SERVER\\0"
1384            "SRTP_COULD_NOT_ALLOCATE_PROFILES\\0"
1385            "SRTP_UNKNOWN_PROTECTION_PROFILE\\0"
1386            "SSL3_EXT_INVALID_SERVERNAME\\0"
1387            "SSLV3_ALERT_BAD_CERTIFICATE\\0"
1388            "SSLV3_ALERT_BAD_RECORD_MAC\\0"
1389            "SSLV3_ALERT_CERTIFICATE_EXPIRED\\0"
1390            "SSLV3_ALERT_CERTIFICATE_REVOKED\\0"
1391            "SSLV3_ALERT_CERTIFICATE_UNKNOWN\\0"
1392            "SSLV3_ALERT_CLOSE_NOTIFY\\0"
1393            "SSLV3_ALERT_DECOMPRESSION_FAILURE\\0"
1394            "SSLV3_ALERT_HANDSHAKE_FAILURE\\0"
1395            "SSLV3_ALERT_ILLEGAL_PARAMETER\\0"
1396            "SSLV3_ALERT_NO_CERTIFICATE\\0"
1397            "SSLV3_ALERT_UNEXPECTED_MESSAGE\\0"
1398            "SSLV3_ALERT_UNSUPPORTED_CERTIFICATE\\0"
1399            "SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION\\0"
1400            "SSL_HANDSHAKE_FAILURE\\0"
1401            "SSL_SESSION_ID_CONTEXT_TOO_LONG\\0"
1402            "TICKET_ENCRYPTION_FAILED\\0"
1403            "TLSV1_ALERT_ACCESS_DENIED\\0"
1404            "TLSV1_ALERT_DECODE_ERROR\\0"
1405            "TLSV1_ALERT_DECRYPTION_FAILED\\0"
1406            "TLSV1_ALERT_DECRYPT_ERROR\\0"
1407            "TLSV1_ALERT_EXPORT_RESTRICTION\\0"
1408            "TLSV1_ALERT_INAPPROPRIATE_FALLBACK\\0"
1409            "TLSV1_ALERT_INSUFFICIENT_SECURITY\\0"
1410            "TLSV1_ALERT_INTERNAL_ERROR\\0"
1411            "TLSV1_ALERT_NO_RENEGOTIATION\\0"
1412            "TLSV1_ALERT_PROTOCOL_VERSION\\0"
1413            "TLSV1_ALERT_RECORD_OVERFLOW\\0"
1414            "TLSV1_ALERT_UNKNOWN_CA\\0"
1415            "TLSV1_ALERT_USER_CANCELLED\\0"
1416            "TLSV1_BAD_CERTIFICATE_HASH_VALUE\\0"
1417            "TLSV1_BAD_CERTIFICATE_STATUS_RESPONSE\\0"
1418            "TLSV1_CERTIFICATE_REQUIRED\\0"
1419            "TLSV1_CERTIFICATE_UNOBTAINABLE\\0"
1420            "TLSV1_UNKNOWN_PSK_IDENTITY\\0"
1421            "TLSV1_UNRECOGNIZED_NAME\\0"
1422            "TLSV1_UNSUPPORTED_EXTENSION\\0"
1423            "TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST\\0"
1424            "TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG\\0"
1425            "TOO_MANY_EMPTY_FRAGMENTS\\0"
1426            "TOO_MANY_KEY_UPDATES\\0"
1427            "TOO_MANY_WARNING_ALERTS\\0"
1428            "TOO_MUCH_READ_EARLY_DATA\\0"
1429            "TOO_MUCH_SKIPPED_EARLY_DATA\\0"
1430            "UNABLE_TO_FIND_ECDH_PARAMETERS\\0"
1431            "UNEXPECTED_EXTENSION\\0"
1432            "UNEXPECTED_EXTENSION_ON_EARLY_DATA\\0"
1433            "UNEXPECTED_MESSAGE\\0"
1434            "UNEXPECTED_OPERATOR_IN_GROUP\\0"
1435            "UNEXPECTED_RECORD\\0"
1436            "UNKNOWN_ALERT_TYPE\\0"
1437            "UNKNOWN_CERTIFICATE_TYPE\\0"
1438            "UNKNOWN_CIPHER_RETURNED\\0"
1439            "UNKNOWN_CIPHER_TYPE\\0"
1440            "UNKNOWN_KEY_EXCHANGE_TYPE\\0"
1441            "UNKNOWN_PROTOCOL\\0"
1442            "UNKNOWN_SSL_VERSION\\0"
1443            "UNKNOWN_STATE\\0"
1444            "UNSAFE_LEGACY_RENEGOTIATION_DISABLED\\0"
1445            "UNSUPPORTED_COMPRESSION_ALGORITHM\\0"
1446            "UNSUPPORTED_ELLIPTIC_CURVE\\0"
1447            "UNSUPPORTED_PROTOCOL\\0"
1448            "UNSUPPORTED_PROTOCOL_FOR_CUSTOM_KEY\\0"
1449            "WRONG_CERTIFICATE_TYPE\\0"
1450            "WRONG_CIPHER_RETURNED\\0"
1451            "WRONG_CURVE\\0"
1452            "WRONG_MESSAGE_TYPE\\0"
1453            "WRONG_SIGNATURE_TYPE\\0"
1454            "WRONG_SSL_VERSION\\0"
1455            "WRONG_VERSION_NUMBER\\0"
1456            "WRONG_VERSION_ON_EARLY_DATA\\0"
1457            "X509_LIB\\0"
1458            "X509_VERIFICATION_SETUP_PROBLEMS\\0"
1459            "AKID_MISMATCH\\0"
1460            "BAD_X509_FILETYPE\\0"
1461            "BASE64_DECODE_ERROR\\0"
1462            "CANT_CHECK_DH_KEY\\0"
1463            "CERT_ALREADY_IN_HASH_TABLE\\0"
1464            "CRL_ALREADY_DELTA\\0"
1465            "CRL_VERIFY_FAILURE\\0"
1466            "IDP_MISMATCH\\0"
1467            "INVALID_DIRECTORY\\0"
1468            "INVALID_FIELD_NAME\\0"
1469            "INVALID_PARAMETER\\0"
1470            "INVALID_PSS_PARAMETERS\\0"
1471            "INVALID_TRUST\\0"
1472            "ISSUER_MISMATCH\\0"
1473            "KEY_TYPE_MISMATCH\\0"
1474            "KEY_VALUES_MISMATCH\\0"
1475            "LOADING_CERT_DIR\\0"
1476            "LOADING_DEFAULTS\\0"
1477            "NAME_TOO_LONG\\0"
1478            "NEWER_CRL_NOT_NEWER\\0"
1479            "NO_CERT_SET_FOR_US_TO_VERIFY\\0"
1480            "NO_CRL_NUMBER\\0"
1481            "PUBLIC_KEY_DECODE_ERROR\\0"
1482            "PUBLIC_KEY_ENCODE_ERROR\\0"
1483            "SHOULD_RETRY\\0"
1484            "UNKNOWN_KEY_TYPE\\0"
1485            "UNKNOWN_PURPOSE_ID\\0"
1486            "UNKNOWN_TRUST_ID\\0"
1487            "WRONG_LOOKUP_TYPE\\0"
1488            "BAD_IP_ADDRESS\\0"
1489            "BAD_OBJECT\\0"
1490            "BN_DEC2BN_ERROR\\0"
1491            "BN_TO_ASN1_INTEGER_ERROR\\0"
1492            "CANNOT_FIND_FREE_FUNCTION\\0"
1493            "DIRNAME_ERROR\\0"
1494            "DISTPOINT_ALREADY_SET\\0"
1495            "DUPLICATE_ZONE_ID\\0"
1496            "ERROR_CONVERTING_ZONE\\0"
1497            "ERROR_CREATING_EXTENSION\\0"
1498            "ERROR_IN_EXTENSION\\0"
1499            "EXPECTED_A_SECTION_NAME\\0"
1500            "EXTENSION_EXISTS\\0"
1501            "EXTENSION_NAME_ERROR\\0"
1502            "EXTENSION_NOT_FOUND\\0"
1503            "EXTENSION_SETTING_NOT_SUPPORTED\\0"
1504            "EXTENSION_VALUE_ERROR\\0"
1505            "ILLEGAL_EMPTY_EXTENSION\\0"
1506            "ILLEGAL_HEX_DIGIT\\0"
1507            "INCORRECT_POLICY_SYNTAX_TAG\\0"
1508            "INVALID_BOOLEAN_STRING\\0"
1509            "INVALID_EXTENSION_STRING\\0"
1510            "INVALID_MULTIPLE_RDNS\\0"
1511            "INVALID_NAME\\0"
1512            "INVALID_NULL_ARGUMENT\\0"
1513            "INVALID_NULL_NAME\\0"
1514            "INVALID_NULL_VALUE\\0"
1515            "INVALID_NUMBERS\\0"
1516            "INVALID_OBJECT_IDENTIFIER\\0"
1517            "INVALID_OPTION\\0"
1518            "INVALID_POLICY_IDENTIFIER\\0"
1519            "INVALID_PROXY_POLICY_SETTING\\0"
1520            "INVALID_PURPOSE\\0"
1521            "INVALID_SECTION\\0"
1522            "INVALID_SYNTAX\\0"
1523            "ISSUER_DECODE_ERROR\\0"
1524            "NEED_ORGANIZATION_AND_NUMBERS\\0"
1525            "NO_CONFIG_DATABASE\\0"
1526            "NO_ISSUER_CERTIFICATE\\0"
1527            "NO_ISSUER_DETAILS\\0"
1528            "NO_POLICY_IDENTIFIER\\0"
1529            "NO_PROXY_CERT_POLICY_LANGUAGE_DEFINED\\0"
1530            "NO_PUBLIC_KEY\\0"
1531            "NO_SUBJECT_DETAILS\\0"
1532            "ODD_NUMBER_OF_DIGITS\\0"
1533            "OPERATION_NOT_DEFINED\\0"
1534            "OTHERNAME_ERROR\\0"
1535            "POLICY_LANGUAGE_ALREADY_DEFINED\\0"
1536            "POLICY_PATH_LENGTH\\0"
1537            "POLICY_PATH_LENGTH_ALREADY_DEFINED\\0"
1538            "POLICY_WHEN_PROXY_LANGUAGE_REQUIRES_NO_POLICY\\0"
1539            "SECTION_NOT_FOUND\\0"
1540            "UNABLE_TO_GET_ISSUER_DETAILS\\0"
1541            "UNABLE_TO_GET_ISSUER_KEYID\\0"
1542            "UNKNOWN_BIT_STRING_ARGUMENT\\0"
1543            "UNKNOWN_EXTENSION\\0"
1544            "UNKNOWN_EXTENSION_NAME\\0"
1545            "UNKNOWN_OPTION\\0"
1546            "UNSUPPORTED_OPTION\\0"
1547            "USER_TOO_LONG\\0"
1548            "";
1549      EOF
1550
1551      sed -i'.back' '/^#define \\([A-Za-z0-9_]*\\) \\1/d' include/openssl/ssl.h
1552      sed -i'.back' 'N;/^#define \\([A-Za-z0-9_]*\\) *\\\\\\n *\\1/d' include/openssl/ssl.h
1553      sed -i'.back' 's/#ifndef md5_block_data_order/#ifndef GRPC_SHADOW_md5_block_data_order/g' crypto/fipsmodule/md5/md5.c
1554    END_OF_COMMAND
1555
1556    # Redefine symbols to avoid conflict when the same app also depends on OpenSSL. The list of
1557    # symbols are src/objective-c/grpc_shadow_boringssl_symbol_list.
1558    # This is the last part of this file.
1559    s.prefix_header_contents =
1560      ${expand_symbol_list(settings.grpc_shadow_boringssl_symbols)}
1561  end
1562